Содержание:
Одной из распространенных задач является подключение к ПЛК Delta Electronics серии DVP-SS2 модуля ввода сигналов тензодатчиков Z-SG/Z-SGL фирмы Seneca. Опрос происходит через интерфейс связи (RS485) по протоколу Modbus ASCII/RTU.
Значение веса нетто в регистрах Z-SG представлено в формате float32. Передача данных в формате float32 не стандартизирована и каждый производитель по-разному определяет порядок приема/передачи данных. При использовании стандартной процедуры опроса, инструкции MODRD/MODRW, ПЛК определяет полученные от модуля значения некорректно. Это связанно с тем, что ПЛК размещает полученные данные в младшую часть регистра отвечающего за полученные данные, а старшая часть остается пустой. Для корректного отображения полученной информации необходимо произвести несколько операций над полученными данными.
Рассмотрим процесс обмена более подробно. На приведенной ниже программе, показан пример считывания значения веса нетто по интерфейсу связи RS485, протоколу modbus RTU. Саму программу можно разделить на три части.
0: При замыкании M1002 (при первом включении ПЛК) устанавливаются следующие настройки D1120=HC1 - скорость обмена 115200 бит/с, контроль четности - нечетный
1: D1129 = k100 время ожидания ответа по сети 100мс
2: SET D1120 - фиксация протокола коммуникации
3: SET M1143 - установка режима RTU (протокола Modbus RTU)
4: При каждом разе срабатывания реле M1013 (0,5сек выключен, 0,5 сек включен) выполняется инструкция чтения по modbus – MODRD.
K1 – адрес устройства 1,
H3F — начальный регистр с адресом 0х3F (hex)
Согласно РЭ прибора Z-SG значение веса нетто хранятся в двух регистрах с адресом 0х3F (старшее слово) и 0х40 (младшее слово) в формате Float32 (число с плавающей запятой)
К2 — читать два регистра
5: SET M1122 – отправить запрос по интерфейсу связи
6: Включение реле М1127 - завершение приема данных. Копирование данных из буфера приема инструкцией BMOV. Копирование четырех (K4) регистров начиная с регистра D1073 – начальный регистр хранения принятых данных при обмене в режиме RTU, в D10 - регистр общего назначения. Соответственно «занятыми регистрами» теперь стали D10, D11, D12 и D13.
7: RST M1127 – завершение процедуры обмена по интерфейсу.
Далее, т. к. каждый байт принятых от Z-SG данных занимает младшую часть регистра, то необходимо поменять местами старшую и младшую часть каждого второго регистра. После этого необходимо как-бы соединить два регистра в один, т.е провести логическое «ИЛИ» двух чисел.
SWAP D10 – перестановка местами младшего и старшего байтов в регистре D10
8: WOR – инструкция. Логической «ИЛИ» двух регистров D10 и D11 и сохранение полученного числа в регистр D15
9: SWAP D12 – перестановка местами младшего и старшего байтов в регистре D12
10: WOR – инструкция. Логической «ИЛИ» двух регистров D12 и D13 и сохранение полученного числа в регистр D14
Теперь в регистрах D14:D15 содержится значение веса нетто в формате Float 32.
Дополнительные материалы:
При добавлении товара возникла ошибка. Пожалуйста, повторите попытку чуть позже.