基于CP430的MODBUS通讯程序设计 联系客服

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

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

unsigned char *auchMsg ; /* 要进行计算的消息 */ unsigned short usDataLen ; /* LRC 要处理的字节的数量*/ { unsigned char uchLRC = 0 ; /* LRC 字节初始化 */ while (usDataLen--) /* 传送消息 */ uchLRC += *auchMsg++ ; /* 累加*/ return ((unsigned char)(-((char_uchLRC))) ; }

2.5功能码定义 2.5.1 功能码分类

有三类MODBUS功能码。它们是: (1)公共功能码

? ? 是较好地被定义的功能码, ? ? 保证是唯一的,

? ? MODBUS组织可改变的, ? ? 公开证明的,

? ? 具有可用的一致性测试, ? ? MB IETF RFC中证明的,

? ? 包含已被定义的公共指配功能码和未来使用的未指配保留供功能码。

(2)用户定义功能码

? ? 有两个用户定义功能码的定义范围,即65至72和十进制100至110。 ? ? 用户没有MODBUS组织的任何批准就可以选择和实现一个功能码 ? ? 不能保证被选功能码的使用是唯一的。

? ? 如果用户要重新设置功能作为一个公共功能码,那么用户必须启动RFC,以便将改变引入公共分类中,并且指配一个新的公共功能码。

(3)保留功能码

? 一些公司对传统产品通常使用的功能码,并且对公共使用是无效的功能

2.5.2 功能码定义表

ModBus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。其系统结构既包括硬件、亦包括软件。它可应用于各种数据采集和过程监控。下表2-1是ModBus的功能码定义。

表2-1 功能码定义表 功能码 01 名称 读取线圈状态 作用 取得一组逻辑线圈的当前状态(ON/OFF) 12

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

02 03 04 05 06 07 读取输入状态 读取保存寄存器 读取输入寄存器 设置单线圈 预设单寄存器 读取异常状态 取得一组开关输入的当前状态(ON/OFF) 在一个或多个保持寄存器中取得当前的二进制符 在一个或多个输入寄存器中取得当前的二进制值 强制一个逻辑线圈的通断状态 把具体二进制值装入一个保持寄存器 取得8个内部线圈的通断状态,这8个线圈的地址由控制器决定,用户逻辑可以将这些线圈定义,以说明从机状态,短报文适宜于迅速读取状态 把诊断校验报文送从机,以对通信处理进行评鉴 使主机模拟编程器作用,修改PC从机逻辑 08 09 10 回送诊断校验 编程(只用于484) 控询(只用于484) 可使主机与一台正在执行程序任务从机通信。探寻该从机是否已完成其操作任务,仅在含有功能码9的报文发送后,本功能码才发送 读取时间计数 读取通信事件记录 编程(184/384 484 584) 可使主机发出单询问,并随即判定操作是否成功,尤其是该命令或其他应答产生通信错误时 可使主机检索每台从机的Modbus事物处理通信事件记录。 可使主机模拟编程器功能修改PC从机逻辑 11 12 13 14 探寻(184/384 484 可使主机与正在执行任务的从机通信,定期控询该从机584) 是否已完成其程序操作,仅在含有功能13的报文发送后,本功能码才发送 强置多线圈 预置多寄存器 报告从机标识 (884和MICRO 84) 重置通信链路 读取通用参数(584L) 写入通用参数(584L) 保留扩展功能备用 保留以备用户功能所用 非法功能 保留 保留 强置一串连续逻辑线圈的通断 把具体的二进制值装入一串连续的保持寄存器 可使主机判断编址从机的类型及该从机运行指示灯的状态 可使主机模拟编程功能,修改PC状态逻辑 发生非可修改错误后,是从机复位于已知状态,可重置顺序字节 显示扩展存储器文件中的数据信息 把通用参数写入扩展储存文件,或修改之 留作用户功能的扩展编码 留作内部作用 用于异常应答 15 16 17 18 19 20 21 22-64 65-72 73-119 120- 127 128- 255 ModBus网络只是一个主机,所有通信都由他发出。网络可支持247个之多的远程从属控制器,但实际所支持的从机数要由所用通信设备决定。采用这个系统,各PC可以和中心主机交换信息而不影响各PC执行本身的控制任务。表2-2是ModBus各功能码对应的数据类型。

13

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

表2-2功能码与数据类型对应表

代码 01 02 03 04 05 06 08 15 16 17

功能 读 读 读 读 写 写 N/A 写 写 读 数据类型 位 位 整型、字符型、状态字、浮点型 整型、状态字、浮点型 位 整型、字符型、状态字、浮点型 重复“回路反馈”信息 位 整型、字符型、状态字、浮点型 字符型 2.6 Modbus异常响应

当客户机设备向服务器设备发送请求时,客户机希望一个正常响应。从主站询问中出现下列四种可能事件之一:

? 如果服务器设备接收到无通信错误的请求,并且可以正常地处理询问,那么服务器设备将返回一个正常响应。

? ? 如果由于通信错误,服务器没有接收到请求,那么不能返回响应。客户机程序将最终处理请求的超时状态。

? ? 如果服务器接收到请求,但是检测到一个通信错误(奇偶校验、LRC、CRC、...),那么不能返回响应。客户机程序将最终处理请求的超时状态。 ? ? 如果服务器接收到无通信错误的请求,但不能处理这个请求(例如,如果请求读一个不存在的输出或寄存器),服务器将返回一个异常响应,通知用户错误的本质特性。

异常响应报文有两个与正常响应不同的域:

功能码域:在正常响应中,服务器利用响应功能码域来应答最初请求的功能码。所有

14

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

功能码的最高有效位(MSB)都为0(它们的值都低于十六进制80)。在异常响应中,服务器设置功能码的MSB为1。这使得异常响应中的功能码值比正常响应中的功能码值高十六进制80。

通过设置功能码的MSB,客户机的应用程序能够识别异常响应,并且能够检测异常码的数据域。

数据域:在正常响应中,服务器可以返回数据域中数据或统计表(请求中要求的任何报文)。在异常响应中,服务器返回数据域中的异常码。这就定义了产生异常的服务器状态。

2.7本章小结

本章介绍了Modbus协议内容,两种传输方式,功能码及异常响应,使之更加深刻的理解Modbus通讯协议。

15