众所周知,三菱PLC没有计算CRC的指令,通常的计算方式,先进行逻辑与(WAND),对最低位的“1”判断,然后采用移位(ROR),而后再对首位强行置0(用H7FFF进行逻辑与),最后一步,如果寄存器的最低位=1,则进行H0A001逻辑异或计算。以上过程共分4步(见以下附图1)。

本人觉得以上的计算方式太繁,近来突发奇想,异想天开采用非常规的方式,进行CRC计算,见下图:

以上程序的依据及理由:
通常在ROR移位后,原有2进制数据“1”的总数不会减少,右移动液出的“1”将循环到寄存器的最高位,这将与CRC计算首位补“0”相矛盾。但此时寄存器是否液出,完全可以判断,如果液出,特殊继电器M8022将置1,此时只要将原有的逻辑异或的模(H0A001)进行变换,使他们的计算结果与原有的保持一致,也就是说将H0A001换成H02001,再进行逻辑异或计算。以上方式,经实际验证,其CRC计算结果与原有方式完全一致。
尽管简化后的程序也减少不了几步,但可以借此提高对功能指令的理解能力。
[20350]
[42386]
[19057]
[7916]
[11025]
[15735]
[9911]
[11625]
[14607]
[10636]

客服
小程序
公众号