По всей видимости не более 10 переменных с опросом каждой в 100ms?
Правильнее вычитывать сразу несколько переменных (те же 10, но одним запросом)
И потом разбирать по переменным.
Вид для печати
А если это переменные типа real то как их одним запросом считать? Уменьшил опрос с 100 до 10 всё без толку.
Как известно, настроить запуск чтения/записи по RS-485 можно либо циклически, либо по логической переменной (речь идёт о настройках в разделе конфигуратора Modbus Slave, настройка каналов).
По поводу циклически вопросов не возникает.
А вот по триггерной переменной вопрос.
Мне нужно запустить однократно опрос некоторых регистров и лишь только после этого дальше что-то делать.
Пусть, к примеру, запустить опрос по нажатию на кнопку. Нажимаем кнопку - переменная переключилась в TRUE. И вопрос - через какое время система прочитает значение переменной и запустит чтение? Когда можно сбросить переменную в FALSE? Как настроить это время?
В хелпе что-то про частоту дискретизации планировщика задач написано, но ничего больше не сказано.
В данном случае лучше воспользоваться библиотекой ОВЕН Модбас и выполнять опрос вручную.
Понятно, это как вариант. Но тут уже именно интересно выяснить.
По "перепаду" логической переменной можно и задачи запускать.
Отвлечемся от RS, вопрос звучит так:
через какое время после "логического перепада" начнёт выполняться соответствующее событие? Каково минимальное время нахождения логической переменной в TRUE?
Хорошо, спасибо за предложенный вариант.
Если кто-то подскажет еще по нижеприведенному вопросу,то для меня на данном этапе всё станет прозрачно совершенно.
Вот в этой теме
http://www.owen.ru/forum/showthread.php?t=19404&page=3
уважаемый Осинский Алексей приводит код такой:
То есть по сути запускает запись параметров по RS-485 по изменению состояния логической переменной (переходу FALSE-TRUE).Код:PROGRAM PLC_PRG
VAR
xTrigger:BOOL:=FALSE; //Триггер для Rising Edge
END_VAR
IF xTrigger THEN //Если триггер установлен - сбросим его
xTrigger:=FALSE;
ELSIF
xTrigger:=TRUE; //подадим команду на запись
END_IF
Если ранее уже установлено состояние TRUE, то переменная сбрасывается в FALSE и следующей же командой - в TRUE.
Система успеет отследить, что был логический переход? От чего зависит, успеет или нет? Где хотя бы это смотреть, читать?
Вложение 18135
На примере 2а.
Для 8а длина - 48.
А в соотнесении уже выбираете какие данные нужны.