УкраїнськаEnglishmRussian
Вход/Новый
В теме нет новых постов

Полученные данные по TCP MODBUS


Автор Сообщение
Сообщение создано: 17. 01. 2019 [12:14]
khan21
Андрей Ханжин
Создатель темы
Зарегистрирован(а) с: 17.09.2013
Сообщения: 19
Уважаемые форумчане. Подскажите, что это может быть.
Имеем:
1. ПЛК, в котором из дисктретных входов собираем слово состояния (INT) для OPENSCADA (см. СнимокIG_1).
2. OPENSCADA - читаем данные из ПЛК. Читаем/записываем дискретные сигналы из/в ПЛК, читаем слово состояния (см. СнимокOS_1, СнимокOS_1_1).
3. В OPENSCADA получаем данные (см. СнимокOS_1_2).
Всё хорошо. До перезагрузки.
Перезагрузили комп, OPENSCADA восстановила обмен, Дискретные данные читаются/записывваются без проблем, НО!
Слово состояния = 65535! (см. СнимокOS_2). Изменение битовых переменных хоть из OPENSCADA, хоть в ПЛК - нормально (пишется/читается). В ПЛК слово состояния формируется корректно.
Но в OPENSCADA - стабильные 65535.
Изменение параметров контроллера TCP_MBus (объединять фрагменты данных, использовать функции 15_16, Использовать асинхронную запись) не помогли.
Читать корректно OPENSCADA (а в ПЛК, как уже писал, данные формируются правильно) слово состояния начинает только после следующих действий:
1. Состояние параметра - отключен.
2. В разделе "Перечень аттрибутов" строке "R_u2:601:r:PU1_DI1:НА1_ДискрВх_слово1" номер регистра 601 меняем на 600 (! и только 600 !).
3. Включаем параметр (состояние - включён).
4. Отключаем параметр.
5. Меняем регистр на нужный 601.
6. Включаем параметр.
Всё снова работает. До перезагрузки компа или до перезапуска OPENSCADA.
Эта проблема у меня только с целым числом, битовые переменные читаются/записываются без проблем.
Подскажите, в чём дела вопрос? Где я что пропустил?
Вложенный файл

СнимокIG_1.PNG (Тип файла: image/png, Размер: 34.99 килобайт) — 1125 загрузок
СнимокOS_1.png (Тип файла: image/png, Размер: 198.76 килобайт) — 1115 загрузок
СнимокOS_1_1.png (Тип файла: image/png, Размер: 174.76 килобайт) — 1123 загрузок
СнимокOS_1_2.png (Тип файла: image/png, Размер: 173.02 килобайт) — 1156 загрузок
СнимокOS_2.png (Тип файла: image/png, Размер: 113.02 килобайт) — 1143 загрузок
Сообщение создано: 17. 01. 2019 [12:35]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3742
"khan21" wrote:

Подскажите, в чём дела вопрос? Где я что пропустил?

В ПЛК!
R_u2 это базовый тип регистра, который просто синоним на просто R, следовательно тут не может быть проблем комбинации.
Для того чтобы разобраться смотрите получаемые пакеты в логе обмена, которых для ModBus там аж три!
Ну и всегда, и в первую очередь, смотреть в ДемоБД, если подозреваете OpenSCADA, где есть полная цепочка из ModBus клиента, сервера и все возможные типы данных тестируются!

Learn, learn and learn better than work, work and work.
Сообщение создано: 18. 01. 2019 [08:47]
khan21
Андрей Ханжин
Создатель темы
Зарегистрирован(а) с: 17.09.2013
Сообщения: 19
Спасибо за мгновенный ответ.
Дела не в ПЛК (это железо), а в голове.
Каждый адрес в ПЛК - 32 разряда, при чём слова в адресе развёрнуты: 600-это старшее, 601-это младшее.

Ещё раз спасибо.
Сообщение создано: 18. 01. 2019 [09:07]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3742
"khan21" wrote:

Дела не в ПЛК (это железо), а в голове.

В котором софт и с которыми и не такие проблемы бывают!

"khan21" wrote:

Каждый адрес в ПЛК - 32 разряда, при чём слова в адресе развёрнуты: 600-это старшее, 601-это младшее.

Точно, что в голове если такое звучит, поскольку адрес ModBus регистров 16-разрядный и сам регистр это 16-разрядное (два байта и почему R_u2), а если речь об отдельных регистрах 600 и 601, и как следствие 32-разрядном целом (четыре байта), тогда указывать прямо "R_u4" и про что в подсказке и документации написано, как и про то каким образом меняется порядок регистров!

Learn, learn and learn better than work, work and work.
Сообщение создано: 18. 01. 2019 [18:36]
khan21
Андрей Ханжин
Создатель темы
Зарегистрирован(а) с: 17.09.2013
Сообщения: 19
Абсолютно согласен, торопился ответить и скомкал сообщение.
Конечно, регистры развёрнуты.
Так и поступил "R_u4:601,600:r:aaa:DI_DW0"
Н-да, неверно высказанная мысль приводит к....

Ещё раз спасибо.



1056