EnglishУкраїнськаmRussian
Login/New
Topic with many replies

Вопрос о ModBus


Author Message
Written on: 14. 07. 2012 [16:05]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3747
"legend" wrote:

Но значения сначала обнуляются, а потом принимают новые значения.

Не обнуляются, а устанавливаются в недостоверность.

"legend" wrote:

Есть еще один способ, попробовать вручную отправить PDU запрос и обработать его в JAVA подпрограмме. Но это уже совсем танцы с бубном получаются. Особенно если таких параметров десяток.

Какие танцы? Там запрос с обработкой на один сигнал в три строки записывается.

"legend" wrote:

Так вот вопрос. Может быть в OpenScada предусмотрен какой-нибудь способ производить опрос регистров modbus устройства по запросу?

Он и предусмотрен, для синхронного режима доступа к данным (http://wiki.oscada.org/Doc/DAQ). Однако синхронный режим неприемлим для источников данных с большой латентностью, таких как ModBus и который работает в ассинхронном периодическом режиме.

Хотя для ассинхронного режима есть функция планирования запроса по требованию, которая, например, реализована в DAQ.DAQGate (с целью оптимизации трафика). Для ModBus ничего подобного делать я смысла не вижу да и не понятно чем периодический опрос не устроил!

Learn, learn and learn better than work, work and work.
Written on: 14. 07. 2012 [17:03]
legend
Oleg N
registered since: 13.04.2012
Posts: 63
"roman" wrote:

Не обнуляются, а устанавливаются в недостоверность.

Ну да, просто неправильно выразился...

"roman" wrote:

Какие танцы? Там запрос с обработкой на один сигнал в три строки записывается.
Он и предусмотрен, для синхронного режима доступа к данным (http://wiki.oscada.org/Doc/DAQ). Однако синхронный режим неприемлим для источников данных с большой латентностью, таких как ModBus и который работает в ассинхронном периодическом режиме.
Хотя для ассинхронного режима есть функция планирования запроса по требованию, которая, например, реализована в DAQ.DAQGate (с целью оптимизации трафика). Для ModBus ничего подобного делать я смысла не вижу да и не понятно чем периодический опрос не устроил!

На контроллере есть несколько уставок и параметров работы, которые не нужно опрашивать с определенной периодичностью. Контроллер отдает в скаду булевый сигнал о том, что изменился один из параметров и скада опрашивает эти регистры. Какой смысл постоянно гонять уставки и параметры по сети? загружая ее лишней информацией?

На этом же контроллере есть например переменные, которые опрашиваются с периодичностью 250 мс, а есть переменные, которые опрашиваются с периодичность раз в 1 час. Насколько я понял для того чтобы организовать разную периодичность опроса в DAQ.Modbus нужно создать два контроллера с одинаковыми адресами, но разным временем опроса.
Исходя из того, что программа настолько замечательно продумана и организована вопрос, а почему нельзя планирование опроса указывать в перечне атрибутов параметров контроллера?
Так например в OPC сервере KepWare период опроса задается для каждого регистра свой.

В общем, Роман, большое спасибо за подсказку, буду ковыряться дальше. Скорее всего решу проблему при помощи PDU запросов.
Written on: 14. 07. 2012 [18:35]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3747
"legend" wrote:

На контроллере есть несколько уставок и параметров работы, которые не нужно опрашивать с определенной периодичностью. Контроллер отдает в скаду булевый сигнал о том, что изменился один из параметров и скада опрашивает эти регистры. Какой смысл постоянно гонять уставки и параметры по сети? загружая ее лишней информацией?

Тут есть критерий необходимости опроса в другом регистре, а раз так то это выпадает из стандартной схемы и должно обрабатываться в шаблоне параметра для контроллера DAQ.ModBus (тип параметра "Логический").

"legend" wrote:

На этом же контроллере есть например переменные, которые опрашиваются с периодичностью 250 мс, а есть переменные, которые опрашиваются с периодичность раз в 1 час. Насколько я понял для того чтобы организовать разную периодичность опроса в DAQ.Modbus нужно создать два контроллера с одинаковыми адресами, но разным временем опроса.

Где они опрашиваются с периодичностью 250мс? Если внутри контроллера то это ещё не руководство к такому опросу самого контроллера и 1с для всех хватит за глаза.

"legend" wrote:

Исходя из того, что программа настолько замечательно продумана и организована вопрос, а почему нельзя планирование опроса указывать в перечне атрибутов параметров контроллера?
Так например в OPC сервере KepWare период опроса задается для каждого регистра свой.

Потому-что регистры, из соображений оптимизации трафика и общего времени опроса, группируются в блоки до 200 регистров. В случае отдельного опроса регистров с отдельным периодом общая производительность опроса катастрофически падает усугубляя в целом низкую производительность OPC. И об этом я вам ранее уже говорил!

"legend" wrote:

Скорее всего решу проблему при помощи PDU запросов.

Так и нужно для опроса по критерию.

Learn, learn and learn better than work, work and work.
Written on: 17. 07. 2012 [09:20]
Alexx
Александр Иванов
registered since: 16.07.2012
Posts: 64
Добрый день! Начал осваивать OPENSCADA и сразу наткнулся на проблему с опросом по модбасу некоего физического контроллера. Опрос ведется по интерфейсу 485 через адаптер USB. Не могу понять почему при добавлении регистров появляется ошибка "ОШИБКА РАЗМЕРА PDU ОТВЕТА". Добавляю один регистр вида R:200:r:var:variable получаю ответ от контроллера нормально, добавляю еще один R:201:r:var1:variable1 получаю вышеобозначенную ошибку. удаляю один из регистров, ошибка пропадает, снова добавляю ошибки нет, добавляю еще один снова появляется. Перепробовал море комбинаций, каждый раз все по разному. Мне нужно опросить 15 регистров. Что я не так делаю? С таймаутами экспериментировал-эффекта ноль. Больше 2-х регистров опросить никак не удается. Когда есть связь - в логах идет нормальный обмен, без ошибок. Из под WIN XP посредством ОРС сервера опрос идет нормально. Помогите пожалуйста!!!
Written on: 17. 07. 2012 [09:29]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3747
"Alexx" wrote:

Не могу понять почему при добавлении регистров появляется ошибка "ОШИБКА РАЗМЕРА PDU ОТВЕТА".

Что здесь в случае ошибки?
http://wiki.oscada.org/Doc/ModBus#h592-12

P.S: Нужно указывать версию OpenSCADA!
P.P.S: http://oscada.org/ua/forum/posts/chasto_zadavaemye_voprosy_faq/problemma_s_obnovleniem_atributa_parametra/

Learn, learn and learn better than work, work and work.
Written on: 17. 07. 2012 [13:06]
Alexx
Александр Иванов
registered since: 16.07.2012
Posts: 64
В ТРАНСПОРТНЫЕ ПРОТОКОЛЫ->МОДБАС->ОТЧЕТ идет опрос по последней удачной конфигурации (когда небыло ошибки) с одним или двумя регистрами.

версия OpenSCADA v0.8.0.

галочки ЗАПУСТИТЬ/ ОСТАНОВИТЬ /ВКЛЮЧИТЬ/ВЫКЛЮЧИТЬ ставил/снимал везде, где только можно...
Written on: 17. 07. 2012 [13:31]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3747
"Alexx" wrote:

В ТРАНСПОРТНЫЕ ПРОТОКОЛЫ->МОДБАС->ОТЧЕТ идет опрос по последней удачной конфигурации (когда небыло ошибки) с одним или двумя регистрами.

Ошибку в этом протоколе видно, хотя врядли? Просто скопируйте сюда последовательность запроса и ответа при двух регистрах.

Похоже контроллер некорректно отвечает на запрос группы регистров, не соответствуя стандарту ModBus!

Learn, learn and learn better than work, work and work.
Written on: 17. 07. 2012 [13:32]
legend
Oleg N
registered since: 13.04.2012
Posts: 63
"Alexx" wrote:

галочки ЗАПУСТИТЬ/ ОСТАНОВИТЬ /ВКЛЮЧИТЬ/ВЫКЛЮЧИТЬ ставил/снимал везде, где только можно...

Контроллер поддерживает групповые запросы?
Попробуйте создать два контроллера DAQ.Modbus. Первый будет отправлять R:200:r:var:variable, второй R:201:r:var1:variable1.

[This article was edited 1 times, at last 17.07.2012 at 13:33.]
Written on: 17. 07. 2012 [13:55]
Alexx
Александр Иванов
registered since: 16.07.2012
Posts: 64
Если я запрашиваю 2 регистра, то в отчете все равно идет опрос последней удачной конфигурации (то есть 1 регистра), а в атрибутах показывает ошибку.
Контроллер не поддерживает групповой запрос. Я думал, что СКАДА запрашивает регистры по одному, если нет соответствующей галки в настройках модуля сбора данных. Это не так?
Written on: 17. 07. 2012 [14:01]
legend
Oleg N
registered since: 13.04.2012
Posts: 63
"Alexx" wrote:

Если я запрашиваю 2 регистра, то в отчете все равно идет опрос последней удачной конфигурации (то есть 1 регистра), а в атрибутах показывает ошибку.
Контроллер не поддерживает групповой запрос. Я думал, что СКАДА запрашивает регистры по одному, если нет соответствующей галки в настройках модуля сбора данных. Это не так?

Так попробуйте убрать галочку "Объединять фрагменты данных" в настройках контроллера DAQ.Modbus



10504