您的当前位置:首页格雷码转化二进制编程方法

格雷码转化二进制编程方法

2023-01-02 来源:乌哈旅游


2. 格雷码转换为自然二进制码

根据格雷码转换为自然二进制码的转换规则,实际上就是不断的将格雷码与二进制数做异或操作,也就是说,不断的和本身的不同位数做异或操作,如原数据为32位的A,那么先将A向右移动一位,与本身进行异或,然后保留值为B,那么继续将A向右移动一位,与B进行异或,保留为C,依次类推,直到A=1为止。程序流程图如下:

保存输入数 TEMP,INPUT1

如果输入数为0,那么直接返回数据0后退出

如果TEMP不等于1,那么循环,否则返回数据

TEMP右移1位,与输入值作不断异或

功能块中的程序如下:

INPUT 输入变量类型为DWORD

TEMP 局部变量类型为DWORD

INPUT1 局部变量类型为DWORD

GRAY_TO_BIN 功能块返回变量返回类型为DWORD

GRAY_TO_BIN:

TEMP:=INPUT;

INPUT1:=INPUT;

IF TEMP=DWORD#0 THEN

INPUT1:=DWORD#0;

GRAY_TO_BIN:=INPUT1;

RETURN;

END_IF;

WHILE TEMP<>DWORD#1 DO

TEMP:=SHR_DWORD(TEMP,UINT#1);

INPUT1:=TEMP XOR INPUT1;

END_WHILE;

GRAY_TO_BIN:=INPUT1;

上述代码在富士的SX系列PLC中试验没有问题,由于富士的SX系列PLC完全支持ST代码方式的编程,因此基本上可以不做修改的应用在西门子的S7系列的PLC中。

由于三菱的PLC中已经包含了自然二进制码转换为格雷码指令GRY以及格雷码转换为自然二进制码指令GBIN,因此上述代码应用于三菱系列的PLC已经没有意义,请使用三菱PLC本身附带的指令,因为西门子以及富士的SX系列PLC并没有附带转换指令,因此本人书写了上述代码用于补充SX系列的指令不足。

因為歐姆龍的ST不能支持數據移位指令,因此如果使用歐姆龍的話,那么FB中需要使用梯形圖來做哦。

因篇幅问题不能全部显示,请点此查看更多更全内容