PDA

Просмотр полной версии : ПЛК 160 [М02] Проблема с Modbus



Amidamaru
06.08.2022, 11:05
Добрый день,
Имеется контоллер ПЛК160 [М02] (Master) на который необходимо зачитать со стороннего устройства по Modbud 4 регистра начиная с 1000 адреса. Стандартным способом через PLC Configaration я этого сделать не могу, ттак как там нет выбора количества регистров по этому используется библиотека Modbus. Код полностью скопирован с примера в описании.
Первый непонятный момент это номер порта
Везде в описаниях написано что COM0 это RS485-1, но данный номер нельзя выставить, так как значение 0 недопустимо для номера порта. Используя COM1 инициализация порта проходит, но выдаётся ошибка по таймауту. Связь с прибором точно есть и соединение верное, так же все параметры обмена тоже проверены и верны. В качестве эксперимента добавил через PLC Configurator Modbus Master и зачитал другой одиночный регистр, проблем не возникло.
В чем тут может быть ошибка?

Евгений Кислов
06.08.2022, 11:27
Добрый день.


данный номер нельзя выставить, так как значение 0 недопустимо для номера порта

Допустимо. Не обращайте внимание на то, что CODESYS ругается на это и подсвечивает красным.

Amidamaru
06.08.2022, 11:45
Capzap, String я зачитывал, но потом не смог его распарсить. Каким образом можно перевести String в число по коду символов строки?

Amidamaru
06.08.2022, 18:15
В о чем зачитался я и через библиотеку, поставив просто 0, как подсказал Евгений и зачитался через стринг через Configurator. Но теперь другая проблема. Первые два устройства (однотипные) зачитываются через код нормально, как только добавляю третье, другого типа, с него не читает, пишет ошибка 255, как я понимаю обрыв. Хотя с ModbusPoll всё читается без проблем. Через конфигуратор также добавил всё оборудование, но зачитывается оно с периодическими ошибками (ошибка 81) . Если добавляю чисто одно устройство, то читается без проблем, добавляю втрое, начинаются периодические ошибки. Какие ещё могут быть подводные камни?

kondor3000
06.08.2022, 18:51
В о чем зачитался я и через библиотеку, поставив просто 0, как подсказал Евгений и зачитался через стринг через Configurator. Но теперь другая проблема. Первые два устройства (однотипные) зачитываются через код нормально, как только добавляю третье, другого типа, с него не читает, пишет ошибка 255, как я понимаю обрыв. Хотя с ModbusPoll всё читается без проблем. Через конфигуратор также добавил всё оборудование, но зачитывается оно с периодическими ошибками (ошибка 81) . Если добавляю чисто одно устройство, то читается без проблем, добавляю втрое, начинаются периодические ошибки. Какие ещё могут быть подводные камни?

Вот тут смотрели, как Стрингами читать, писать по 40 переменных WORD (по 20 Float) разом? Через конфигурацию. https://owen.ru/forum/showthread.php?t=22915&page=39&p=244022&viewfull=1#post244022
По поводу ошибок при добавлении устройств выкладывайте скрины настроек или проект (часть проекта) с конфигурацией. Ошибка 81, нет связи с устройством, скорее всего ошибки в настройке или маленький Тайм аут.
По поводу устройства другого типа, надо писать чем отличается, от первых устройств.
Например на один порт нельзя повесить устройства с разной скоростью, чётностью.

Amidamaru
06.08.2022, 19:23
kondor, про устройства - пара интеллектуальных задвижек и пара вычислителей расхода. Задвижки читаются отлично, а вот с вычислителями проблема. Везде настройка портов одна та же, 9600, 8 бит, 1 стоповый, проверки чётности нет. Даже когда 2 вычислителя сразу добавляешь без задвижек, начинает любить мозг. Через библиотеку предпочтительней зачитаться мне, потому что в случае ошибки связи я могу обнулять данные, в через конфигуратор как это сделать я пока не в курсе, если только анализировать адрес и ошибку из Modbus Master.

melky
07.08.2022, 08:44
Amidamaru возможно расходомерам требуется время на осознание запроса. Кроме таймаута еще паузы между запросами пробовать.