PDA

Просмотр полной версии : Формирование запроса по MODBUS ASCII



fizhimik
17.07.2019, 12:49
Добрый день. Необходимо сформировать запрос по протоколу MODBUS ASCII. В данном вопросе я совсем новичок и поэтому прошу помощи. Имеется мануал по устройству. Запрос буду пробовать отправлять через TRACE MODE используя видео "Драйвер Modbus ASCII для SCADA без программирования".
Не понимаю как продолжить запрос " : 01 17 Данные Контроль ошибок Конец "
Мануал в это теме https://owen.ru/forum/showthread.php?t=31551

melky
17.07.2019, 14:42
Проверил на RapidScada отправку Modbus ASCII

Отправка (17): :110300000001EB<0D><0A> - как видите первый символ : то есть 3A

Так что разбирайтесь как в Trace Mode формировать запросы и т.д.

fizhimik
17.07.2019, 15:12
Спасибо за ответ. На RapidScada можно осуществлять отправку Modbus ASCII? Я немного разобрался, в самом мануале написан пример изменения параметра температуры, попробую его повторить используя канал CALL.Vector TRACE MODE как на видео, как бы других вариантов я не нашел. Однако придется ли заново каждый раз считать Error Check (LRC) при изменении задаваемого параметра?

melky
17.07.2019, 15:22
Ну вообще-то расчет LRC для ASCII или CRC для RTU режима должен считать драйвер Modbus в Trace Mode. вам главное указать что это ASCII и где-то в программе указать какие и сколько регистров вы читаете ну и как-то их описать в настройках...

Так должны все работать и драйвера и OPC сервера... ручками считать не должно там...

fizhimik
17.07.2019, 15:39
Спасибо! Буду пробовать.

fizhimik
17.07.2019, 17:13
Что то не вышло ничего.
Пробовал повторить команду в мануале по прибору (пункт 4.7) - переписал в запрос значения из таблицы и сделал как на видео https://www.youtube.com/watch?v=y7SBbonEx7o, но только с отправкой данных и без чтения (убрал все кроме пользовательского драйвера и СОМ порта), в поле дополнительно написал SENDCMD=:011700000001000B00020400C800010D; BYTESREAD=0;CRLF;ASCII;
Про BYTESREAD=0 взял из этой ветки http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/43/t/000125.html
Чяднт??

fizhimik
17.07.2019, 17:36
Отбой. Я тут что то "наварьировал" с инпутом и оутпутом, то ли с адресом, короче заработало. Дальше буду копаться и улучшать

fizhimik
18.07.2019, 13:53
Теперь возник вопрос. Используя это видео https://www.youtube.com/watch?v=y7SBbonEx7o я научился запускать прибор и задавать фиксированное значение (прописанное в команде) параметра на приборе, однако параметр необходимо будет менять и каждый раз вручную вставлять новую команду SENDCMD, да еще и рассчитывать Longitudinal Redundancy Check считаю не оптимальным вариантом. Можно ли этот момент автоматизировать?

melky
18.07.2019, 14:09
Вот блин клинтон.... Вы обязаны работать с Trace Mode ? другие системы не рассматриваются ?
Если так, то Trace Mode поддерживает работу с OPC серверами. Тогда ищите OPC сервер с поддержкой Modbus ASCII, он вам сам будет считать LRC

https://insat.ru/prices/info.php?pid=6944 собственно указана поддержка ASCII, 32 точки бесплатно.
Круг2000 - поддержка ASCII бесплатно 30 тегов.

Далеко не ходя https://owen.ru/product/new_opc_server - поддержка ASCII

https://owen.ru/product/modbus_opc_dde_server

fizhimik
18.07.2019, 14:24
К сожалению я не силен в данной тематике и в инете нашел инфу только по Trace Mode. Был бы пример как это реализуется у ИнСат-а, я бы сделал по аналогии
По сути здесь задавали тот же вопрос https://owen.ru/forum/showthread.php?t=22049. Однако пробежав глазами документацию понял что не потяну данный вариант
И как бы в видео Trace Mode говориться о простоте и легкости решения задачи, однако там задача считывания, а у меня получается записи

melky
18.07.2019, 15:07
В видео говорится о том, что для чтения и возможно записи по Modbus ASCII если речь идет об одной-двух переменных не обязательно использовать OPC сервер. Если надо больше автоматизации, то уже требуется использование.

Если вы уже в Trace Mode поднаторели, то можете использовать ее дальше.
Если нет, попробуйте RapidScada, там встроенный драйвер Modbus, работает без всяких OPC сервером. При чем бесплатный.

Правда реальных приборов с Modbus ASCII я не использовал, как то предпочитаю RTU варианты.

fizhimik
18.07.2019, 15:31
Вроде бы RTU и ASCII не сильно отличаются друг от друга. Или я ошибаюсь? Как бы вы реализовали эту задачу на RTU варианте?

melky
18.07.2019, 17:07
Отличаются, начальными и конечными байтами, способом расчета контрольной суммы.
з.ы. я работаю с RapidScada, как-то не задумывался как я реализую задачу, просто создаю шаблон устройства и опрашиваю его, создаю в шаблоне команды какие нужно и все это настраиваю в Scada. С другими Scada не работал, некоторые только видел, но настраивали другие. Например моя задача на объекте была выставить адреса устройств согласно проекта, подключить устройство физически к линии и дать отмашку, что я свою часть работы выполнил, потом народ удаленно заходил на действующие Scada и все уже там настраивали,.

Нужно ли мне опрашивать постоянно, или просто протестировать железку это уже не важно.