PDA

Просмотр полной версии : Преобразование кода Грея в Двоичный код или в десятичный код



HerrOberst
29.01.2015, 16:28
Добрый день господа, столкнулся с такой проблемой: был старый контроллер Simatic S5 и стоял там энкодер абсолютный на выходе которого использовалось 12 входов дискретных они же 12 байт по коду Грея. помогите ребята программу всю написали осталось только код Грея в двоичный перевести для измерения высоты. заранее благодарен.

petera
29.01.2015, 19:05
Добрый день господа, столкнулся с такой проблемой: был старый контроллер 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;

Василий Кашуба
29.01.2015, 21:32
Добрый день господа, столкнулся с такой проблемой: был старый контроллер Simatic S5 и стоял там энкодер абсолютный на выходе которого использовалось 12 входов дискретных они же 12 байт по коду Грея. помогите ребята программу всю написали осталось только код Грея в двоичный перевести для измерения высоты. заранее благодарен.
Синим выделено преобразование Двоичного кода в код Грея, а зелёным наоборот Код Грея в Двоичный код.16458