Сергей Сисейкин это какой-то треш, ну уже признали бы, что формат IEEE754 в сети вы не поддерживаете в ТЛ. А то выглядит все вышесказанное как отмазка.
Сергей Сисейкин это какой-то треш, ну уже признали бы, что формат IEEE754 в сети вы не поддерживаете в ТЛ. А то выглядит все вышесказанное как отмазка.
Карта адресов в ПЛК:
карта в плк.png
адреса переменных 2, 4 и 6. Будем в них записывать значения и читать.
в opc сервере Owen добавляем 6 тэгов, три для чтения, три для записи.
Начну с записи Float:
опс запись.png
использовать нужно настройки как на скриншоте.
для чтения Float нужно умножать адрес переменной на "2". (отрыл старую доку, в конце приложу описание)
настройка чтения в OPC.png
запись и чтение Float работает
опрос в ОПС.png
Modbus TCP slave в исполнительной системе EnLogic.
Протокол MODBUS TCP обеспечивает обмен между устройствами в сети Ethernet, используя модель клиент-сервер (master-slave) со стеком протоколов TCP/IP, где ИС EnLogic выступает в роли сервера (EnLogic также может быть и клиентом, но этот вопрос не рассматривается в данном документе).
В ИС EnLogic поддержаны три функции Modbus TCP slave:
0x03 - Read Holding Registers
Внутри ИС каждый параметр EnLogic имеет размер 4 байта (2 регистра Modbus). При подготовке ответа на запрос мастера значение параметра "ужимается" до одного регистра (2 байта), т.е. вполне может произойти переполнение. В этом случае вместо значения передаётся 0xFFFF. Полноразмерное значение параметра можно получить, используя функцию 0x04.
Все значения в ответе передаются как short int (от -32767 до 32767), параметры типа Integer передаются без изменений, параметры типа Float умножаются на заданный множитель и обрезаются до целого числа, параметры типа Boolean передаются как 1 (true) или 0 (false). В регистрах, соответствующих несуществующим в конфигурации контроллера параметрам (а также параметрам вне разрешённого диапазона) и в регистрах, соответствующих недостоверным параметрам (с плохим качеством), передаются 0xFFFF.
В данном запросе адреса Modbus соответствуют МЭК-адресам параметров в конфигурации ИС EnLogic.
Если адреса запрошенных параметров не попадают в допустимый диапазон, то возвращается исключение Modbus с кодом 2.
0x04 - Read Input Registers
В ответ на этот запрос отправляются значения параметров «как есть», без дополнительной обработки, при этом каждый параметр передаётся в двух регистрах Modbus. Адреса Modbus в данном запросе должны представлять собой МЭК-адреса параметров в конфигурации EnLogic, умноженные на 2. Например, для запроса трёх параметров, начиная с МЭК-адреса 21, запрос должен быть на шесть регистров, начиная с адреса 42.
В ответ в регистрах, соответствующих несуществующим в конфигурации контроллера параметрам (а также параметрам вне разрешённого диапазона) и в регистрах, соответствующих недостоверным параметрам (с плохим качеством), передаются 0xFFFFFFFF. Целочисленные параметры передаются как INT32, параметры с плавающей запятой – как FLOAT32, дискретные значения передаются следующим образом: TRUE - как 0x00000001, FALSE – как 0x00000000.
Если адреса запрошенных параметров не попадают в допустимый диапазон, то возвращается исключение Modbus с кодом 2.
0x06 - Write Single Register
В данном запросе адрес Modbus должен соответствовать МЭК-адресу параметра в конфигурации ИС EnLogic, а само значение параметра должно быть передано в формате short int (от -32767 до 32767), при этом для записи параметров типа Float его значение должно быть умножено на заданный множитель и обрезано до целого числа.
Если адрес выходит за пределы разрешённого диапазона или отсутствует в конфигурации EnLogic, то возвращается исключение Modbus с кодом 2.
Настройки задачи Modbus TCP slave
Настройки задачи Modbus TCP slave и её текущее состояние отображаются в ФБ ModbusTcpSlave:
123.png
Настройки по-умолчанию следующие: Порт = 502, Максимум соединений = 5, Начальный адрес = 1, Конечный адрес = 32767, Множитель = 100.