У меня почему то получается 1s, судя по таймеру TOF
Вид для печати
У меня почему то получается 1s, судя по таймеру TOF
цикл в эмуляции определяется скоростью ПК.
i:=i+1;
IF (i=3) THEN
var1:=TRUE;
ELSE
var1:=FALSE;
END_IF
TOFInst(IN := Var1, PT:= T#100ms);
Var2 :=TOFInst.Q;
такая конструкция сбрасывает фронт TOF в первом же цикле
при PT=5000 через 5 циклов
А вот задача вызываемая циклически тикает четко в соответствии с заданным периодом
Не скажу точно. Лучше этот вопрос у Пролога уточнить.
С типом контроллера это точно не связано - эмуляция делается ресурсами ПК (выделяется на это время).
попробуйте такую конструкцию
где tik это TON. Смотрите за значением переменной j. В Вашем коде это не явно, но в обоих случаях сумма показывает количество циклов за определенный промежуток времени, причем при изменении времени зависимость не линейнаяКод:i:=i+1;
IF tik.Q THEN
j:=i;
i:=0;
END_IF;
tik(IN:=NOT tik.Q,PT:=T#100ms);
ЗЫ интересно какую методику Вы использовали, чтоб понять что ТОФ сбросился в первом же цикле :)
Проще.
http://images.devs-on.net/Image/fBRn...ysUntitled.pngКод:PROGRAM PLC_PRG
VAR
d, t: TIME;
END_VAR
d := TIME() - t;
t := TIME();
Разобрался, фишка в том что программа хоть и стоит на точке останова, а TOF все равно считает выдержку ;)