西门子PLC由德国西门子公司(SIEMENS)生产的可编程逻辑控制器在我国也得到广泛应用,并已应用于冶金,化工,印刷生产线等领域。西门子(SIEMENS)PLC产品包括LOGO,S7-200,S7-1200,S7-300,S7-400等。西门子S7系列PLC体积小,速度快,标准化,具有网络通讯能力,功能更强,可靠性更高。 。 S7系列PLC产品可分为微型PLC(如S7-200),小规模性能要求PLC(如S7-300)和中,高性能要求PLC(如S7-400)等。 RC代表循环冗余校验:它是数据通信领域中最常用的错误校验代码。其特征是信息字段和校验字段的长度可以任意选择。循环冗余校验(CRC)是一种数据传输错误检测功能,可对数据执行多项式计算,并将获得的结果附加到帧的背面。接收设备还执行类似的算法,以确保数据传输Sex的正确性和完整性。工作原理循环冗余校验码(CRC)的基本原理是:在K位信息码之后,拼接R位校验码,整个码长为N位。因此,该代码也称为(N,K)代码。对于给定的(N,K)码,可以证明存在一个幂为N-K = R的多项式G(x)。根据G(x),可以生成K位信息的校验码,并将G(x)称为该CRC码的生成多项式。校验码的具体生成过程为:假设要发送的信息由多项式C(X)表示,将C(x)向左移动R位(可以表示为C(x)* 2R ),这样C(x)的右侧R位将被腾空,这是校验码的位置。通过将C(x)* 2R除以生成多项式G(x)而获得的余数是校验码。由二进制位串组成的任何代码都可以对应于系数仅为“ 0”和“ r”的多项式。和& lsquo; 1& rsquo;。例如:与代码1010111对应的多项式为x6 + x4 + x2 + x + 1,而多项式为与x5 + x3 + x2 + x + 1对应的代码101111。 PLC crc验证程序方法1:计算方法主程序:OB1网络1 LD M0.0 EU CALL SBR0,AC0 / INCB VB0 INCB VB0 INCB VB0 INCB VB0 0.1 AC 0 AC 0.《》 AC0,+0 MOVB 1,AC0 SBR_0 :SBR0 VAR_OUTPUT crc:INT; END_VAR VAR count:INT; crc:INT; END_VAR c c crc:INT;缓冲区,然后mmodbusBufr加2. // LD SM0.0 MOVW 16#FFFF,AC0 BTI VB0,LW2 MOVD& VB0,LD4 INCD LD4对于AC2,+ 1,LW2,AC2,,AC1 、,、 AC1,AC1 ,,XOR0B .1 XORW 16#A001,AC0 NEXT LD SM0.0 INCD LD4网络2 // MOVW AC0,#crc用于接收//如果程序不需要接收,则可以删除该行crcOUT。 // // // // MOVW AC0,*#ptr用于将//直接写入CRC到发送缓冲区,然后mmodbusBufr添加2. //如果不需要发送程序,则可以删除此线。 LD SM0.0 SWAP AC0 MOVW AC0,LW0 MOVW AC0,* LD4网络3 //网络标题//网络注释END_SUBROUTINE_BLOCK INTERRUPT_BLOCK INT_0:INT0 TI网络注释/ INTERRUPT OB1 TITLE =与方法1的不同之处在于,它还有一个额外的初始化,从而简化了CRC计算过程并缩短了时间。 //调用方法与方法1相同。BEGIN网络1 //网络标题//要初始化CRC表,需要512个字节。 VB2256 --------- VB2767 LD SM0.1 CALL SBR0网络2 //网络标题//发送LD M0.0 EU CALL SBR1,AC0 // AC0在这里无用INCB VB2000 INCB VB2000XMT,0网络3 / /接收完成后,检查接收的数据是对还是错。如果计算结果为0,则表示传输正确。 LD M0.1 EU CALL SBR1,AC0 AW“”。 AC0,+ 0 MOVB 1,AC0 END_ORGANIZATION_BLOCK SUBROUTINE_BLOCK SBR_0:SBR0 TITLE = NOTE子例程VAR索引1:INT; index2:INT; END_VAR BEGIN网络1 LD SM0.0 MOVD& amp; VB2256,AC3 MOVD +0,AC2 FOR LW0,+1,+256 MOVW AC2,AC0 FOR LW2,+1,+8 SRW AC0,1网络2网络2 16网络SM 4 0 SM0.0 MOVW AC0,* AC