三菱PLC中LRC校验码程序编写方法图解

三菱plc中的lrc校验码程序的编写,在plc与设备进行通讯时采用modbus协议时,一般会有两种数据模式,1是rtu模式,2是ascii码模式。rtu的数据传输采用crc校验,而ascii码则采用lrc校验值。lrc值校验涵盖从从机地址到数据的信息部分,校验和等于所有参与校验数据的字符和的补码。
我们先说下具体的校验码怎么计算,然后说三菱plc的lrc校验码程序的编写。
例子1
采用ascii码模式控制变频器指令:01 03 21 00 00 01,这条指令中01一般是站号,03是读取命令,2100是参数地址(例如运行频率),00 01代表数据的个数。那么它的lrc校验码怎么计算:指令的数据是16进制的,和为:0x01+0x03+0x21+0x01=0x26,对0x25取2的补码就是da,具体计算就是取反加1,如:0x26=b0010,0110,取反后得到b1101,1001,加1得到b11011010=0xda,那么lrc校验码就是da。
例子2
同样的控制变频器指令:03 06 00 03 27 10, 和为0x43,取反加1为0xbd,lrc校验值就是bd。
明白了它的计算过程接下来我们在plc编写它的算法,我们知道在plc的运算中都是十进制的,为了方便转换和计算,可采取另外一种方法(原理一样),我们知道ascii码是2位的16进制数,取反过程可看做0xff减去检验总和如上述的0x26、0x43,加1就变成0x100减去检验总和,转换成10进制的就是256(d)-和(d),再经过asci指令转换成aciis码就可以了。以下面梯形图进行说明:
使用rs指令向变频器发送命令,01 03 33 03 00 01,转换成16进制01 03 21 03 00 01这是一个读取频率的指令,lrc校验码的运算梯形图:
使用一个变址寄存器z0对数据d201到d206进行累加求和d40,最后用k256减去41就是lrc校验码215,通过asci指令转换成ascii码,通过查看扩展ascii码表:
215的16进制为d7,与01+03 +21+ 03+ 00 +01=0x29=b00101001,取反加1得到11010111=0x(d7),结果一致。
关于本站