PDA

Просмотр полной версии : сохранение мгновенного показания датчика в переменную



@le][
24.11.2009, 18:11
подскажите пожалуйста.
есть овен плк 63+сп 270.
необходимо в определённое время после запуска тех процесса (через 100 сек и через 170 сек) отображать показания датчиков.
как можно сохранить два показания в переменные, чтобы он не изменялись с течением времени?
спасибо.

Александр Ч.
24.11.2009, 18:46
в фбд я бы поставил генератор-блинк 1с/1с(в дальнейшем может еще где нибудь пригодится). далее счетчик и условие : выход счетчика равен 100, выход счетчика равен 170, вызов подпрограмм-блока на ст: значению переменной обмена 1 =значение перем. датчика 1. аналогично зпо2=зпд2.
или сразу на ст, где и условия и присвоения. далее только непонятно, что делать? обнулить счетчик или по новой считать?
может есть и попроще вариант.

magirus
24.11.2009, 19:01
зарезервировать две переменные и записать в них данные через 100 и 170 секунд соответственно.

Малышев Олег
24.11.2009, 19:43
ton1(in:=start_process,pt:=t#100s);
ton2(in:=start_process,pt:=t#170s);
rtrig1(CLK:=ton1.q); if rtrig1.q then save_1:=value;end_if
rtrig2(CLK:=ton2.q); if rtrig2.q then save_2:=value;end_if

Александр Ч.
24.11.2009, 21:19
В моем решении, кот. согласен не так красиво, переменная будет писаться в течение 1 сек , с циклом плк -5 мс, кол-во записей=200.
В последнм примере кол-во записей будет зависеть от длительности выхода по rtrig? или этот выход привязан к времени цикла?

Малышев Олег
25.11.2009, 10:04
К времени цикла привязки нет. Крайне не рекомендую привязываться к нему в больших программах. Ибо время цикла может подрасти (из-за роста объема кода). В контроллере цикл выполняется так - читаем входы, выполняем программы,отдыхаем (или выполняем системные задачи) до конца цикла, записываем выходы. Триггер выполняется один раз на момент получения переднего фронта. Передний фронт возникает в момент включения ton

@le][
25.11.2009, 16:36
всем огромное спасибо, получился вариант с триггерами, оч. помогло