PDA

Просмотр полной версии : какой период программного цикла в режиме эмуляции плк?



amkuznecov
20.03.2013, 18:39
У меня почему то получается 1s, судя по таймеру TOF

Николаев Андрей
21.03.2013, 01:36
цикл в эмуляции определяется скоростью ПК.

amkuznecov
21.03.2013, 01:55
цикл в эмуляции определяется скоростью ПК.

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 циклов


А вот задача вызываемая циклически тикает четко в соответствии с заданным периодом

Николаев Андрей
21.03.2013, 10:13
Не скажу точно. Лучше этот вопрос у Пролога уточнить.
С типом контроллера это точно не связано - эмуляция делается ресурсами ПК (выделяется на это время).

capzap
21.03.2013, 10:48
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 циклов


А вот задача вызываемая циклически тикает четко в соответствии с заданным периодом
попробуйте такую конструкцию

i:=i+1;
IF tik.Q THEN
j:=i;
i:=0;
END_IF;
tik(IN:=NOT tik.Q,PT:=T#100ms);

где tik это TON. Смотрите за значением переменной j. В Вашем коде это не явно, но в обоих случаях сумма показывает количество циклов за определенный промежуток времени, причем при изменении времени зависимость не линейная

ЗЫ интересно какую методику Вы использовали, чтоб понять что ТОФ сбросился в первом же цикле :)

amkuznecov
21.03.2013, 12:44
ЗЫ интересно какую методику Вы использовали, чтоб понять что ТОФ сбросился в первом же цикле :)
Переменую Var2 смотрю в отладчике, переменная i++ считает количество циклов, на ней точка останова

capzap
21.03.2013, 13:01
Переменую Var2 смотрю в отладчике, переменная i++ считает количество циклов, на ней точка останова

из Вашего кода не видно оказывют ли какое действие на эту переменную внешние факторы, до присвоения ей выхода тофа, возможно поэтому при остановах она может иметь не требуемое значение

Yegor
21.03.2013, 13:02
Проще.


PROGRAM PLC_PRG
VAR
d, t: TIME;
END_VAR

d := TIME() - t;
t := TIME();

http://images.devs-on.net/Image/fBRnt4fVfcEvanSQ-CoDeSysUntitled.png

amkuznecov
21.03.2013, 19:15
Разобрался, фишка в том что программа хоть и стоит на точке останова, а TOF все равно считает выдержку ;)