|
|
|
发表人:sanleosan |
发表时间:2008/12/26 18:20:00 |
|
|
本栏论题: |
求助关于Modbus通讯协议编程问题!! [4315] |
各位大虾,小女子遇到一道题目如下,要实现“ModBus通讯规约点表”点表的数据采集下载,即编写通讯程序读取点表数据。给出设计的流程图,写出代码实现的过程(编程语言不限)
偶是新手,以前没遇见过这方面的题目,请各位大虾帮帮忙,谢谢程序(最好发到310189939@qq.com),或者指点一二,小女子在此谢谢!
“ModBus通讯规约点表”内容如下:
MODBUS通讯协议:
智能MCC控制保护装置提供了标准的RS-485通讯接口及ModBus通讯协议,这个通讯协议已广泛被国内外电力行业及工控行业作为系统集成的标准。
通讯数据的类型及格式:
信息传输为异步方式,并以字节为单位。在主站和从站之间传递的通讯信息是11位的字格式:
字格式(串行数据) 11位二进制
起始位 1位
数据位 8位
奇偶校验位 1位:偶校验位
停止位 1位:
波特率 9600
● 通讯数据(信息帧)格式
数据格式:地址码 功能码 数据区 错误校检
数据长度:1字节 1字节 N字节 16位CRC码(冗余循环码)
★ 注:1、1个字节由8位二进制数组成(既8 bit)。
2、ModBus是Modicon公司的注册商标。
3、“从机”在本文件中既为智能MCC控制保护装置。
一、通讯信息传输过程:
当通讯命令由发送设备(主机)发送至接收设备(从机)时,符合相应地址码的从机接收通讯命令,并根据功能码及相关要求读取信息,如果CRC校验无误,则执行相应的任务,然后把执行结果(数据)返送给主机。返回的信息中包括地址码、功能码、执行后的数据以及CRC校验码。如果CRC校验出错就不返回任何信息。
1.1 地址码:
地址码是每次通讯信息帧的第一字节(8位),从1到255。这个字节表明由用户设置地址的从机将接收由主机发送来的信息。每个从机都必须有唯一的地址码,并且只有符合地址码的从机才能响应回送信息。当从机回送信息时,回送数据均以各自的地址码开始。主机发送的地址码表明将发送到的从机地址,而从机返回的地址码表明回送的从机地址。相应的地址码表明该信息来自于何处。
智能MCC控制保护装置地址的设定方法:
进入设置定值状态(详见使用手册),按“选择”键,当功能码为“P-”时
按“加”、“减”键改变地址,按“确认”键后,执行存储返回。(详见使用手册)
1.2 功能码:
是每次通讯信息帧传送的第二个字节。ModBus通讯规约可定义的功能码为1到127。智能MCC控制保护装置仅用到其中的一部分功能码。作为主机请求发送,通过功能码告诉从机应执行什么动作。作为从机响应,从机返回的功能码与从主机发送来的功能码一样,并表明从机已响应主机并且已进行相关的操作。
表8.1 MODBUS部分功能码
功能码 定 义 操 作(二进制)
02 读开关量输入 读取一路或多路开关量状态输入数据
01 读开关量输出 读取一路或多路开关量输出状态数据
04 读输入寄存器 读取一个或多个寄存器的数据
05 写开关量输出 控制一路继电器“合/分”输出
1.3 数据区:
数据区包括需要由从机返送何种信息或执行什么动作。这些信息可以是数据(如:开关量输入/输出、模拟量输入/输出、寄存器等等)、参考地址等。例如,主机通过功能码03告诉从机返回寄存器的值(包含要读取寄存器的起始地址及读取寄存器的长度),则返回的数据包括寄存器的数据长度及数据内容。对于不同的从机,地址和数据信息都不相同(应给出通讯信息表)。
智能MCC控制保护装置采用Modbus通讯规约,主机(PLC、RTU、PC机、DCS等)利用通讯命令(功能码04),可以任意读取其数据寄存器(其数据信息表详见附录)。
二、MODBUS功能码简介
2.1 功能码“02”:读1路或多路开关量状态输入
编码(地址) 说明
10001(0000) 装置运行状态(1—运行B,0---没有运行B)
10002(0001) 装置运行状态(1—运行A,0---没有运行A)
10003(0002) 可编程输入1状态(1—外接接点闭合,0---外接接点没有闭合)
10004(0003) 可编程输入2状态(1—外接接点闭合,0---外接接点没有闭合)
10005(0004) 可编程输入3状态(1—外接接点闭合,0---外接接点没有闭合)
10006(0005) 可编程输入4状态(1—外接接点闭合,0---外接接点没有闭合)
10007(0006) 可编程输入5状态(1—外接接点闭合,0---外接接点没有闭合)
10008(0007) 备用
10009(0008) 装置操作状态(1—远方,0—就地)
10010(0009) 装置工作状态(1—备用状态,0—工作状态)
10011(000A) 过热保护动作(1—动作,0---没有动作)
10012(000B) 接地保护动作(1—动作,0---没有动作)
10013(000C) 备用
10014(000D) 事故按钮(1—事故按钮接点闭合,0—事故按钮接点断开)
10015(000E) 过流
例如:主机要读取地址为01,开关量D1—D4的输入状态。
主机发送的报文格式:
主机发送 字节数 发送的信息 备 注
从机地址 1 01 发送至地址为01的从机
功能码 1 02 读开关量输入状态
起始BIT位 2 0000 起始BIT位地址为0000
读数据长度 2 0004 读取4路开关量输入状态位
CRC码 2 79C9 由主机计算得到CRC码
从机响应返回的报文格式:
从机响应 字节数 返回的信息 备 注
从机地址 1 01 来自从机01
功能码 1 02 读开关量输入状态
数据长度 1 01 1个字节(8个BIT位)
DI状态数据 1 0B DI寄存器内容
CRC码 2 E04F 由从机计算得到CRC码
2.2 功能码“04”:读多路寄存器输入
编码(地址) 说明
30001(0000) A相电流=30001 /ctA
30002(0001) B相电流=30002 /ctA
30003(0002) C相电流=30003 /ctA
30004(0003) 零序电流=30004 /ctA
30005(0004) 正序电流=30006 /ctA
30006(0005) 负序电流=30007 /ctA
30007(0006) 电机过热百分比 (两位小数)
30008(0007)
30009(0008)
30010(0009)
30011(000A)
注: 装置选用CT1时ctA=1000;CT2时ctA=100;CT3时ctA=10;CT4时ctA=1;
例如:主机要读取地址为01,起始地址为0116的3个从机寄存器数据。
从机数据寄存器的地址和数据为:
主机发送的报文格式:
主机发送 字节数 发送的信息 备 注
从机地址 1 01 发送至地址为01的从机
功能码 1 04 读取寄存器
起始地址 2 0006 起始地址为0006
数据长度 3 0003 读取3个寄存器(共6个字节)
CRC码 2 500A 由主机计算得到CRC码
从机响应返回的报文格式:
从机响应 字节数 返回的信息 备 注
从机地址 1 01 来自从机01
功能码 1 04 读取寄存器
读取字 1 06 3个寄存器共6个字节
寄存器数据1 2 1784 地址为0006内存的内容
寄存器数据2 2 1780 地址为0007内存的内容
寄存器数据3 2 178A 地址为0008内存的内容
CRC码 2 19A1 由从机计算得到CRC码
|
|
以下是关于《求助关于Modbus通讯协议编程问题!! 》论题的回复(共3篇) |
为客户量身定制专业系统方案,设计-选型-开发-实施-维护一条龙服务;提供各种通讯接口的可程控仪器仪表的远程监控,精确控制远程IO,个性化人机界面,电子地图,数据库管理,实时报警,历史查询; 各种通讯接口(TCP,COM,USB,GPIB...)软件编写; 专业OPC,SPC等软件开发; 实用办公系统软件开发; 实验室软件开发; 数据库软件开发; 方案制作; 数据采集;系统集成; 客户定制专用软件开发; 欢迎洽谈合作,客户至上,价格公道,满意为止!
深圳精控系统科技有限公司
http://acselec.uni86.net/
徐工 :13088853275
QQ: 422690987
|
|
本人现有北京纵横科技的hmibuilder组态软件150点,中间变量不算点,现欲清仓出售,1000块一套,正版,有软件狗,包装盒里有详细的说明书和功能手册,有兴趣的qq联系。
qq:1455457295
|
|
|