Валенок, огромное спасибо. Сейчас буду испытывать. Только не понял одну строчку
OUT:=OUT and 255; //чтоб муть не гнать
Валенок, огромное спасибо. Сейчас буду испытывать. Только не понял одну строчку
OUT:=OUT and 255; //чтоб муть не гнать
Выходов - восемь.
Валенок. Проверил Ваш вариант. Работает отлично. Запись работает без ошибок. Чтение - 1 ошибка. Причем таймеры я еще никакие не устанавливал. Еще раз СПАСИБО!
Понял, это чтобы обнулить лишние биты.Выходов - восемь.
Да. Ошибка была в самом начале.
Rs.dL=0 - это, как я понял, задержка ответа?
Вероятно после setting'а требуется некоторая пауза. Но суть не в этом. Работа при любом уровне помех. Главное чтоб непрерывная череда помех не превышала t.out в МДВВ и устраивающий Вас период контроля связи. Обычно 1-3сек - за глаза для обоих.
..
connect(in:=false,pt:=период_контроля); //tof
case
..
if r3.complete then
connect(in:=C connectoм - очепятка.
после complete
connect(in:=r3.exception = 0 );
..
Rs.dL - задержка ответа в МДВВ. Не нужна.
То есть открываем порт. Пауза 1сек. Потом чтение с интервалом 1-3 сек.Валенок
Вероятно после setting'а требуется некоторая пауза. Но суть не в этом. Работа при любом уровне помех. Главное чтоб непрерывная череда помех не превышала t.out в МДВВ и устраивающий Вас период контроля связи. Обычно 1-3сек - за глаза для обоих.
Под контролем связи Вы что имели в виду, период опроса входов? Контроль связи осуществяестя в процессе чтения, если нет ошибок, то связь есть. Если есть помехи увеличиваем таймаут в приборе (сейчас там стоит 60 сек. надо ли больше?). Я правильно понял?
Уточнение по коду. После того, как завершился процесс чтения подаем сигнал на таймер connect. В следующем цикле перед case убираем сигнал с таймера, время пошло. Далее пока connect.Q=TRUE чтение не разрешаем. Так?..
connect(in:=false,pt:=период_контроля); //tof
case
..
if r3.complete then
connect(in:=true);
..
Пауза если и нужна 1-2мс.
Зачем такое редкое чтение ?
TOF !В следующем цикле перед case убираем сигнал с таймера,
Связь есть пока хоть один ок в течении контрольного времени (или предельного кол-ва непрерывных ошибок)если нет ошибок, то связь есть.
Чесно говоря я t.out и больше 3сек никогда не ставил - это под 3 сотни запросов.Если есть помехи увеличиваем таймаут в приборе (сейчас там стоит 60 сек. надо ли больше?)
Модуль статистики имеет переменную, которая указывает на статус питания ПЛК. Если анализировать эту переменную, можно произвести запись в лог об отключении питания.
Как лучше определить состояние, когда ПЛК стартанул? (после подачи питания или просто рестарт пользователем)
Код:VAR init:bool:=true; ... END_VAR ---- в самом начале программы: IF init THEN ... Делаем что надо при старте ... init:=FALSE; END_IF