产品规格模块式包装说明全新品牌西门值+ 包装说明 全新 - 产品规格子
西门子河源PLC模块总代理
错误校验码(CRC校验)
主机或从机可用校验码进行判别接收信息是否正确。由于电子噪声或一些其它干扰,信息在传输过程中有时会发生错误,错误校验码(CRC)可以检验主机或从机在通讯数据传送过程中的信息是否有误,错误的数据可以放弃(无论是发送还是接收),这样增加了系统的安全和效率。
MODBUS通讯协议的CRC(冗余循环码)包含2个字节,即16位二进制数。CRC码由发送设备(主机)计算,放置于发送信息帧的尾部。接收信息的设备(从机)再重新计算接收到信息的CRC,比较计算得到的CRC是否与接收到的相符,如果两者不相符,则表明出错。
在进行CRC计算时只用8个数据位,起始位及停止位,如有奇偶校验位也包括奇偶校验位,都不参与CRC计算。
● CRC码的计算方法是:
1.预置1个16位的寄存器为十六进制FFFF(即全为1);称此寄存器为CRC寄存器;
2.把**个8位二进制数据(既通讯信息帧的**个字节)与16位的CRC寄存器的低8位相异或,把结果放于CRC寄存器;
3.把CRC寄存器的内容右移一位(朝低位)用0填补较高位,并检查右移后的移出位;
4.如果移出位为0:重复第3步(再次右移一位);
如果移出位为1:CRC寄存器与多项式A001(1010 0000 0000 0001)进行异或;
5.重复步骤3和4,直到右移8次,这样整个8位数据全部进行了处理;
6.重复步骤2到步骤5,进行通讯信息帧下一个字节的处理;
7.将该通讯信息帧所有字节按上述步骤计算完成后,得到的16位CRC寄存器的高、低字节进行交换;
8.最后得到的CRC寄存器内容即为:CRC码。
--------------------------------------------------------------------------------------------------------------
五、通讯错误信息及数据的处理
当PDM表检测到除了CRC码出错以外的错误时,必须向主机回送信息,功能码的较高位置为1,即从机返送给主机的功能码是在主机发送的功能码的基础上加128 。以下的这些代码表明有意外的错误发生。PDM从主机接收到的信息如有CRC错误,则将被PDM表忽略。
PDM返送的错误码的格式如下(CRC码除外):
地址码: 1字节
功能码: 1字节(较高位为1)
错误码: 1字节
CRC码: 2字节
PDM响应回送如下错误码:
81.非法的功能码。
接收到的功能码PDM表不支持。
82.非法的数据位置。
*的数据位置**出PDM表的范围。
83.非法的数据值。
接收到主机发送的数据值**出PDM相应的数据范围


(1) 至少且只有一个主机,其他的都是从机
(2) 不管任何时候,从机都不能主动向主机发送数据
(3) 主机具有访问从机的权限,从机不可以主动访问从机,任何一次数据交换,都要由主机发起
(4)不管是主机还是从机,系统一旦上电,都要把自己置于接收状态(或者称为状态)
主从机的数据交互,需要:
a. 主机将自己转为发送状态
b. 主机按照预先约定的格式发出寻址数据帧。
所谓的约定,可是主机开发者和从机开发者约定好的规约,好,例如主机要通过从机控制接在从机的电机,主机要启动电机就往从机发0x1,停止电机就往从机发0x2。这就是一种预
先约定好的格式,但是这样做,互换性、兼容性、通用性差,例如其他公司是约定发送0x03让电机转动,发0x04让电机停止。导致不同厂家的主机、从机不能相互通讯。用户需要的,就像网络操作,只要接入有网的网线那么计算机都能上网。
所以说,我们需要一种大家都共同遵循的规则(可以是ModBus,也可以是TCP/IP等上层协议),这种大家认可,共同遵循的软件层协议。软件层协议主要是解决如何解析传输的数据,即传输的目的或者更加可靠的传输数据。
半双工通讯中,都是主机寻找从机,主机的目的无非有: 主机要发数据给从机,或者主机要从从机中获取数据。
c. 主机恢复自身的接收状态
主机等待自身所寻址的从机作回应,也就是说从机接收到主机的寻址命令、数据后一定要回应主机,不然主机会认为从机通讯异常。回应数据包也是要按照ModBus协议规约(其实不局限ModBus,像TCP/IP也需要回应是吧!~)
2. ModBus通讯协议
通俗点来讲,ModBus规约了起停电机,主机要分别发送什么命令给从机。ModBus规定主从机之间数据的交互,需要遵循什么样的格式,如何保证数据在传输过程中不发生冲突。只要都遵循这个协议,那么不同厂家的主从机就可以共用了
http://zhangqueena.b2b168.com