Просмотр полной версии : ПЛК 110-30 Спустя время изменилась работа программы.
Приветствую.
Случился тут со мной странный казус, решил поделиться.
Вообщем собрал на ПЛК110-30 (языке CFC) замену старой электроники.
Устройство снимает штабелером поступающую продукцию с ленты и укладывает на поддоны,
10 слоев, по 19->8 рядов т.е. пирамида.
Проработало всё это добро очень даже прилично примерно месяца 2 и тут возникает ситуация,
Что в работе и на HMI в том числе, счет последнего ряда пролетает и сразу начинается следующий,
т.е. как будто дребезг и срабатывает 2 раза :confused:
По коду суть, что идет проверка, достигло заданного числа на ленте продукция, если нет, то +1, если да то сброс на 1.
Чтобы устранить эту проблему добавил еще один блок R_trig И все стало хорошо. :cool:
Странность, что если была ошибка она-бы сразу проявлялось, а не спустя пару месяцев в работе. :confused:
Может кто прокомментировать, встречался кто с такими странностями?
https://i.ibb.co/d4CNTPZ/sh1.jpg (https://ibb.co/609KMHQ)
In_Da_Cher_A
29.03.2022, 12:52
ничего особенного - со временем, ток стал медленнее течь по проводам, это обычное дело, когда контроллер долго работает.
Ага и R_Trig за цикл два раза срабатывать ;)
Филоненко Владислав
29.03.2022, 13:13
А фильтрация по входам есть? Может появился износ концевика какого-то?
Alor
Я бы вместо r-trig №17 поставил TON со временем несколько десятков\сотен миллисекунд.
Тоже вариант.
Да пока сколько делал проблем не было, в первые такой прикол случился.
kondor3000
29.03.2022, 15:59
Тоже вариант.
Да пока сколько делал проблем не было, в первые такой прикол случился.
Дребезг контактов и наводки никто не отменял, поэтому сделать фильтр, например на таймере TON, самое правильное решение.
Хотя в моем случае, как я уже писал, и от датчика и от панели HMI стало несколько раз срабатывать, так, что дребезг под вопросом...
Если только в контроллере, что-то подсело со временем :rolleyes:
Я бы грешил на механические контакты кнопок и концевиков.
Поставьте на каждый дискретный вход с кнопками, от которых возможен счёт, по схеме устранения дребезга контактов на основе таймеров и RS-триггера.
Постоянную фильтра сделайте от 20мс - обычно этого достаточно.
Что-то типа
https://owen.ru/forum/attachment.php?attachmentid=59934&d=1648389395
Или в текстовом виде
VAR
(* переменные для обработки положения переключателя "Насосы в автоматическом режиме" *)
bPumpAtAuto : BOOL; (* обработанное антидребезгом состояние переключателя *)
tonPumpAtAuto : TON; (* переключатель в "АВТО" - после паузы антидребезга *)
tofPumpAtManual : TOF; (* переключатель в "РУЧНОМ" - после паузы антидребезга *)
rsPumpAtAutoStatus : RS; (* переключатель в "АВТО" - управляется от состояний нажата/отпущена после паузы антидребезга *)
rtrigPumpAtAuto : R_TRIG; (* одиночный импульс при переключении в автоматический режим *)
END_VAR
(*--------------------------------------------------------------------------*)
(* переключатель "Насосы в автоматическом режиме" *)
(*--------------------------------------------------------------------------*)
(* Проверка нажатия кнопки b_Button с подавлением дребезга *)
tonPumpAtAuto(in:=xPumpAtAuto, pt:=t#20ms);
tofPumpAtManual(in:=xPumpAtAuto, pt:=t#20ms);
rsPumpAtAutoStatus(SET:=tonPumpAtAuto.q, reset1:=NOT tofPumpAtManual.Q);
rtrigPumpAtAuto(clk:=rsPumpAtAutoStatus.Q1);
bPumpAtAuto:=rsPumpAtAutoStatus.Q1;
Я бы грешил на механические контакты кнопок и концевиков.
Поставьте на каждый дискретный вход с кнопками, от которых возможен счёт, по схеме устранения дребезга контактов на основе таймеров и RS-триггера.
Постоянную фильтра сделайте от 20мс - обычно этого достаточно.
Что-то типа
https://owen.ru/forum/attachment.php?attachmentid=59934&d=1648389395
Или в текстовом виде
VAR
(* переменные для обработки положения переключателя "Насосы в автоматическом режиме" *)
bPumpAtAuto : BOOL; (* обработанное антидребезгом состояние переключателя *)
tonPumpAtAuto : TON; (* переключатель в "АВТО" - после паузы антидребезга *)
tofPumpAtManual : TOF; (* переключатель в "РУЧНОМ" - после паузы антидребезга *)
rsPumpAtAutoStatus : RS; (* переключатель в "АВТО" - управляется от состояний нажата/отпущена после паузы антидребезга *)
rtrigPumpAtAuto : R_TRIG; (* одиночный импульс при переключении в автоматический режим *)
END_VAR
(*--------------------------------------------------------------------------*)
(* переключатель "Насосы в автоматическом режиме" *)
(*--------------------------------------------------------------------------*)
(* Проверка нажатия кнопки b_Button с подавлением дребезга *)
tonPumpAtAuto(in:=xPumpAtAuto, pt:=t#20ms);
tofPumpAtManual(in:=xPumpAtAuto, pt:=t#20ms);
rsPumpAtAutoStatus(SET:=tonPumpAtAuto.q, reset1:=NOT tofPumpAtManual.Q);
rtrigPumpAtAuto(clk:=rsPumpAtAutoStatus.Q1);
bPumpAtAuto:=rsPumpAtAutoStatus.Q1;
Очень полезная информация.
krollcbas
05.02.2023, 03:21
Когда работали на кирпичном заводе, то был похожий курьезный случай. Рабочие вручную постоянно перекладывали паллеты.
Они не жаловались и особо никто не замечал подвоха. Позднее заметили.
Оказалось, что кто-то на автомате повернул нечаянно какую-то ручку и размерность кирпича изменилась.
Автомат штука такая, ему все равно.
Powered by vBulletin® Version 4.2.3 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot