Автор |
Повідомлення |
Повідомлення створено: 16. 06. 2015 [13:24]
|
fido_max
Maxim Kochetkov
Contributor
Зареєстрован(а) с: 28.10.2010
Повідомлення: 129
|
"monia" wrote:
Можешь рассказать или кинуть ссылку на принцип передачи/сбора данных(регистров) с транспорта и передачи их в таблицу узла "Транспортный протокол.ModBus"
Вообще-то это не совсем сбор данных. Для сбора данных предназначена подсистема сбора данных. А в протоколах содержится обратная сторона. Т.е. кто/-то/что-то опрашивает OpenSCADA по протоколу ModBus.
"monia" wrote:
На рисунке, время передачи данных на сервер была 02.06.2015 08:14:23 и данные были записаны в регистры R11w-R13w, что свидетельствует запись в БД
Если перевести 2 WORD в DT (R12w, R13w) то получим время 11.06.2015 20:18:46 - скорее всего это время прихода аналоговых параметров, с другого контроллера.
Но это не возможно, по скольку на сервере стоит фаервол (см. п2). Отсюда и вывод напрашивается, что что-то в OpenSCADA не так
А в БД оно каким образом попадает? Вообще информации мало предоставлено. По двум картинкам мало что можно понять. Может оно из вашей программы портится/перетирается? Запустите wireshark и снимайте логи TCP/IP.
|
Повідомлення створено: 16. 06. 2015 [16:07]
|
monia
Олег Намятов
Автор теми
Зареєстрован(а) с: 21.05.2012
Повідомлення: 173
|
А в БД оно каким образом попадает? Вообще информации мало предоставлено. По двум картинкам мало что можно понять. Может оно из вашей программы портится/перетирается? Запустите wireshark и снимайте логи TCP/IP.
Вы правы, по двум картинкам сложно понять.
Программа на контролерах работает адекватно и передает все правильно, по крайне мере я в этом убеждаюсь в течение 2 лет.
Да согласен звучит бредово но это факт, и возможно менее 1% ошибка в библиотеках TwinCat, но пака я этого не наблюдал.
По поводу wireshark, была такая мысля, но ошибка возникает не постоянно и апериодически. Т.е. нельзя подглодать момент, когда ошибка может возникнуть. Может 1 раз в неделю в одном узле или несколько раз на дню на нескольких узлах.
чаще всего ошибка возникает раз в 2-3 недели
В БД данные попадают по изменению временной метки на логическом уровне
Подсказали бы где расположена часть кода отвечающая за передачу данных из транспорта в узлы транспортного протокола :)
|
Повідомлення створено: 16. 06. 2015 [16:18]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
|
"monia" wrote:
Подсказали бы где расположена часть кода отвечающая за передачу данных из транспорта в узлы транспортного протокола :)
http://oscada.org/websvn/filedetails.php?repname=OpenSCADA&path=%2Ftrunk%2FOpenSCADA%2Fsrc%2Fmoduls%2Fdaq%2FModBus%2Fmodbus_prt.cpp
Learn, learn and learn better than work, work and work.
|
Повідомлення створено: 19. 11. 2015 [10:44]
|
monia
Олег Намятов
Автор теми
Зареєстрован(а) с: 21.05.2012
Повідомлення: 173
|
Вроде свою проблему решил, если это можно назвать решением
Я просто во входящих транспортах уменьшил максимальное количество клиентов и длину очереди, до 1 (у меня 94 входных транспортов, ModBus)
С такими настройками станцию тестирую с 20.09.15 и по сегодняшнее время. Ошибок, из-за наложения регистров(путаница в столбце "Значение", таблицы узла "Транспортный протокол"), пока не обнаруживал. Да и в БД теперь все в порядке.
|
Повідомлення створено: 20. 11. 2015 [18:02]
|
legend
Oleg N
Зареєстрован(а) с: 13.04.2012
Повідомлення: 63
|
Подскажите пожалуйста, работает ли функция modbus 15 (0x0F) — запись значений в несколько регистров флагов (Force Multiple Coils)?
Проблема в следующем. Есть modbus контроллер. Он поддерживает функцию 15.
Пытаюсь одновременно изменить статус 8 coil регистров. Команда на изменение значений битов в DAQ.ModBus приходит из контроллера LogicLev. По какой-то причине отправка команд по протоколу modbus осуществляется последовательно. Попробовал использовать функцию 5 и 15.
Результат одинаковый:
"log" wrote:
20-11-2015 18:31:52 298984 /sub_DAQ/mod_ModBus/cntr_LightController/ 0 Запрос -> 3C 05 00 07 FF 00 39 16 Ответ -> 3C 05 00 07 FF 00 39 16
20-11-2015 18:31:52 286376 /sub_DAQ/mod_ModBus/cntr_LightController/ 0 Запрос -> 3C 05 00 06 FF 00 68 D6 Ответ -> 3C 05 00 06 FF 00 68 D6
20-11-2015 18:31:52 273747 /sub_DAQ/mod_ModBus/cntr_LightController/ 0 Запрос -> 3C 05 00 05 FF 00 98 D6 Ответ -> 3C 05 00 05 FF 00 98 D6
20-11-2015 18:31:52 261106 /sub_DAQ/mod_ModBus/cntr_LightController/ 0 Запрос -> 3C 05 00 04 FF 00 C9 16 Ответ -> 3C 05 00 04 FF 00 C9 16
20-11-2015 18:31:52 248476 /sub_DAQ/mod_ModBus/cntr_LightController/ 0 Запрос -> 3C 05 00 03 FF 00 78 D7 Ответ -> 3C 05 00 03 FF 00 78 D7
20-11-2015 18:31:52 235865 /sub_DAQ/mod_ModBus/cntr_LightController/ 0 Запрос -> 3C 05 00 02 FF 00 29 17 Ответ -> 3C 05 00 02 FF 00 29 17
20-11-2015 18:31:52 223407 /sub_DAQ/mod_ModBus/cntr_LightController/ 0 Запрос -> 3C 05 00 01 FF 00 D9 17 Ответ -> 3C 05 00 01 FF 00 D9 17
20-11-2015 18:31:52 210847 /sub_DAQ/mod_ModBus/cntr_LightController/ 0 Запрос -> 3C 05 00 00 FF 00 88 D7 Ответ -> 3C 05 00 00 FF 00 88 D7
20-11-2015 18:30:45 759053 alModBus:LightController 1 DAQ.LightController: подключение к источнику данных: НОРМА.
20-11-2015 18:30:45 758738 /sub_DAQ/mod_ModBus/cntr_LightController/ 0 Запрос -> 3C 01 00 00 00 08 39 21 Ответ -> 3C 01 01 00 5C 24
20-11-2015 18:30:45 748453 /sub_DAQ/mod_ModBus/cntr_LightController/ 1 Запуск контроллера!
20-11-2015 18:30:45 747927 /sub_DAQ/mod_ModBus/cntr_LightController/ 1 Включение контроллера!
20-11-2015 18:30:40 68918 /sub_DAQ/mod_ModBus/cntr_LightController/ 1 Отключение контроллера!
20-11-2015 18:30:40 68720 alModBus:LightController 1 DAQ.LightController: подключение к источнику данных: ОСТАНОВЛЕН.
20-11-2015 18:30:39 968349 /sub_DAQ/mod_ModBus/cntr_LightController/ 1 Останов контроллера!
20-11-2015 18:29:27 400253 /sub_DAQ/mod_ModBus/cntr_LightController/ 0 Запрос -> 3C 0F 00 07 00 01 01 01 98 1A Ответ -> 3C 0F 00 07 00 01 21 27
20-11-2015 18:29:27 387610 /sub_DAQ/mod_ModBus/cntr_LightController/ 0 Запрос -> 3C 0F 00 06 00 01 01 01 A5 DA Ответ -> 3C 0F 00 06 00 01 70 E7
20-11-2015 18:29:27 375017 /sub_DAQ/mod_ModBus/cntr_LightController/ 0 Запрос -> 3C 0F 00 05 00 01 01 01 E1 DA Ответ -> 3C 0F 00 05 00 01 80 E7
20-11-2015 18:29:27 362395 /sub_DAQ/mod_ModBus/cntr_LightController/ 0 Запрос -> 3C 0F 00 04 00 01 01 01 DC 1A Ответ -> 3C 0F 00 04 00 01 D1 27
20-11-2015 18:29:27 349701 /sub_DAQ/mod_ModBus/cntr_LightController/ 0 Запрос -> 3C 0F 00 03 00 01 01 01 69 DA Ответ -> 3C 0F 00 03 00 01 60 E6
20-11-2015 18:29:27 337240 /sub_DAQ/mod_ModBus/cntr_LightController/ 0 Запрос -> 3C 0F 00 02 00 01 01 01 54 1A Ответ -> 3C 0F 00 02 00 01 31 26
20-11-2015 18:29:27 324598 /sub_DAQ/mod_ModBus/cntr_LightController/ 0 Запрос -> 3C 0F 00 01 00 01 01 01 10 1A Ответ -> 3C 0F 00 01 00 01 C1 26
20-11-2015 18:29:27 211133 /sub_DAQ/mod_ModBus/cntr_LightController/ 0 Запрос -> 3C 0F 00 00 00 01 01 01 2D DA Ответ -> 3C 0F 00 00 00 01 90 E6
20-11-2015 18:29:25 10268 /sub_DAQ/mod_ModBus/cntr_LightController/ 0 Запрос -> 3C 0F 00 07 00 01 01 00 59 DA Ответ -> 3C 0F 00 07 00 01 21 27
20-11-2015 18:28:26 440241 alModBus:LightController 1 DAQ.LightController: подключение к источнику данных: НОРМА.
20-11-2015 18:28:26 429374 /sub_DAQ/mod_ModBus/cntr_LightController/ 1 Запуск контроллера!
Вкладений файл
mb1.PNG (Тип файлу: image/png, Розмір: 60.1 кілобайтів) — 691 завантажень
mb2.PNG (Тип файлу: image/png, Розмір: 24.46 кілобайтів) — 691 завантажень
mb3.PNG (Тип файлу: image/png, Розмір: 31.37 кілобайтів) — 668 завантажень
|
Повідомлення створено: 20. 11. 2015 [18:30]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
|
"legend" wrote:
Подскажите пожалуйста, работает ли функция modbus 15 (0x0F) — запись значений в несколько регистров флагов (Force Multiple Coils)?
В OpenSCADA работает или что не правильного в дампе от OpenSCADA?
"legend" wrote:
Проблема в следующем. Есть modbus контроллер. Он поддерживает функцию 15.
Пытаюсь одновременно изменить статус 8 coil регистров. Команда на изменение значений битов в DAQ.ModBus приходит из контроллера LogicLev. По какой-то причине отправка команд по протоколу modbus осуществляется последовательно. Попробовал использовать функцию 5 и 15.
И что собственно не так? LogicLev пишет в ModBus по одному атрибуту, которые синхронно пишутся отдельными пакетами. Ставьте запись в "Асинхронно" и будет писаться одним пакетом с периодичностью опроса.
Learn, learn and learn better than work, work and work.
|
Повідомлення створено: 20. 11. 2015 [19:24]
|
legend
Oleg N
Зареєстрован(а) с: 13.04.2012
Повідомлення: 63
|
"roman" wrote:
В OpenSCADA работает или что не правильного в дампе от OpenSCADA?
Корректно ли работает 15 функция в Oscada?
Лог прикрепил для того, что бы показать, что команды 0x0F последовательно отправляет байты по каждому из адресов, а не одной посылкой.
"roman" wrote:
И что собственно не так? LogicLev пишет в ModBus по одному атрибуту, которые синхронно пишутся отдельными пакетами. Ставьте запись в "Асинхронно" и будет писаться одним пакетом с периодичностью опроса.
Я так и предполагал, что LogicLev пишет в ModBus по одному атрибуту. Но думал, что установив флаг "Использовать функции записи нескольких элементов (15,16)", одновременное изменение состояний нескольких битов будет отправлено одной посылкой функцией записи 15(0x0F).
Установил флаг "Асинхронно", "Использовать функции записи нескольких элементов (15,16)", установил период опроса 1с. Результат такой же как в логе выше. Данные функцией записи 15(0x0F) записываются последовательно.
|
Повідомлення створено: 20. 11. 2015 [20:02]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
|
"legend" wrote:
"roman" wrote:
В OpenSCADA работает или что не правильного в дампе от OpenSCADA?
Корректно ли работает 15 функция в Oscada?
Да, корректно!
И то, что он пишет по одному биту-регистру не ошибка, поскольку:
- запись не является приоритетной, следовательно значения в блоки не собираются;
- типовая запись это по одному значению, следовательно асинхронный режим просто собирает их в очередь, без группировки, и часто не может этого сделать в принципе в виду фрагментации;
- в заявленных функциях нет сборки в блоки.
Следовательно не нужно в категорию "Отслеживание ошибок" такого писать!
Learn, learn and learn better than work, work and work.
|
Повідомлення створено: 23. 11. 2015 [17:40]
|
legend
Oleg N
Зареєстрован(а) с: 13.04.2012
Повідомлення: 63
|
"roman" wrote:
Да, корректно!
Роман, может быть я чего то не понимаю, но в описании протокола Modbus написано следующее:
5 (0x05) — запись значения одного флага (Force Single Coil).
15 (0x0F) — запись значений в несколько регистров флагов (Force Multiple Coils).
Т.е. 5 (0x05) отправляет по одному биту одной посылкой, 15 (0x0F) отправляет группу битов одной посылкой. Это организовано для того, чтобы уменьшить загрузку транспорта.
А чем в модуле DAQ.Modbus отличается отправка посылок функцией 5 и 15?
И зачем тогда вообще нужен параметр "Использовать функции записи нескольких элементов (15,16)"?
|
Повідомлення створено: 23. 11. 2015 [18:11]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
|
"legend" wrote:
И зачем тогда вообще нужен параметр "Использовать функции записи нескольких элементов (15,16)"?
Затем, что есть устройства у которых запись возможна исключительно функциями 15/16.
Форум читайте!
Learn, learn and learn better than work, work and work.
|