Не совсем понятно. Что значит кусок ответа? Для Ethernet не типично рвать пакеты.
Какой у вас канал связи?
Не совсем понятно. Что значит кусок ответа? Для Ethernet не типично рвать пакеты.
Какой у вас канал связи?
Спасибо.
Тем не менее, в логе запросов ответ расчленялся на отдельные куски, которые принимались за ответы на несколько запросов
Связь через 127.0.0.1 идёт
У вас имитатор Modbus устройства?
Выложите конфигурацию и лог с запросами.
Спасибо.
Имитатор этот http://www.plcsimulator.org/Home
Конфигурацию и лог не могу выложить, текущая конфигурация следит за обменом
Когда будет время, я постараюсь создать аналогичную и без лишних кусков
Добрый день.
Нужно выводить окно объекта каждый час, некое всплывающее окно напоминания. Окно собирался выводить при помощи События. Если научите выводить через скрипт - еще лучше. Как сделать?
Можно поступить проще. Воспользуйтесь закладкой объекта "Расписание" - с ее помощью можно открывать окно через определенные интервалы времени.
Спасибо.
Вышел из отпуска
В приложении проект, демонстрирующий проявление ошибки
Вот фрагмент лога, когда она появляется
Обратите внимание, сначала одновременно отсылается два разных запроса, до того, как был получен хоть какой-то ответКод:04-08-2014 09:32:29.511 Node1::Device1:(10.0.3.2:502) Rx: [0011] 19 00 00 00 00 05 01 03 02 00 01 04-08-2014 09:32:29.461 Node1::Device1:(10.0.3.2:502) Tx: [0012] 19 00 00 00 00 06 01 03 00 00 00 01 04-08-2014 09:32:29.251 Node1::Device1:(10.0.3.2:502) Rx: [0011] 18 00 00 00 00 05 01 03 02 00 01 04-08-2014 09:32:29.201 Node1::Device1:(10.0.3.2:502) Tx: [0012] 18 00 00 00 00 06 01 03 00 00 00 01 04-08-2014 09:32:29.171 Node1::Device1:(10.0.3.2:502) Tx: [0012] 17 00 00 00 00 06 01 03 00 00 00 01 04-08-2014 09:32:29.151 Node1::Device1:(10.0.3.2:502) Tx: [0012] 16 00 00 00 00 06 01 03 00 00 00 01 04-08-2014 09:32:29.101 Node1::Device1:(10.0.3.2:502) Rx: [0001] 01 04-08-2014 09:32:29.081 Node1::Device1:(10.0.3.2:502) Tx: [0012] 00 00 00 00 00 06 01 03 00 01 00 01 04-08-2014 09:32:29.041 Node1::Device1:(10.0.3.2:502) Tx: [0012] 15 00 00 00 00 06 01 03 00 00 00 01 <...> 04-08-2014 09:32:28.109 Node1::Device1:(10.0.3.2:502) Tx: [0012] 03 00 00 00 00 06 01 03 00 00 00 01 04-08-2014 09:32:28.069 Node1::Device1:(10.0.3.2:502) Rx: [0004] 01 03 00 01 04-08-2014 09:32:28.059 Node1::Device1:(10.0.3.2:502) Tx: [0012] 02 00 00 00 00 06 01 03 00 00 00 01 04-08-2014 09:32:27.989 Node1::Device1:(10.0.3.2:502) Tx: [0012] 00 00 00 00 00 06 01 03 00 01 00 01 04-08-2014 09:32:27.979 Node1::Device1:(10.0.3.2:502) Tx: [0012] 01 00 00 00 00 06 01 03 00 00 00 01
Ошибка нестабильная. Её можно получить с большей вероятностью если в опрашиваемом устройстве задать задержку ответа побольше, вплоть до 1с.
Последний раз редактировалось SokolovS; 04.08.2014 в 09:48.
У вас ключевая версия или Demo?
Попробуйте проверить на текущей версии на 32 точки (версия 3.0.0.5) - мы исправляли подобную ошибку.
Спасибо.
Демо на 32 тега
На версии 3.0.0.5 поведение такое:
Код:04-08-2014 13:07:49.575 Node1::Device1:(10.0.3.2:502) Rx: [0011] 00 00 00 00 00 05 01 03 02 00 0F 04-08-2014 13:07:49.525 Node1::Device1:(10.0.3.2:502) Tx: [0012] 00 00 00 00 00 06 01 03 00 01 00 01 04-08-2014 13:07:49.515 Node1::Device1:(10.0.3.2:502) Rx: [0008] 00 00 00 05 01 03 00 01 04-08-2014 13:07:48.524 Node1::Device1:(10.0.3.2:502) Rx: [0003] 03 00 02 04-08-2014 13:07:48.504 Node1::Device1:(10.0.3.2:502) Tx: [0012] 00 00 00 00 00 06 01 03 00 01 00 01 04-08-2014 13:07:48.504 Node1::Device1:(10.0.3.2:502) Rx: [0000] 04-08-2014 13:07:48.504 Node1::Device1:(10.0.3.2:502) Tx: [0012] 04 00 00 00 00 06 01 03 00 00 00 01 04-08-2014 13:07:47.502 Node1::Device1:(10.0.3.2:502) Tx: [0012] 00 00 00 00 00 06 01 03 00 01 00 01 04-08-2014 13:07:47.502 Node1::Device1:(10.0.3.2:502) Tx: [0012] 03 00 00 00 00 06 01 03 00 00 00 01 04-08-2014 13:07:47.292 Node1::Device1:(10.0.3.2:502) Rx: [0000] 04-08-2014 13:07:47.292 Node1::Device1:(10.0.3.2:502) Rx: [0011] 02 00 00 00 00 05 01 03 02 00 01 04-08-2014 13:07:46.501 Node1::Device1:(10.0.3.2:502) Tx: [0012] 00 00 00 00 00 06 01 03 00 01 00 01 04-08-2014 13:07:46.301 Node1::Device1:(10.0.3.2:502) Rx: [0001] 00 04-08-2014 13:07:45.299 Node1::Device1:(10.0.3.2:502) Tx: [0012] 00 00 00 00 00 06 01 03 00 01 00 01 04-08-2014 13:07:45.299 Node1::Device1:(10.0.3.2:502) Rx: [0003] 01 03 00 04-08-2014 13:07:45.279 Node1::Device1:(10.0.3.2:502) Tx: [0012] 02 00 00 00 00 06 01 03 00 00 00 01 04-08-2014 13:07:44.288 Node1::Device1:(10.0.3.2:502) Tx: [0012] 00 00 00 00 00 06 01 03 00 01 00 01 04-08-2014 13:07:44.278 Node1::Device1:(10.0.3.2:502) Tx: [0012] 01 00 00 00 00 06 01 03 00 00 00 01
У вас в устройстве есть тег, и также вы вызываете собственную функцию с запросом из другого узла. Зачем вы так делаете? Что вы хотите получить?
Сейчас получается следующее - при вызове функции SendAndRecive происходит очищение входного буфера, и принятые байты затираются. Второй запрос замещает первый и принимает оставшиеся байты, естественно уже некорректные. То есть у вас происходит перехлестывание запросов.
Вам нужно реализовать обмен по одному из способов - либо только теги Modbus, либо программные теги, и чтение при помощи функции SendAndRecive.
Последний раз редактировалось SCADAMaster; 04.08.2014 в 15:34.
Спасибо.