Я вот так делаю:
TM(pt:=t#1s);
TM.in:=TRUE;
tr1(clk:=TM.Q);
IF tr1.Q THEN
A:=A+IN/X;
TM.in:=false;
END_IF
Ну или вот так (если просто через определенное время выполнять действия):
TM(in:=NOT TM.q, pt:=t#1s);
IF TM.q THEN
A:=A+IN/X;
END_IF
Я вот так делаю:
TM(pt:=t#1s);
TM.in:=TRUE;
tr1(clk:=TM.Q);
IF tr1.Q THEN
A:=A+IN/X;
TM.in:=false;
END_IF
Ну или вот так (если просто через определенное время выполнять действия):
TM(in:=NOT TM.q, pt:=t#1s);
IF TM.q THEN
A:=A+IN/X;
END_IF
приборист меня в некоторой степени волнует, какова будет погрешность измерения при увеличении времени цикла программы ?
Может лучше раз в секунду вызывать программу расчета по событию самого ПЛК в конфигурации ? тогда погрешность должна снизиться
Измерения чего?
Время цикла к скорости обработки сигнала АЦП не имеет ни какого отношения. и в ПЛК примерно 0.5 сек на канал.
приборист не фурычит ни мой пример таймера, ни ваш. Не пойму где проблема. IN таймера всегда true.
Таймер ВНУТРИ другой программы, наверное это важно...
прибор МЭ110-224.1М - мультиметр однофазный. с какой скоростью измеряет он мне фиолетово (указано менее 1 секунды). Мне с него раз в секунду надо читать для расчета.
С прибора я читаю в основной программе в каждом цикле, ну или сколько успевает ПЛК через конфигуратор, это мне тоже фиолетово.
мне просто нужно один из параметров пересчитывать строго раз в секунду, даже если он не успел обновиться из прибора.
не въеду, как в задачи кинуть программу.
PLC_PRG должен быть с приоритетом 0 и свободный ?
моя программа, циклическая 1 с, есть вход и выход. my_prg(IN:= , OUT=> ):
а как передать на вход переменную из PLC_PRG и как обратно забрать выходную переменную ???
обычно такие переменные(in-out) используют в функциональных блоках или функциях.
вам проще объявить эти переменные глобальными.
Полюбопытствую, зачем такая строгость ?мне просто нужно один из параметров пересчитывать строго раз в секунду, даже если он не успел обновиться из прибора.
melky видимо еще не обращал внимание что часы в контроллере точностью не отличаются
capzap часы будут корректироваться раз в сутки. NTP сервером будет Mikrotik
Валенок хотелка, чтобы беря данные из однофазного мультиметра считать киловатт_часы и значения были близки к показаниям счетчика, просто чтобы смотреть на панели не бегая на улицу, ну и смотреть сколько сгорело за сутки, за месяц. Потом скаду прикручу, чтобы графики строила.
Описание Конфигурации задач скудненькое. Так и не понял вчера как передать переменные из одной программы в другую. Даже назначив их глобальными. Входная переменная почему-то всегда 0.
Сделал вчера через FB, работает. Но хотелось бы сделать именно через вызов программы, а что-то лыжи не поехали.
Глобальные переменные вроде являются Retain или нет ?
Все "фурычит", даже без конфигуратора задач.
Вложение 14073 Вложение 14072
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg