基于CP430的MODBUS通讯程序设计

发布时间 : 星期四 文章基于CP430的MODBUS通讯程序设计更新完毕开始阅读

江苏科技大学本科毕业设计(论文)

写一组寄存器的数据内容。

当服务器对客户机响应时,它使用功能码域来指示正常(无差错)响应或者出现某种差错(称为异常响应)。对于一个正常响应来说,服务器仅对原始功能码响应。

图2-5Modbus事物处理(无差错)

图2-6Modbus事物处理(异常响应)

2.3两种传输方式

控制器能设置为两种传输模式(ASCII或RTU)中的任何一种在标准的Modbus网络通信。用户选择想要的模式,包括串口通信参数(波特率、校验方式等),在配置每个控制器的时候,在一个Modbus网络上的所有设备都必须选择相同的传输模式和串口参数。

2.3.1 RTU模式

当控制器设为在Modbus网络上以RTU(远程终端单元)模式通信,在消息中的每个8Bit字节包含两个4Bit的十六进制字符。这种方式的主要优点是:在同样的波特率下,可比ASCII方式传送更多的数据。 代码系统

8

江苏科技大学本科毕业设计(论文)

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

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

?1个起始位

?8个数据位,最小的有效位先发送 ?1个奇偶校验位,无校验则无

?1个停止位(有校验时),2个Bit(无校验时) 错误检测域

? CRC(循环冗长检测)

2.3.2 ASCII传输模式

当控制器设为在Modbus网络上以ASCII(美国标准信息交换代码)模式通信,在消息中的每个8Bit字节都作为两个ASCII字符发送。这种方式的主要优点是字符发送的时间间隔可达到1秒而不产生错误。 代码系统

?十六进制,ASCII字符0...9,A...F

?消息中的每个ASCII字符都是一个十六进制字符组成 每个字节的位

?1个起始位

?7个数据位,最小的有效位先发送 ?1个奇偶校验位,无校验则无

?1个停止位(有校验时),2个Bit(无校验时) 错误检测域

?LRC(纵向冗长检测)

2.3.2.1 ASCII报文帧

9

江苏科技大学本科毕业设计(论文)

由发送设备将Modbus 报文构造为带有已知起始和结束标记的帧。这使设备可以在报文的开始接收新帧,并且知道何时报文结束。不完整的报文必须能够被检测到而错误标志必须作为结果被设置。

报文帧的地址域含有两个字符。

在 ASCII 模式, 报文用特殊的字符区分帧起始和帧结束。一个报文必须以一个‘冒号’ ( : ) (ASCII 十六进制3A )起始,以‘回车-换行’ (CR LF) 对(ASCII十六进制0D 和0A) 结束。

对于所有的域,允许传送的字符为十六进制0–9, A–F (ASCII 编码)。设备连续的监视总线上的‘冒号’ 字符。当收到这个字符后,每个设备解码后续的字符一直到帧结束。

报文中字符间的时间间隔可以达一秒。如果有更大的间隔,则接受设备认为发生了错误。

下图显示了一个典型的报文帧

必然的, Modbus ASCII 帧的最大尺寸为513 个字符

图2-7ASCII报文帧

2.3.2.2 ASCII传输模式状态图

10

江苏科技大学本科毕业设计(论文)

2-8ASCII传输状态图

上面状态图的一些解释:

? “空闲” 态是没有发送和接收报文要处理的正常状态。

? 每次接收到 \字符表示新的报文的开始。如果在一个报文的接收过程中收到该字符,则当前地报文被认为不完整并被丢弃。而一个新的接收缓冲区被重新分配。

? 检测到帧结束后,完成LRC 计算和检验。然后,分析地址域以确定帧是否发往此设备,如果不是,则丢弃此帧。为了减少接收处理时间,地址域可以在一接到就分析,而不需要等到整个帧结束。

2.4 LRC校验

使用ASCII模式,消息包括了一基于LRC方法的错误检测域。LRC域检测了消息域中除开始的冒号及结束的回车换行号外的内容。

LRC域是一个包含一个8位二进制值的字节。LRC值由传输设备来计算并放到消息帧中,接收设备在接收消息的过程中计算LRC,并将它和接收到消息中LRC域中的值比较,如果两值不等,说明有错误。

LRC方法是将消息中的8Bit的字节连续累加,丢弃了进位。

LRC简单函数如下:

static unsigned char LRC(auchMsg,usDataLen)

11

联系合同范文客服:xxxxx#qq.com(#替换为@)