Особенности запроса переменных FLOAT
Чтение архива контроллера FloBoss 107
Для обмена по MODBUS RTU, MODBUS TCP/IP контроллеры ROC 827 и FloBoss 107 предварительно конфигурируются с помощью утилиты ROCLINK 800 в соответствии с документацией на устройства.
В качестве шаблонов каналов обмена с контроллерами используются следующие шаблоны группы Источники/Приемники/MODBUS: W_SingleCoil(5), Rin_Byte(2), Rin_Float(4), W_Float(16) и R_FIFO_Queue (см. Подтипы 9 и 100 ). R_FIFO_Queue, привязанный к каналу CALL.ChGroupReq, обеспечивает чтение архива контроллера.
В ИС указанные шаблоны конфигурируются в редакторе (см. Обмен по MODBUS ). Значение атрибута Канал (номер переменной в формате HEX) должно соответствовать номеру регистра, указанному в столбце Start Register таблицы регистров контроллера (для групповых запросов указывается номер регистра первой переменной).
Для обмена по MODBUS RTU в узле необходимо создать и настроить компонент COM-порт (в соответствии с настройками используемого COM-порта контроллера).
Для обмена по MODBUS TCP/IP для узла необходимо сконфигурировать файл IP_modBus (см. Обмен по протоколу MODBUS TCP/IP ).
Особенности запроса переменных FLOAT
В контроллерах EMERSON под переменную FLOAT выделяется 1 регистр, поэтому для MODBUS-запроса одной переменной FLOAT в качестве количества запрашиваемых слов необходимо указывать не 2 слова (что соответствует стандартному протоколу MODBUS), а одно. Для этого в файле *.cnf узла должен быть задан соответствующий ключ:
MDB_FLAG=1 – задает количество запрашиваемых слов переменной FLOAT равным 1 при обмене по MODBUS TCP/IP;
MDB_FLAG=2N – задает количество запрашиваемых слов переменной FLOAT равным 1 при обмене по MODBUS RTU через COM-порт с номером N.
При конфигурировании контроллеров с помощью утилиты ROCLINK 800 необходимо обратить внимание на настройку порядка следования байтов, который устанавливается отдельно для каждого порта контроллера. Соответствующий порядок следования байтов должен быть задан в файле *.cnf узла TRACE MODE (файл modbus.set в данном случае не используется):
MDB_FLOATCNV=101 – этот ключ разрешает задание порядка следования байтов отдельно для каждого устройства (с помощью ключей MDB_AFCNV<nn>);
MDB_AFCNV<nn>=<M, DEC> – порядок следования байтов для устройства с адресом nn. Число M вычисляется следующим образом (BO – номер порядка следования байтов, см. Обмен по MODBUS ):
для переменных FLOAT BO записывается в полубайт 0xF;
для переменных LONG (8 байтов) BO записывается в полубайт 0xF0;
для переменных даты и времени (для чтения архива) BO записывается в полубайт 0xF0 и устанавливается бит 12 (0x1000).
Примеры ключа MDB_AFCNV<nn>
MDB_AFCNV02=4096 – для устройства с адресом 2 при Byte Order = Most Significant Byte First с реализованным в проекте чтением архива (4096 = 0*1+0*16+4096).
MDB_AFCNV15=4114 – для устройства с адресом 15 при Byte Order = Least Significant Byte First с реализованным в проекте чтением архива (4114=1*1+1*16+4096).
Чтение архива контроллера FloBoss 107
Для запроса архива используется MODBUS-функция с номером 3. В данных ответа содержатся времена, даты и значения архивируемых переменных. Все переменные ответа имеют формат FLOAT, в файле *.cnf задается ключ MDB_AFCNV02=4096.
Для запроса архива переменная R_FIFO_Queue привязывается к каналу CALL.ChGroupReq типа INPUT с атрибутом Параметр=2.
Канал посылает в контроллер команду MODBUS, сформированную по следующим правилам:
адрес соответствует адресу, заданному в источнике;
arg0 задает номер функции (3);
номер переменной соответствует заданному в источнике (2-байтовое целое);
arg1 задает номер запрашиваемой строки архива.
Дата и время строки архива записывается в arg2.
Значения параметров, заданных при конфигурировании FloBoss 107 на вкладке History Setup утилиты ROCLINK 800, записываются в последующие аргументы.