Просмотр полной версии : сложение/вычитание при помощи энкодера
День добрый.
ПЛК 110
Задача: Есть ручной энкодер на пульте управления.
Нужно увеличивать и уменьшать значение переменной при помощи этого энкодера, но не на единицу, а на 200.
То есть определяем направление вращения и на каждый импульс энкодера прибавляем к переменной 200.
Пишу на ST.
Уже череп сломал. Есть идеи?
Заранее Благодарю.
b=a*200 , где а - число импульсов с энкодера - не подходит?
Нет. Есть переменная у которой изначальное значение равно 6400, и на каждый импульс экодера ее надо увеличивать или уменьшать на 200.
что то типа:
а - направление;
b = 6400
c = 200
если а = TRUE
то на каждый импульс b:= b + c;
иначе на каждый импульс b:= b - c;
как к импульсу с энкодера привязать арифметическую операцию?
lara197a
05.08.2018, 22:01
может выходную переменную сразу умножать на 200,
а энкодер пусть вычитает- прибавляет 1 ?
6400 * 200 = 1280000 !!!!
А мне надо 6600, 6800, 7000, 7200 и т.д.
Ну и в обратную сторону соответственно...
Нет. Есть переменная у которой изначальное значение равно 6400, и на каждый импульс экодера ее надо увеличивать или уменьшать на 200.
что то типа:
а - направление;
b = 6400
c = 200
если а = TRUE
то на каждый импульс b:= b + c;
иначе на каждый импульс b:= b - c;
как к импульсу с энкодера привязать арифметическую операцию?
PROGRAM PLC_PRG
VAR
R_TR: R_TRIG;
Impuls: BOOL;
a: BOOL; (*Направление*)
b: UDINT:= 6400;
END_VAR
R_TR(CLK:=Impuls);
IF R_TR.Q AND a THEN
b:= b + 200;
ELSIF R_TR.Q AND NOT a THEN
b:= b - 200;
END_IF
))) Красота
Я понимал что надо использовать триггер... но не дозрел как... а тут так все просто ))
Благодарствую.
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot