PDA

Просмотр полной версии : ПЛК110 М02 и энкодер



tagor4444
15.06.2017, 15:19
Приветствую, уважаемые! Это мой первый проект на КДС, и вообще на ПЛК, нарисован на CFC. Энкодер подключен к ПЛК к быстрым входам, fast discrete inputs - direct control, подпрограмма для timer выглядит так:

in:=SysPortIn(0);
IF in.0<>old_in THEN
IF in.0=TRUE THEN
IF in.1=TRUE THEN
count:=count+1;
ELSE
count:=count-1;
END_IF;
END_IF;
END_IF;
old_in:=in.0;

Проблема: ПЛК управляет задним упором гильотины, и после позиционирования упора, в моменты резов, значение count свободно плавает в пределах от 0 за несколько резов до +/- 20 за рез, станок достаточно сильно дергается в этот момент, причем физически упор не двигается вообще, осциллографа к сожалению нет, проверить реально ли такие последовательности импульсов с энкодера приходят не могу, энкодер фирмы autonics с двухтактным выходом (может стоит резисторами на плюс подтянуть?), кабель экранирован (в схеме нет разделения на функциональное и защитное заземление - может в этом проблема?), везде все соблюдается.
Итак, вопрос: могу ли я как то отключать подпрограмму для timer на время реза например? Причем управляемо, потому что хотелось бы еще функцию отката сохранить. Ну или подскажете, как бороться с "левыми" импульсами.

Филоненко Владислав
15.06.2017, 18:23
0. Отладка прерывания по визуализации - рассматривание слона в длинную трубу. Что-то сереет, но что? Отладьте программу по шагам в основном коде ПЛК (на малой скорости) и потом переносите в прерывание.
1. Если не нужна реакация <1 мс - используйте штатный конфигурационный энкодер. Он быстрее и не жрет ресурсы.
2. Фильтрация входов - надо подобрать (и желательно посмотреть осциллографом на сигнал)
3. Размах сигнала должен быть не менее 15В (лучше 24).

tagor4444
16.06.2017, 08:12
0. Отладка прерывания по визуализации - рассматривание слона в длинную трубу. Что-то сереет, но что? Отладьте программу по шагам в основном коде ПЛК (на малой скорости) и потом переносите в прерывание.
1. Если не нужна реакация <1 мс - используйте штатный конфигурационный энкодер. Он быстрее и не жрет ресурсы.
2. Фильтрация входов - надо подобрать (и желательно посмотреть осциллографом на сигнал)
3. Размах сигнала должен быть не менее 15В (лучше 24).

Спасибо за подсказку,
0) попробовал в основном коде как себя ведет, там неправильно считает, если на in.0 приходит true раньше, чем на in.1, то сразу сcount := count + 1, само собой меня это не устраивает, но, к сожалению, я далек от языка ST, поэтому врядли что то там смогу исправить, а имеющийся ксок кода я взял со страниц этого форума. Не могли бы вы подсказать, как использовать штатный энкодер, или ссылку дать? Просто я когда заменяю fast discrete inputs на fast encoder, там получается переменная типа WORD, а мне надо DWORD. Как преобразовать без потери не понимаю.
1) реакция <1мс это в смысле как быстро программа узнает об изменеиях в прерывании? Наверное так быстро не надо.
2) про фильтрацию входов не совсем понял.
3) энкодер на 24 В питание