УкраїнськаEnglishmRussian
Вхід/Новий
У темі багато повідомлень

Вопрос о ModBus


Автор Повідомлення
Повідомлення створено: 13. 01. 2011 [12:32]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
Лог протокола ModBus изучайте.

Learn, learn and learn better than work, work and work.
Повідомлення створено: 13. 01. 2011 [13:12]
yozhik
Алексей Николаев
Зареєстрован(а) с: 29.11.2010
Повідомлення: 127
В логах в момент пропадания связи только это:
Thu Jan 13 14:10:43 2011 TCP: 'ctrlAVSN_T2' --> 1(Sockets.socketAVSN_T1)
REQ ->
ERR -> 14:Device error: Connect to Internet socket error: Operation now in progress!
Повідомлення створено: 13. 01. 2011 [14:11]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
Значит Вы сами и шлёте пустые запросы.

Learn, learn and learn better than work, work and work.
Повідомлення створено: 13. 01. 2011 [14:28]
yozhik
Алексей Николаев
Зареєстрован(а) с: 29.11.2010
Повідомлення: 127
А параметр
reqTm - время запроса, а именно время, в течение которого ожидать ответа
задается в каких единицах? В секундах или мс?
Повідомлення створено: 13. 01. 2011 [15:19]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
"yozhik" wrote:

А параметр
reqTm - время запроса, а именно время, в течение которого ожидать ответа
задается в каких единицах? В секундах или мс?

В миллисекундах. Его можно вообще не указывать, тогда время будет взято из таймингов транспорта.

Learn, learn and learn better than work, work and work.
Повідомлення створено: 13. 01. 2011 [15:51]
yozhik
Алексей Николаев
Зареєстрован(а) с: 29.11.2010
Повідомлення: 127
В общем проблема решилась установлением значений >10 в reqTm. Уже пару часов работает без единого сбоя. Спасибо.
Повідомлення створено: 14. 04. 2011 [10:37]
yozhik
Алексей Николаев
Зареєстрован(а) с: 29.11.2010
Повідомлення: 127
Есть устройство, с которого идет чтение данных по Modbus TCP:
R_b0:0x0813:r:on0:state0
R_b1:0x0813:r:on1:state1
R_b2:0x0813:r:on2:state2
R_b3:0x0813:r:on3:state3
R_b4:0x0813:r:on4:state4
R:0x0813:r:on_byte:state_byte

При отключении данного устройства, однако, наблюдаются следующуе значения переменных:
state0: On
state1: Off
state2: Off
state3: Off
state4: Off
state_byte: <EVAL>

То что в младшем бите 1 это так и задумано или глюк? Эта особенность очень портит жизнь в паре мест в проекте. Если бы значение битов было <EVAL> - было бы вообще хорошо.
Повідомлення створено: 14. 04. 2011 [11:29]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
"yozhik" wrote:

То что в младшем бите 1 это так и задумано или глюк? Эта особенность очень портит жизнь в паре мест в проекте. Если бы значение битов было <EVAL> - было бы вообще хорошо.

Исправлено

Learn, learn and learn better than work, work and work.
Повідомлення створено: 29. 04. 2011 [07:14]
Andry
Андрей Смирнов
Зареєстрован(а) с: 30.12.2010
Повідомлення: 2
DAQ.ModBus

При создании тестового проекта на OpenSCADA столкнулся со следующей проблемой: в контроллер необходимо записывать атрибуты типа int32 и float, причём, изменение в контроллере должно производится сразу всего атрибута, что реализуется с помощью команды ModBus на запись группы регистров.
OpenSCADA для записи атрибутов использует только команду 06 (установка одного регистра), и, к тому же, команды на запись формируются только для изменившихся значений слов int32 и float.
Считаю, что для 32-х разрядных атрибутов, необходимо реализовать запись в контроллер командой установки нескольких регистров, если регистры идут подряд или близко расположены (есть же оптимизация для чтения).
Повідомлення створено: 29. 04. 2011 [08:54]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
"Andry" wrote:

OpenSCADA для записи атрибутов использует только команду 06 (установка одного регистра), и, к тому же, команды на запись формируются только для изменившихся значений слов int32 и float.

Команда 16 уже поддерживается, и, к тому же это правильно, почитайте про разницу синхронного и асинхронного режимов записи ( http://wiki.oscada.org/Doc/DAQ ).

"Andry" wrote:

Считаю, что для 32-х разрядных атрибутов, необходимо реализовать запись в контроллер командой установки нескольких регистров, если регистры идут подряд или близко расположены (есть же оптимизация для чтения).

Если Вы так считаете, то могли бы и реализовать. Это же открытый проект, а мы с радостью примем Ваши патчи и рассмотрим их.

Learn, learn and learn better than work, work and work.



2130