Tag Archives: PLC. ModBus

Передача архивных файлов по по протоколу Modbus.

Организация передачи архивных файлов по последовательному интерфейсу по протоколу Modbus (при помощи 20-ой функции ModBus)

 

1. Введение

Данная функция предназначена для чтения файлов архива во флеш памяти PLC и передачи их по шине ModBus в ответ на запросы по 20-ой функции со стороны ModBus мастера (например ПК с установленным на нем  Lectus OPC).

2. Подключение и настройка

Функция реализована как подмодуль модуля ModBus slave в конфигурации PLC и называется File,  это выглядит так:

где

— File name – имя файла из которого происходит чтение.

— Amount Byte – количество байт в одной записи (в запросе записей может быть много)

3. Форматы запросов и ответов

Информация справочная или необходимая для случая создания собственного ПО обмена, запускаемого на ПК. При использовании ПО на КП, поддерживающего работу с функцией 20 особенности обмена скрыты от пользователя.

Формат запроса:

Function Code 0x14 Byte Код функции
Byte count 0x07 Byte Кол во байт, следующих ниже
Referens Type 0x06 Byte Подфункция (в нашем случае константа =6)
Hi File number Byte Старший Байт номера требуемого файла
Lo File number Byte Соответственно младший
Hi Rec addr Byte Старший Байт адреса записи в файле
Lo Rec addr Byte Соответственно младший
Hi Rec num Byte Старший Байт количества запрашиваемых записей
Lo Rec num Byte Соответственно младший

Соответственно ответ в случае успеха ответ должен быть таким:

Function Code 0x14 Byte Код функции
Byte count 0x07 Byte Кол во байт, следующих ниже
Byte count 0x07 Byte Кол во байт, следующих ниже (необходимо по стандарту)
Referens Type 0x06 Byte Подфункция (в нашем случае константа =6)
Data Byte*Rec_num*Amount_byte Собственно данные длиной Rec num из (запрса), умноженные на длину одной записи из конфигурации.

File number – может принимать значение от 0x0000 до 0xffff

Rec number – может принимать значение от 0x0000до 0xffff

Rec addr – может принимать значение 0x0000-0xfffe

Важно! При запросе с адресом Recaddr=0xffff происходит удаление файла.

При ошибке возвращается стандартный код ошибки ModBus, то есть 0x02.

4. Работа с несколькими файлами.

Для работы с несколькими файлами архивных данных необходимо подключить в модуле Modbus Slave несколько модулей File. Так как в запросе нет возможности передать имя файла то соответствие имени файла (их может быть много) и запроса осуществляется следующим образом. Номер файла в запросе соответствует позиции файла в дереве

PLC Configurations, начиная с нуля, то есть запрос с нулевым номером файла будет читать данные из первого стоящего файла в PLC Configurations модуля, первый из второго и так далее. Если запрошен файл которого нет на диске или в конфигурации он не указан, выдается код ошибки с номером 0x04.

Примечание: Для того чтобы Lectus OPC работал с этой функцией необходимо дополнительно поместить в его рабочую директорию библиотеку ModBus.dll.