Сообщение от
HerrOberst
Добрый день господа, столкнулся с такой проблемой: был старый контроллер Simatic S5 и стоял там энкодер абсолютный на выходе которого использовалось 12 входов дискретных они же 12 байт по коду Грея. помогите ребята программу всю написали осталось только код Грея в двоичный перевести для измерения высоты. заранее благодарен.
Как-то так
Код:
FUNCTION GRAY_TO_WORD : WORD
VAR_INPUT
IN:WORD;
END_VAR
GRAY_TO_WORD:=0;
WHILE IN >0 DO
GRAY_TO_WORD:=GRAY_TO_WORD XOR IN;
IN:=SHR(IN,1);
END_WHILE
Kod_BIN:=GRAY_TO_WORD(Kod_GRAY);
ЗЫ.
В OSCAT есть такая функция, но только для восьми разрядного кода
Код:
FUNCTION GRAY_TO_BYTE : BYTE
VAR_INPUT
IN : BYTE;
END_VAR
GRAY_TO_BYTE := SHR(IN,4) XOR IN;
GRAY_TO_BYTE := SHR(GRAY_TO_BYTE,2) XOR GRAY_TO_BYTE;
GRAY_TO_BYTE := SHR(GRAY_TO_BYTE,1) XOR GRAY_TO_BYTE;