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

分享到:

1 引言

现代工业自动控制系统朝智能化、网络化和开放式结构的方向发展。实现不同种自动化设备之间通信是系统集成的关键。现场控制设备具有通信功能,便于构成工厂底层控制网络。通信标准的公开、一致,使系统具备开放性,设备间具有互可操作性。功能块与结构的规范化使相同功能的设备间具有互换性。控制功能下放到现场,使控制系统结构具备高度的分散性。利用现场总线技术,将符合同一标准的各种智能设备统一起来,彻底实现整个监测系统的分散控制,将提高系统集成度和数据传输效率、延长有效控制距离,并有利于提高系统抗干扰性能和扩展系统功能。基于MODBUS协议的串口通信是较常用的方式之一。

2 MODBUS协议简介

MODBUS协议具有侦错能力强、数据传输量大、实时性好等特点,因而成为目前自控领域使用非常广泛的通讯语言。本文通过一个应用实例介绍如何利用单片机编程实现在线通讯ModBUS消息的工作过程,在可视化语言环境下完成地址域、功能代码域、数据域的分配及CRC校验。MODBUS协议是应用于电子控制器的一种通讯语言。利用这个协议,控制器相互之间(例如485、232C等),控制器通过网络(例如以太网)和其他设备之间进行通讯。它定义了一种控制器能认识使用的消息结构,而不管它们是通过何种网络实现;描述的是控制器请求访问其它设备的过程,如何回应来自其它设备的请求,以及怎样侦错并记录;制定了消息域格局和内容的公共格式。MODBUS通讯规约按照主从设备来规定,如:主站一次可向一个或所有从站发送通信请求(或指令),主设备通过消息帧的地址域来选通从设备。主站发送的消息帧的内容和顺序为:从站地址(设备地址)、功能码、数据域(数据起始地址、数据量、数据内容)、CRC校验码;从站应答的信息内容和顺序与主站信息帧基本相同。MODBUS除了定义通信功能码之外,同时还定义了出错码,标志出错信息。主站接收到错误码后,根据错误的原因采取相应的措施。从站应答的数据内容依据功能码进行响应。例如功能代码03要求读取从站设备中保持寄存器的内容。

2.1 MODBUS通讯传输模式

MODBUS通讯实现有两种传输模式(ASCII或RTU),ABB公司的50系列PLC产品采用的是RTU(远程终端单元)模式,在消息中的每个8Bit字节包含两个4Bit的十六进制字符。这种方式的主要优点是:在同样的波特率下,可比ASCII方式传送更多的数据。

代码系统:

· 8位二进制,十六进制数0...9,A...F。

· 消息中的每个8位域都是一个两个十六进制字符组成每个字节的位。

· 1个起始位。

· 8个数据位,最小的有效位先发送。

· 1个奇偶校验位,无校验则无。

· 1个停止位(有校验时),2个Bit(无校验时)。

· 错误检测域,CRC(循环冗长检测)。

基于RS485的RTU模式MODBUS通讯格式为:

它定义了在这些网络上连续传输的消息段的每一位,以及决定怎样将信息打包成消息域和如何解码。

2.2 MODBUS通讯查询回应功能

(1)查询 查询消息中的功能代码告之被选中的从设备要执行何种功能。数据段包含了从设备要执行功能的任何附加信息。例如功能代码03是要求从设备读保持寄存器并返回它们的内容。数据段必须包含要告之从设备的信息:从何寄存器开始读及要读的寄存器数量。错误检测域为从设备提供了一种验证消息内容是否正确的方法。

(2)回应 如果从设备产生一正常的回应,在回应消息中的功能代码是在查询消息中的功能代码的回应。数据段包括了从设备收集的数据:象寄存器值或状态。如果有错误发生,功能代码将被修改以用于指出回应消息是错误的,同时数据段包含了描述此错误信息的代码。错误检测域允许主设备确认消息内容是否可用。

2.3 MODBUS消息帧

传输设备将MODBUS消息转为有起点和终点的帧,这就允许接收的设备在消息起始处开始工作,读地址分配信息,判断哪一个变量被选中,判知何时信息已完成。部分消息也能侦测到错误并且能设置为返回结果。使用RTU模式,消息发送至少要以3.5个字符时间的停顿间隔开始。传输的第一个域是变量地址。可以使用的传输字符是十六进制的0...9,A...F。网络设备不断侦测网络总线,包括停顿间隔时间内。当第一个域(地址域)接收到,每个设备都进行解码以判断是否发往自己的。在最后一个传输字符之后,一个至少3.5个字符时间的停顿标定了消息的结束。一个新的消息可在此停顿后开始。

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

2.4 MODBUS的CRC校验原理

CRC校验实现 MODBUS通信的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个半的字符时间后仍然没有新的字符或者没有完成帧,接收设备就会放弃该帧,并设下一个字符为新一帧的开始,应用程序中,MODBUS协议通信由通讯子模块实现,包含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通讯测试码*****************************/

继续阅读
恩智浦打造更安全、更智能的AI-IoT新引擎,机器学习新革命或将来临

为了实现保护物联网边缘设备和云至边缘连接安全的愿景,恩智浦半导体将强化的安全子系统和软件生态系统合并成安全执行环境(SEE),以增强可信性、隐私性和保密性。在公司新推出的基于Cortex-M33的解决方案LPC5500微控制器和i.MX RT600跨界处理器中,这些新安全特性形成主要亮点。

AI挥别云端牵手边缘,全新架构帮助其顺利入围

随着人工智能(AI)能力从云端转向边缘,芯片制造商必然会找到可行的方法,在更小、更高效,且成本更低的设备中实现各种AI功能,比如神经网络处理和语音识别等。

所谓的人工智能芯片,就是很多个DSP的叠加?

  所谓人工智能,根据1956年达特茅斯会议的定义,就是“让机器行为看起来就像是人所表现出来的智能行为一样”。不过虽然这句话理解起来很简单,想真正实现却非常困难。在人工智能的发展过程中,逐渐划分出两个发展阶段:强人工智能和弱人工智能。

“华睿1号”——填补了我国多核DSP领域的空白

“华睿1号”是中国电科14所牵头研制的国内首款具有国际先进水平的高端四核DSP芯片填补了我国多核DSP领域的空白。经过七年艰苦卓绝的奋斗,芯片设计、软件开发、平台研制、应用验证等工作顺利完成,目前华睿1号信号处理平台已成功应用于十多型雷达产品中,为我国雷达装备高端处理芯片国产化写下浓墨重彩的一笔。往昔历历在目,今朝点点于心。

比较CCD传感器与CMOS传感器的差异

噪点:由于CMOS每个感光二极管都需搭配一个放大器,如果以百万像素计,那么就需要百万个以上的放大器,而放大器属于模拟电路,很难让每个放大器所得到的结果保持一致,因此与只有一个放大器放在芯