Пример связи ультразвукового расходомера Взлёт МР с Simatic S7-1200 через коммуникационный модуль связи CM1241 RS485 в режиме Точка-к-Точке в формате Modbus в среде программирования TIA Portal v14/
В данном примере инициализация CM1241 происходит при первом проходе программы по флагу FirstScan
(для реальных приложений надо использовать флаг для принудительной инициализации в любое время)
Затем надо активировать возможность CM1241 оператором "Set_Features"самому аппаратно подсчитывать контрольные суммы при передаче и приёме
то есть программист будет думать только о собственно адресах, фамилиях, явках
Данные для запроса размещены в блоке данных, который для оператора "Send_P2P" задаётся абсолютным адресом на первый байт блока данных, за которым после пробела указывается длина передаваемых полезных данных (в данном случае 6 байт)
В первом байте указывается сетевой адрес расходомера в сети RS485 (в данном случае "1")
Во втором байте задаётся номер функции Modbus
Рабочий опрос значений регистров 3***** и 4***** производится заданием значения функции:
"3" для регистров "4*****"
"4" для регистров "3*****"
дальше два байта с абсолютным номером регистра
дальше два байта с длиной запрашиваемых данных
В ответ на запрос Взлёт должен послать ответ, который CM1241 оператором "Receive_P2P" перешлёт в блок данных, который надо адресовать абсолютным адресом первого байта блока
В первом байте будет сетевой адрес отправителя
Вторым байтом будет номер функции, по которой был запрос в "Send_P2P" или будет код ошибки, если запрос был некорректным
Третьим байтом будет длина переданных расходомером данных в байтах
===================
Почему в данном случае использовал операторы Точка-к-Точке, а не специализированные операторы "Modbus_*" MB_COMM_LOAD, MB_MASTER, ?
Сначала попробовал именно ими:
+ регистры 4***** читаются
- а вот регистры 3***** не читаются
надо разбираться кто не прав и что делать... смотреть на шину логическим анализатором посылки...
==================
с этим расходомером столкнулся впервые - есть непонятности и неясности где какие данные должны лежать и в каком формате... тут селёдка была завёрнута... это не смотреть...
приходиться выяснять все варианты методом тыка и выявлять несоответствия или замалчивания в таблице регистров Список ModBus-регистров ModBus_ursv1xx.pdf
и есть расхождения по цифрам в читаемых данных из регистров и отображаемых данных на экране расходомера... по документации сопоставить соответствие экранных значений ячейкам регистров не получается...
толщина стенки 2,0 или 6,0 ?