Спасибо за статью.
Вы передаёте три параметра, но используете четыре канала. Каков физический смысл канала 0? Это обязательный канал, или он добавлен "про запас"?
P.S. Ещё бы описание, как в мастерскаде работать с UART-ом. То есть, приходит пакет, мы его парсим и отдаём скаде. Я так понимаю, этим OPC сервер как раз занимается. Не поделитесь толковой ссылкой?
канал 0 обязателен без него передача работать не будет.
OPC сервер можно настроить по разному. с UART не работал, но попробовать можно, думаю получится http://www.insat.ru/prices/info.php?pid=6944 ссылка на OPC сервер Modbus Universal MasterOPC Server 32. Версия 3.1.14
MasterSCADA не имеет собственного OPC-сервера, она просто работает по протоколу OPC.
Собственно, кроме OPC она умеет только с ограниченным количеством ПЛК общаться. Другие системы зачастую сами могут общаться с оборудованием напрямую.
Да, у разработчика этой скады есть modbus OPC сервер с бесплатной версией на 32 тега. Также есть у них и другие OPC-сервера, наиболее функциональный и перспективный — Multi-Protocol MasterOPC, состоящий из основы и плагинов, которые они потихоньку пилят. Демо-версия может работать с 1 устройством.
Но вместо Modbus MasterOPC к MasterSCADA вполне могут купить Lectus, потому что он дешевле.
Для объекта 32 тега маловато, конечно. Bool-значения можно упаковывать в слова (до 32 бит), в мастерскаде есть готовые блоки для упаковки-распаковки. Но это может показаться несколько неудобным.
Спасибо за информацию.
У меня задача небольшая — отображение в красивом виде параметров лабораторного стенда. Думаю, 32 каналов мне хватит. Навскидку, что-то около 8-10 каналов получается. Но хотелось бы получать и отображать отладочную информацию с испытуемого прибора, а он общается по UART.
Электропневматический позиционер. Шайтан-машина, питающаяся от токового входа 4...20 мА, при этом содержащая регулятор положения, и управляющая пневматическим выходом с расходом под 100 л/мин. Из внешних интерфейсов может HART и UART.
Решал примерно такую же задачу, но выбрал не COM порт, а Ethernet Shield на W5100: https://www.arduino.cc/en/Main/ArduinoEthernetShield
очень удобно, поверх него так же можно гонять Modbus TCP (обычно SCADA с ним без OPC работает, напрямую), автоматически решается проблема с гальванической развязкой, удаленностью, масштабируемостью. Проверял на "перегрузки" в локальной офисной сети, где постоянный сетевой шум от 2000 компьютеров, изредка пропадали пинги, но никаких зависаний за несколько суток работы (не все ПЛК с этим справляются кстати, ICP просто зависали). В выделенной сети вообще всё хорошо работает.
Если речь о пакете modbus TCP, я его формирование "перенес" на верхний уровень, для обеспечения большей гибкости.
Например программа Lectus OPC может работать не только в режиме Modbus TCP, а в режиме Modbus over TCP. Сразу идет запрос в том виде, как он будет передан по RS232, RS485 (с контрольной суммой). Ранее запросы у меня принимала Moxa Nport server, а тут я то же самое сделал на Arduino + 2 шилда, копеечный RS485 и Ethernet Shield. Еще раньше работал с Moxa Nport server как с виртуальными портами, у них есть драйвер специальный, но удобнее оказалось работать с ними как с TCP сервером, никаких СОМ портов в системе, как-то стабильнее и логичнее. Далее запросы перенаправляются на модули ввода-вывода с интерфейсом modbus rtu.
Arduino+Modbus+MasterScada