新闻中心

EEPW首页>嵌入式系统>设计应用> 基于MODBUS总线高压软起动装置液晶显示界面的设计

基于MODBUS总线高压软起动装置液晶显示界面的设计

作者: 时间:2011-08-05 来源:网络 收藏

2:对以上测试码分别进行说明:

(1):召唤发送,参数设置功能:即控制器()与液晶屏(430)之间的通讯,是双向的。

00 06

00 00 00 0C 1E 88

以上这段代码是传给430的召唤代码,含义(代码从左到右)是:00:设备代码。本系统中从设备只有高压软起动装置液晶操控板一个设备,故设备代码设置为00。06:功能码,实现何种功能(本例中,06是双向召唤发送功能,实现参数设置;03功能码实现电压、电流监测功能;02功能码实现故障显示功能)。00 00:是起始地址的高八位、低八位。00 0C:是要求430回传字节的个数(不包括设备代码、功能码、数据个数代码、和校验代码),00是个数的高八位、0C是个数的低八位,0C是十六进制(转换成十进制是12,12是从“起动时间、额定电流——备用 3”的个数),1E 88:是CRC校验码。当DSP给430传

整个消息帧必须作为一连续的流转输。如果在帧完成之前有超过1.5个字符时间的停顿时间,接收设备将刷新不完整的消息并假定下一字节是一个新消息的地址域。同样地,如果一个新消息在小于3.5个字符时间内接着前个消息开始,接收的设备将认为它是前一消息的延续。这将导致一个错误,因为在最后的CRC域的值不可能是正确的。所以在通讯端口初始化时,Timer1定时间隔设置为500ms。

2.4的CRC校验原理

CRC校验实现通信的RTU模式中,规定信息帧的最后两个字节用于传递CRC(Cyclic Redundancy Check,循环冗余校验)码。发送方将信息帧中地址域、功能码、数据域的所有字节按规定的方式进行位移并进行XOR(异或)计算,即可得到2字节的CRC码,并把包含CRC校验码的信息帧作为一连续的流进行传输。接收方在收到该信息帧时按同样的方式进行计算,并将结果同收到的CRC码的双字节比较,如果一致就认为通信正确,否则认为通信有误,从站将发送CRC错误应答。 RTU模式一般采用CRC-16冗余校验方法,CRC-16的校验码为16位(2字节),其中低字节在前,高字节在后。实现CRC校验有两种方法:根据CRC校验的定义公式进行计算,或者在程序中建立CRC校验值表。在程序中使用前者更容易实现,这里需要使用CRC生成多项式X16+X15+X2+1。该多项式对应的码组系数为18005H(16进制),去除最高位,对应的16位余数为8005H,即为CRC-16常数。CRC-16校验过程如下:将CRC寄存器的每一位预置为1;把该寄存器值与8bit的信息帧数据进行异或,结果存于该寄存器;对CRC寄存器从高到低进行移位,在最高位(MSB)的位置补零,而最低位(LSB,移位后已经被移出CRC寄存器)如果为1,则把寄存器与CRC-16常数进行异或,否则如果LSB为零,则无需进行异或。重复上述的由高至低的移位8次,第一个8bit数据处理完毕,用此时寄存器的值与下一个8bit数据异或并进行如前一样的8次移位。所有的字符处理完成后CRC寄存器内的值即为最终的CRC值。CRC添加到消息中时,先加入低字节,然后高字节。RTU模式的传输格式是1个数据位,2个停止位,没有奇偶校验位。通信数据安全由控制参数CRC-16码保证。RTU接收设备依靠接收字符间经过的时间判断一帧的开始,如果经过3个半的字符时间后仍然没有新的字符或者没有完成帧,接收设备就会放弃该帧,并设下一个字符为新一帧的开始,应用程序中,协议通信由通讯子模块实现,包含CRC-16计算与验证、信息帧的编制和分解。

3 MODBUS通讯应用

下面是基于单片机MSP430F149为主芯片的高压软起动装置液晶操控板,以此为例来说明MODBUS通讯的应用。MODBUS通讯主设备是DSP控制器,从设备是高压软起动装置液晶操控板。

3.1 液晶操控板MODBUS通讯测试码

/*****************************MODBUS通讯测试码*****************************

召唤发送:

00 06

00 00 00 0C 1E 88

电压、电流监测功能:

00 03

1C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0D 8D

故障显示功能:

00 02

18 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 20 34

*****************************MODBUS通讯测试码*****************************/

2:对以上测试码分别进行说明:

(1):召唤发送,参数设置功能:即控制器(DSP)与液晶屏(430)之间的通讯,是双向的。

00 06

00 00 00 0C 1E 88

以上这段代码是DSP传给430的召唤代码,含义(代码从左到右)是:00:设备代码。本系统中从设备只有高压软起动装置液晶操控板一个设备,故设备代码设置为00。06:功能码,实现何种功能(本例中,06是双向召唤发送功能,实现参数设置;03功能码实现电压、电流监测功能;02功能码实现故障显示功能)。00 00:是起始地址的高八位、低八位。00 0C:是DSP要求430回传字节的个数(不包括设备代码、功能码、数据个数代码、和校验代码),00是个数的高八位、0C是个数的低八位,0C是十六进制(转换成十进制是12,12是从“起动时间、额定电流——备用 3”的个数),1E 88:是CRC校验码。当DSP给430传

00 06

00 00 00 0C 1E 88

代码时,430先将这8个字节保存到一个临时数组RX[]中,然后分别对这8个字节进行判断(1E 88是校验查表得出来的代码),如果检验正确,就会把要回传给DSP的字节放到can_s[]数组中发出去,发送到DSP。以下代码就是430接到

00 06

00 00 00 0C 1E 88

判断正确后,回传给DSP的代码。00 06:是设备代码、功能码。18:回传的字节个数(十六进制18就是十进制24)。B6 8F是回传的校验代码。中间的24个字节(00),每两个字节(00)分别对应“起动时间、额定电流——备用 3”,之所以全是00 ,是因为没有设置参数,在液晶屏上设置参数,相应的高低位也跟着变化。

00 06

18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 B6 8F

(2):电压、电流监测功能:

00 03

1C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 0D 8D

同理00 03 1C是设备地址、功能码、DSP传给430的数据个数(1C是十六进制,转为十进制是28,包括1C在内,不包括00 03 0D 8D)。当430接收到

00 03

1C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0D 8D

时,会将接收到的字节分别存到可用数组里,在利用可用数组进行显示。

DSP下传:

00(设备代码)03(功能码)1C(个数14*2) 00H(电压高位)00L(电压低位)

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

00H(备用12高位)00L(备用12低位)CRCH(高位)CRCL(低位)

(3):故障显示功能:

00 02

18 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01

01 01 01 20 34

同理00 02 18是设备地址、功能码、DSP传给430的数据个数(18是十六进制,转为十进制是24,包括18算内,不包括00 02 20 34)。当430接收到

00 02

18 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 20 34

时,会将接收到的字节分别存到可用数组里,在利用可用数组进行显示。

DSP下传:

00(设备代码)02(功能码)18(个数) 00(启动中)。。。。。。。。。。。。。。。。。。。。。。

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。00(三相不平衡)CRCH(高位)CRCL(低位)

高压软起动装置液晶操控板

高压软起动装置液晶操控板

结语

由于MODBUS串行通讯技术有着实现简便、系统集成费用低以及通讯距离远(RS485/422)等特点,所以,在各个行业的应用也都很广泛。MODBUS通讯在现场给调试人员及编程人员也带来很大方便。因此,伴随着多种通讯方式可以融合并存的发展趋势,MODBUS串行通讯技术仍会保持广泛的应用前景。


上一页 1 2 下一页

关键词:MODBUS自动控制DSP

评论


相关推荐

技术专区

关闭