Триггеры то ладно, но каких-то средств для работы с временнЫми интервалами точно не хватает
Триггеры то ладно, но каких-то средств для работы с временнЫми интервалами точно не хватает
Да, библиотеки конечно не хватает...
Городить все стандартные блоки лениво...
Да и отсутствие TIME не очень радует, хотя программа не даёт использовать имя TIME в качестве переменной, скорее всего работы ведутся и имя переменной уже зарезервировано.
Использую для тестов время цикла, не знаю на сколько такой вариант верный, но, как мне кажется, он более менее точный:
function_block times
var_input
T_cycle:udint;
end_var
var_output
T : udint;
end_var
var
M:udint;
end_var
M:=T;
T:=M+T_cycle;
end_function_block
А Таймер TOF получился такой (используя ФБ ST Tites)
function_block TOF
var_input
IN:bool;
PT:udint;
T_cycle:udint;
end_var
var_output
Q:bool;
ET:udint;
end_var
var
M:bool;
StartTime:udint;
T:times;
end_var
T();
T.T_cycle:=T_cycle;
if IN then
Q:=true;
ET:=0;
else
if M then
StartTime:=T.T;
end_if
if Q then
ET:=T.T-StartTime;
if ET>=PT then
Q:=false;
ET:=PT;
end_if
end_if
end_if
M:=IN;
end_function_block
Последний раз редактировалось yura2507; 17.08.2023 в 10:55.
_______________________________
С уважением,
Зайченко Никита
ООО «Политехник»
Тел.: +7 (911) 284 86 84
E-mail: zaychenko@owen-polytechnic.ru
Ну как временный эрзац. Если задача тяжелая - то может имеет смысл проверить "циклов за секунду"
А по поводу fb times - даже сейчас нужен ли он ? Во всех блоках типа TON/TOF/BLINK/PID/... локальный "readonly" t := t + 1 изобразит TIME()
Внезапно оказавшийся 1.754мс за цикл тоже не проблема и сейчас
2023-08-18_08-41-23.png2023-08-18_08-42-04.png
В ПР205 (думаю что и в 103-ем),есть системное время в мс, и их можно использовать для реального времени блоков TON\TOF\TP и прочих.
yura2507 а не могли бы выкладывать код закрывая его тегами, чтобы можно было развернуть и скопировать? спасибо.
R_TRIG Триггер переднего фронта, от слова Raise
F_TRIG Триггер заднего фронта, от слова FallКод:function_block R_TRIG var_input I:bool; end_var var_output Q : bool; end_var var M:bool; end_var Q:=false; if I and not M then Q:=true; end_if M:=I; end_function_block
Код:function_block F_TRIG var_input I:bool; end_var var_output Q : bool; end_var var M:bool; end_var Q:=false; if not I and M then Q:=true; end_if M:=I; end_function_block
Спасибо, полезно, когда ни на что не остается свободного времени и кто-то уже переписал или создал FB на ST...
Код:function_block R_TRIG var_input I:bool; end_var var_output Q : bool; end_var var M:bool; end_var (* Q:=false; if I and not M then Q:=true; end_if *) Q:=I and not M; M:=I; end_function_blockКод:function_block F_TRIG var_input I:bool; end_var var_output Q : bool; end_var var M:bool; end_var (* Q:=false; if not I and M then Q:=true; end_if *) Q:=not I and NOT M; M:=NOT I; end_function_block
Последний раз редактировалось petera; 18.08.2023 в 11:56.
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Мой канал на РУТУБЕ
https://rutube.ru/channel/23641433/
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg