Изначально пробовал с тем же блинком, безрезультатно.
Может скажите, какой у вас ПЛК, модули и параметры связи? И версии КДС и таргетов?
Заранее спасибо )
Изначально пробовал с тем же блинком, безрезультатно.
Может скажите, какой у вас ПЛК, модули и параметры связи? И версии КДС и таргетов?
Заранее спасибо )
Возможно вопрос не ко мне, но отвечу:
- КДС V3.5 SP4 + (скачивал с Рутрекера, но таргет нормально заработал только с диска от СПК207!);
- контроллер СПК207, прошивка 3302, таргет SPK2xx_03_CS_WEB версия 3.5.0.40;
- в проекте подключены Modbus COM версии 3.4.0.0, Modbus Master версии 3.5.2.0, Modbus Slave (4 устройства) версии 3.5.2.0;
- физически слейвы - МВА8 (2 шт.), МВУ8 (1 шт.) и МУ110-16Р (1 шт.). Соединение 9600-8-N-1, всё это подключено пока на столе коротким проводниками, но сначала глючило (то и дело слейвы отваливались от мастера), потом перестало )))))
- КДС V3.5 SP3 Patch5
- контроллер СПК207, прошивка 3302, таргет SPK2xx_03_CS версия 3.5.3.40;
- в проекте подключены Modbus COM версии 3.4.0.0, Modbus Master версии 3.5.3.50, Modbus Slave (3 устройства) версии 3.5.3.0;
- физически слейвы - МВ110-16Д (1 шт.), и МУ110-8Р (1 шт.), еще один контроллер(пока это CODESYS Win V3 ). Соединение 115200-8-N-1, (основные глюки у меня начинались когда подключил виртуальный контроллер)
Вы можете выслать мне на почту m.akhriev@owen.ru
наверно потому что при восстановлении связи ошибка пропадает попробуйте что-то типа счетчика переподключений поставить
ну или присвоение перенести в другое место:Код:IF Modbus_Slave_COM_Port.xError THEN Blink_01(ENABLE:= TRUE, TIMELOW:= T#1S, TIMEHIGH:= T#10MS); Modbus_Slave_COM_Port.xReset:= Blink_01.OUT; IF Blink_01.OUT THEN count:= count+1; END_IF END_IF
так по идее признак ошибки в переменной Var1 будет пока принудительно где-нибудь не обнулимКод:IF Modbus_Slave_COM_Port.xError THEN Var1 := Modbus_Slave_COM_Port.xError Blink_01(ENABLE:= TRUE, TIMELOW:= T#1S, TIMEHIGH:= T#10MS); Modbus_Slave_COM_Port.xReset:= Blink_01.OUT; END_IF
Последний раз редактировалось Владиславыч; 23.04.2014 в 15:52.
Ваши предложения понятны. Я в точности так и делал! И счётчик взводил (который потом посекундно декрементируется если >0), и присвоение производил перед обработкой .xError, и флаг взводил в теле IF Modbus_Slave_COM_Port.xError THEN ... Flag := TRUE; ... END_IF, который нигде потом не сбрасывается. Чушь какая то, но не могу я почему то ошибки связи засечь! Ни .xError, ни .byModbusError! Хотя линию то я ручками физически разрываю! ))
Есть ещё идеи? Где я ошибаюсь?
ЗЫ: А почему используем именно .xReset, а не .xAcknowledge ??
Последний раз редактировалось RadistDog; 24.04.2014 в 07:04.
xReset сбрасывет флаг xError после востановления, а xAcnowledge как я понимаю нет, и надо это делать вручную, иначе будет постоянно выполнятся алгоритм восстановления связи... IF Modbus_Slave_COM_Port.xError THEN может вам стоит попробовать с xReset??
Последний раз редактировалось Владиславыч; 24.04.2014 в 08:06.
Может где нибудь тут ошибка, но для иллюстарции приложу два скриншота. Судя по всплывающим подсказкам как раз xReset не сбрасывает ошибки, а только перезапускает порт!
xReset.jpgxAcknowledge.jpg
а у меня пишут вот так...
xreset.PNG
Вот как странно! В Вашем случае iodrvmodbus какой версии? У меня в версии 3.5.2.0 по другому написано:
3.5.2.0 - 1.gif