Спасибо за подсказки.
Положил в копилку знаний.
Сейчас прошу помочь разобраться как создать функциональный блок на ST.
собственно говоря прочитав хелп к Овенлоджику и действуя по аналогии удалось самостоятельно создать ФБ типа таймер с задержкой отключения (для саморазвития и с прицелом на использование в следующем проекте).
Далее хотел добавить в него на вход импульс включения длительнстью 10ms (по аналогии RTIG), но что то пошло не так.
В редакторе висят 2 ошибки.
Подскажите что делаю не так.
Ну не совсем так. В первом ФБ если подать на вход 1 и убрать то он отсчитывает 10 секунд Если 1 оставить то он продолжает считать бесконечно.
Планировалось сделать что бы внутри ФБ был RTRIG.
Исходя из вашей подсказки после TP_1 в скобках выражение:
T:=10#ms - это время,
а I:=strt, - это как понимать? (м.б входу ФБ присвоить значение переменной strt из основной программы)?
Может есть где то более подробные разъяснения в этой части?
Что должно быть в круглых скобках?
PS.
Сделал так:
вроде заработало.Код:TP_1(I := strt, T := T#10ms); strt_1 := TP_1.Q;
Правильно я понимаю, что I :=strt - это присвоение входу ФБ TP.SYS значения внешней переменной а strt_1 := TP_1.Q - это присвоение результата работы ФБ уже в следующую переменную?
И забегаявперёд - если нужно будет использовать несколькоблоков TP.SYS то надо будет их нумеровать типа так:
TP_1
TP_2
и т.д.
?
Последний раз редактировалось Viktor D; 16.10.2024 в 04:47.
Все примерно так и есть. Посмотрите базовую информацию по ST в справке по OL (там не очень много, но есть) - нет смысла копировать её сюда.
Где-то на форуме была тема с реализацией ФБ типа "TON", "R_TRIG" и т.п. - поищите, если интересно.
И ещё - вы пытаетесь сделать свой "R_TRIG" на основе системного ФБ "TP.SYS" - при том, что можно просто использовать ФБ "R_TRIG.SYS"
Спасибо за подсказки.
Собственно говоря я уже это читал, просто некотрые моменты не понятны (учился давно по другой специальности (ТМС) и тогда комп был редкость. Проги писали на Фортране на листочке и сдавали преподу, а он окидывал взглядом и выносил вердикт - будет работать или нет).
Цель моих действий сделать ФБ который будет осуществлять следующий алгоритм: вращение вперёд-пауза-вращение назад и всё это повторять в течении определённого времени.
Делаю это для общего развития. На стандартных ФБ из овенлоджика уже сделано, теперь хочу освоить хотя бы в общих чертах ST. Привязаться хочу к функции DT потому как делала в ОЛ на BLINK и CTN и столкнулся с тем, что на длительных выдержках время уходит от встроенных часов из за конечной скорости работы программы. Приходилось вводить коррекцию.
Последний раз редактировалось Viktor D; 16.10.2024 в 05:29.
Посмотрите конструкцию SWITCH - для реализации на ST это лучше, чем CTN.
По поводу неточности выдержки времени - я не уверен, что пользуясь внутренним таймером процессора вы не получите таких-же погрешностей на больших интервалах времени. И большая выдержка времени - это сколько в данном случае?
От суток до двух суток. Уже не помню какая там цифра набегала. На практике это и не важно в принципе. Просто тогда мы решили добиться точности и я в BLINK записывал 2 значения вкл - 1мкс, выкл 999мкс. Потом CTN ом считал количество секунд. А потом уже в залитой в ПР программе на макете сравнивал с часами реального времени ПРа и панели СП310. Затем уменьшал время выключенного состояния. Но такая регулировка получилась грубой.
В принципе я хотел привязаться к системным перемненым секунды минуты часы для задачи общего времени выполнения цикла. Короткие промежутки вперёд-стоп-назад не так важны.
Но как сделать не соображу пока.
Опять же это чисто для понимания. На практике оно не так уж важно.
В мануале rp_owen_logic.pdf есть такое:
Может к этой величине привязаться. По идее по ней внутренние часы сс мм чч и т.д. и должны работать.Следовательно расхождений выдержки с часами не должно быть.Функция GET_DATE_TIME
Функция GET_DATE_TIME возвращает значение тип DT (4 байта), содержащее данные часов реального
времени, в секундах с 00:00:00 1.01.2000 г., с учетом часового пояса, установленного в приборе
Или я что то не понимаю?
Последний раз редактировалось Viktor D; 16.10.2024 в 07:00.
я может не всё понял, в чём проблема, но на форуме уже были жалобы на низкую точность частов в ПР
К точности работы часов реального времени ПР как раз было много претензий.
Если вам точность не сильно важна, то можно использовать их.
По поводу привязки - можете читать через GET_DATE_TIME текущее значение при начале нового периода, прибавлять к нему значение выдержки и ждать достижения этого значения, контролируя текущее значение времени через GET_DATE_TIME