блоки ADDR и ADDM

другие контроллеры
ROGNAROG
Posts: 74
Joined: Thu Oct 10, 2013 10:09 am

блоки ADDR и ADDM

Post by ROGNAROG »

Доброго времени суток!
Все время разрабатывал приложения под процессор M340
для связи по ModBus использовал блоки ADDM но на процессоре премиум используется блок ADDR в чем отличие этих блоков?может есть у кого не будь информация об этих блоках?буду очень признателен за помощь в изучении этих блоков
pupena_san
Posts: 392
Joined: Fri Dec 18, 2009 3:02 pm
Location: Киев

Re: блоки ADDR и ADDM

Post by pupena_san »

ADDR для Premium
ADDM для M340
Отличие в том, что в М340 и Премиум отличается способ адресации. Подробно написано в хелпе в разделе что-то аля "Система адресации".
ROGNAROG
Posts: 74
Joined: Thu Oct 10, 2013 10:09 am

Re: блоки ADDR и ADDM

Post by ROGNAROG »

Облазил весь хелп не какой конкретики нет.а интересует именно различие этих блоков.как они написаны.
pupena_san
Posts: 392
Joined: Fri Dec 18, 2009 3:02 pm
Location: Киев

Re: блоки ADDR и ADDM

Post by pupena_san »

Как они написаны - Вам никто не скажет, так как для программера ПЛК, EF функция - это черный ящик.
Вы лучше скажите, что Вас нтересует в этих функциях.
А на счет хелпа - вот:
Communication Architectures ->Addressing->X-Way Addressing
Communication Architectures ->Addressing->Modicon M340 PLCs Addressing
ROGNAROG
Posts: 74
Joined: Thu Oct 10, 2013 10:09 am

Re: блоки ADDR и ADDM

Post by ROGNAROG »

меня интересует следующие.В M340 MT_MBS[1] эта переменная срабатывает при чтение.то есть достаточно считывать какой не будь адрес реестра частотника чтобы увидить включен он или выключен.а в premiume это видно только когда происходит запись.меня это не устраивает так как имеються 3 частотника на 2х из них мы записываем значение в адреса реестра и считываем с них.а на оставшимся мы только считываем.и за счет этого я не вижу включен он или нет=(((
и это нужно как то решить.вот и хотел посмотреть чем различаются блоки.
ROGNAROG
Posts: 74
Joined: Thu Oct 10, 2013 10:09 am

Re: блоки ADDR и ADDM

Post by ROGNAROG »

А так как я понял что переменная массива Mng[0].0 это бит активности который показывает обработан запрос или нет.а я бы хотел сделать так чтобы я в независимости от запросов мог определить какой частотник включен а какой нет
pupena_san
Posts: 392
Joined: Fri Dec 18, 2009 3:02 pm
Location: Киев

Re: блоки ADDR и ADDM

Post by pupena_san »

1) Никто Вам не запрещает делать чтение. Мало того, правильное управление большинством частотников предвидит сначала контроль его состояния, а потом только управление. Какой у Вас частотник? Вы можете тут почитать о управлении ПЧ используя пром сети.
2) Если Вы по каким-то причинам не хотите читать переменные (хотя я не знаю по каким), есть возможность вызова диагностических функций Modbus, если таковые поддерживаются Слейвом (Частотником), но тут уже придется попотеть.
ROGNAROG
Posts: 74
Joined: Thu Oct 10, 2013 10:09 am

Re: блоки ADDR и ADDM

Post by ROGNAROG »

Частотники разные и ATV212 и 312 и так далее.я просто хочу сделать чтобы чтение состояния работа-способности частотника проходило независимо от записи в адреса реестра частотника.и если же частотник не отвечает(выключен или сломан)чтобы запросы на него не посылались
pupena_san
Posts: 392
Joined: Fri Dec 18, 2009 3:02 pm
Location: Киев

Re: блоки ADDR и ADDM

Post by pupena_san »

1)
READ_VAR - читать
WRITE_VAR - писать
Вызвал функцию READ_VAR для частотника, если функция вернула позитивный ответ - вызываем функцию WRITE_VAR, если негативный ответ - идем дальше по карусели. Не пойму, в чем проблема и при чем тут ADDR. ADDR, если разобраться, кроме как перевода строки в массив ничего больше не делает.
2) Лучше всего для этих частотников пользоваться Modbus-функцией 23 (17HEX), но вызов этой функции через SEND_REQ связан с определенными неудобствами.
ROGNAROG
Posts: 74
Joined: Thu Oct 10, 2013 10:09 am

Re: блоки ADDR и ADDM

Post by ROGNAROG »

если я правельно понимаю то Отчет Значение Связь 16#00(Обмен успешным) в программе выглядит так Managemet_tanle[0].0.так ли это?
SE_support
Posts: 101
Joined: Thu Aug 29, 2013 4:11 pm

Re: блоки ADDR и ADDM

Post by SE_support »

Всего отчет состоит из 4х слов. В первом слове Managemet_table[0].0=0 означает успешный обмен данных. Как только Managemet_table[0].0=1, то во втором слове будут записаны значения, то которым можно опеределить в чем заключается проблема.
ROGNAROG
Posts: 74
Joined: Thu Oct 10, 2013 10:09 am

Re: блоки ADDR и ADDM

Post by ROGNAROG »

Огромное спасибо за потраченное на меня время.буду разбираться. (tyou)
pupena_san
Posts: 392
Joined: Fri Dec 18, 2009 3:02 pm
Location: Киев

Re: блоки ADDR и ADDM

Post by pupena_san »

SE_support wrote:Всего отчет состоит из 4х слов...
По-моему Вы что-то путаете. Managemet_table[0].0=0 означает, что функция обработана, не важно с позитивным или негативным результатом.
From Help
Show
Help wrote:Structure
The following table describes the structure of the data in the communication management table:
Order of the Word Most Significant Byte Least Significant Byte
Data managed by the system:
1 Exchange number/ Activity bit
2 operation report / communication report
Data managed by the user:
3 Timeout
4 Length

Activity Bit
This bit indicates the execution status of the communication function.
It is set to 1 when launched and returns to 0 when its execution is complete.
This is the first bit of the first element of the table.
Example: If the management table has been declared as follows:
Tab_Gest ARRAY [1..4] OF INT, the activity bit is the bit with the notation Tab_Gest[1].0.
NOTE: the notation previously used requires configuration of the project properties in such a way as to authorize the extraction of bits on integer types. If this is not the case Tab_Gest[1].0 cannot be accessed in this manner.

Exchange Number
When a communication function is sent, the system automatically allocates it a number, enabling the exchange to be identified.
This number can be used where necessary to stop the exchange in progress (using the CANCEL function).
SE_support
Posts: 101
Joined: Thu Aug 29, 2013 4:11 pm

Re: блоки ADDR и ADDM

Post by SE_support »

Ты прав, я немного неправильно интерпретировал. Хотя, если в третьем слове не указать timeout (что обычно и просходит), то моя интерпретация окажется правильной.
pupena_san
Posts: 392
Joined: Fri Dec 18, 2009 3:02 pm
Location: Киев

Re: блоки ADDR и ADDM

Post by pupena_san »

В этом случае функция просто будет ожидать окончания выполнения. В случае использования Modbus/TCP будет "зависание" обмена, а в случае Modbus RTU вроде как все-таки вернет ошибку. Так что ошибку надо смотреть все равно после окончания обработки, тоесть когда бит активности перейдет в 0.
ROGNAROG
Posts: 74
Joined: Thu Oct 10, 2013 10:09 am

Re: блоки ADDR и ADDM

Post by ROGNAROG »

А как избежать "зависание" обмена???Есть конечно идея создать столько же циклов сколько и частотников.и к каждому частотнику свой цикл выполнения.будет выглядит приметно так

Code: Select all

----------------------------------------------------------------
if Query_report[0]=0 and MT_MBS[0].0=0 then 
if  count <11 then  count:=count+1;
else count:=0;end_if;
end_if;
if count = 1 and not MT_MBS[0].0  then Query_report[0]:= MT_MBS[1];
READ_VAR (ADDr('0.0.0.1'),'%Mw',64769,1, MT_MBS, St_p_read);
end_if;
----------------------------------------------------------------
но тогда придется заводить еще и столько массивов модбас сколько у нас и частотников.но зато по задумки мы должны получить полную отключение цикла обмена.и тогда запросы передаваться вообще не будут.и не будет зависания