




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、allen-bradley micro800tm 可编程控制器 micro830/830 modbus 技术培训 jan-23,2013,modbus 协议概述,modbus是modicon公司在上世纪70年代为modicon plc开发的一款通信协议。 该协议使用简单,多年来被很多第三方设备供应商采用。 属于半双工的主/从协议。 由主站启动通信(称为的“查询”),从站根据主站的要求作出响应。 从站地址范围:1 247 “0”地址用于广播 主站没有地址 不使用ack或nak应答机制 数据传送只是由主站发起查询,从站响应来完成 modbus 接收者根据“静音”时间间隔来判断数据包是否传送完毕,m
2、odbus 串行传输模式,modbus ascii 编码系统: 十六进制的ascii码09、af (每个ascii码只包含一个十六进制字符) 每个字包括: 1 个开始位、7个数据位、可选的校验位、12个停止位 错误校验: 纵向冗余校验 (lrc) 间隔:半个字符 容易实现 (lrc vs. crc) ,间隔较短 modbus rtu 编码系统: 8位二进制码表示的十六进制09、af (8位数据中包含二个十六进制数) 每个字包括: 1 个开始位、8个数据位、可选的校验位、12个停止位 错误校验: 循环冗余校验 (crc-16) 间隔:3.5个字符 更高效 (包含的数据位较多),容错能力强 (cr
3、c 校验,间隔时间很重要,一个modbus rtu 的信息帧期望在一个连续的数据流中被传输。如果在数据传输完成前出现一个时间大于预设的间隔时间的“静音”,那么接收者将丢弃不完整的数据,并且预期下一个字是下一个数据的地址信息,这将导致信息传输失败。 同理,如果下一个信息与上一个信息间隔小于预设的间隔,那么接收者会认为该信息是上一个信息的延续,这将导致校验出错,间隔时间很重要,因此,modbus的健壮性并不比过去的会出现虚假字符的无线电网络强,也不比延时不确定的多通道的卫星网络强。 许多使用 modbus 的人 (包括我们在内) ,都会遇到因为间隔时间设置不当而带来的麻烦,modbus 信息帧,a
4、scii 数据帧: 开头 地址 功能码 数据 lrc校验 结尾 :(3a) 2个字符 2个字符 n个字符 2个字符 crlf(0d0a) rtu数据帧: 开头 地址 功能码 数据 crc校验 结尾 t1-t2-t3-t4 8位 8位 n x 8位 16位 t1-t2-t3-t4,modbus 信息帧,从站) 地址 一个byte,有效值1247,0用于广播 功能代码 一个byte,有效值1255 告诉从站需要干什么 数据 包含从站与功能码相应的动作所必须使用的附加信息,如:起始地址、数据长度等 某些功能码不需要附加数据 (因此,modbus rtu包最小长度是4个byte,modbus 信息帧,
5、响应 从站响应时,在地址区发回自己的地址 从站响应时,发回原先的功能码,作为接收正确的响应 如果有错误,则从站响应时,会将原功能码的最高位置位 如果有错误,则从站响应时,会将错误代码放在数据区 典型的错误响应 01 非法功能: 出现从站不支持的功能码 02 非法数据地址:出现无效的数据地址 03 非法数据数值: 出现无效的数据数值,modbus 功能格式,modicon 处理器有4个主要数据存储区 (数据表) : 线圈 (输出位 读/写): 00001-09999, 010000-065536 输入 (输入位 只读): 10001-19999, 100000-165536 输入寄存器 (16位
6、字 -只读): 30001-39999, 310000-365536 保存寄存器 (16位字 - 读/写): 40001-49999, 410000-465536 注意:每组的数据范围都从“1”开始 然而,所有的modbus信息帧中的数据地址偏移量是“0”! 第一个出现的数据,其地址是“0”。例如: 线圈1 在modbus的地址是“0000” 线圈127 在modbus的地址是十六进制“007e” (十进制126) 保存寄存器40001在modbus的地址是“0000”, ( 4xxxx 或 4xxxxx 隐性地与功能码相对应,modbus 功能格式,这给文档描述带来混淆。你会发现如下针对保持
7、寄存器的描述,例如: 保持寄存器0 (从0开始的编址方式) 保持寄存器1 (从1开始的编址方式) 保持寄存器40001 (5位地址格式) ,或 400001 (6位地址格式) 数据长度 当读写多个数据时,表示数据长度的字会出现在数据和校验区之间,modbus 功能代码,功能代码 名称地址范围 (5 位 6 位) 01读线圈状态00001-09999, 000001-065536 02读输入状态10001-19999, 100001-165536 03读保持寄存器40001-49999, 400001-465536 04读输入寄存器30001-39999, 300001-365536 05强制(
8、写) 单个线圈00001-09999, 000001-065536 06预置(写) 单个寄存器40001-49999, 400001-465536 15强制(写) 多个线圈00001-09999, 000001-065536 16预置(写) 多个寄存器40001-49999, 400001-465536,micro830/850 串口设置,内置的串口设置方法与plug-in 串口模块(2080-serialisol) 的设置方法相同 (注意:高级设置时,窗口需要展开,micro830/850 串口设置,ccw release 2的通信驱动有4个可选:ascii、cip serial (缺省值)
9、、modbus rtu、shutdown: 可选比特率:1200, 2400, 9600, 19200, 38400(缺省值) , 校验类型可选:none (缺省值)、odd、even,串口modbus rtu 的设定,unit address: 0 (缺省值), 1247 ,是modbus rtu 从站地址。 注意:“0”地址用于广播,不用于modbus rtu 从站地址。modbus rtu 主站没有地址,可以设为“0”。 modbus role有三种可选: modbus rtu master (缺省值)、 modbus rtu slave、 modbus rtu auto (既可作主站,
10、也可作从站,串口modbus rtu 高级设定,media: rs232 (缺省值) 无握手 rs232 rts/cts 使用 rts/cts 握手 rs485 内置串口,需要1763-nc01 电缆连接 rts pre-delay/post-delay: 0ms (缺省值), 0-999,999,999ms 在传输前和传输后,rts被置位的最短提前和滞后时间 (只有当介质设为 rs232 rts/cts 时). data bits: 固定8位 stop bits: 1 (缺省)或 2,串口modbus rtu 高级设置,response timer: 200ms (缺省值), 0-999,9
11、99,999ms modbus rtu 主站等待从站响应的最长时间,该时间对所有的 msg_modbus 指令有效。如果在此时间内没有响应,则指令出现超时故障 (故障代码是55) 。 注意:对于一个硬接线的modbus 网络,该时间可以减少到 200ms(对应9600波特率),100ms(对应19,200波特率),50ms(对应38,400波特率),以减少无响应节点的等待时间。 broadcast pause:200ms (缺省值), 0-999,999,999ms modbus rtu 主站发完前一个广播后到下一个广播前的最短时间间隔,串口modbus rtu 高级设置,inter-char
12、 timeout:0ms (缺省值), 0-999,999,999ms modbus rtu 协议根据传输过程中“静音”时间是否超过“inter-char timeout”的值来判断一个数据包是否已完全被接收。数字0意味着modbus的该值为3.5个字符的时间间隔,串口诊断,在release 2,ccw 仍不能显示串口诊断计数。 当任何一个串口无论是发送数据还是接收数据,控制器的通信指示灯comm都会闪烁 (因此,在多串口情况下,无法判断哪个串口正在收发数据)。comm led指示灯闪烁最短时间是 250 毫秒,modbus 从站 mapping 设置,为了响应modbus 主站的读写命令,p
13、lc的变量必须映射到 modbus 地址中 双击variable name下方的单元格,打开变量选择窗口,modbus 从站 mapping 设置,选择变量,点击 ok,然后输入合适的modbus地址,(从1开始,有5位的和6位的二种格式) : 0 xxxx 或 0 xxxxx,输出/线圈 (最高到 09999 或 065536) 1xxxx 或 1xxxxx,输入/触点 (最高到 19999 或 165536) 3xxxx 或 3xxxxx,输入/只读寄存器 (最高到 39999 或 365536) 4xxxx 或 4xxxxx,保持/读写寄存器 (最高到 49999 或 465536,mo
14、dbus 从站 mapping 设置,ccw 会根据数据类型,自动填写已经mapping的地址数量,modbus 从站 mapping 设置,重要提示! 强烈推荐:连续使用modbus地址,中间不要留无用的地址。因为大多数modbus 主站设备(如pvc屏)为了提高效率,会对连续的数据块进行读写。例如,如果你只让pvc显示modbus 寄存器40001 和40009的值,那么,pvc会使用一条读指令将4000140009的值一次性全部读入,而不会分二次读。如果40002-40008 的值没有被map,则指令会出现02错误代码(非法数据地址,modbus 从站 mapping 设置,重要提示!
15、(接上页) 你可以在modbus主站里设置块读写的长度。对pvc来说,在控制器设置栏里,可以设置该参数,缺省值是32,modbus 从站 mapping 设置,限制: modbus mapping 表中,最多只能有200条 有些数据类型:time、date、string,不能map 任何数据类型的数组都不能map,modbus 主站 message 指令,为了使用modbus message 指令, 先将一个block拖放到梯形图中,然后选择 msg_modbus,modbus 主站 message 指令,黄色三角形警告,提示必须为指令块的输入端指定所需数据类型的常数或变量。输出端则不是必须的
16、,modbus 主站 message 指令,in msg_modbus 指令由in的上升沿触发,一旦触发,指令将一直执行,不管in后来是否为真,直到执行完成。 cancel 将cancel置为真是唯一终止msg_modbus执行的方法。通常你可以让该引脚常 false,以确保指令正常执行,modbus 主站 message 指令,localcfg 用于设置本地(主站),其数据类型是modbuslocpara,结构如下: localcfg.channel localcfg.triggertype localcfg.cmd localcfg.elementcnt,modbus 主站 message
17、 指令,创建一个类型为modbuslocpara的本地变量,并将其指定给msg指令的localcfg 输入。你可以为其设置初始值(如下图),也可以通过变量和逻辑程序来赋值。 mylocalcfg.channel=5 (通道号:左起第一个插槽) mylocalcfg.triggertype=0 (触发类型:非连续型) mylocalcfg.cmd=3 (命令:读保持寄存器) mylocalcfg.elementcnt=4 (数据长度:4 个字,modbus 主站 message 指令,targetcfg 用于设置远端(从站),其数据类型是 modbustarpara,数据结构如下: target
18、cfg.addr targetcfg.node,modbus 主站 message 指令,创建一个类型为modbustarpara的本地变量,并将其指定给msg指令的targetcfg 输入。你可以为其设置初始值(如下图),也可以通过变量来赋值。 mytargetcfg.addr=8449 mytargetcfg.node=100,modbus 主站 message 指令,localaddr 用于数据缓存,其数据类型是modbuslocaddr,该类型是一个由125个word组成的数组。对读命令而言,localaddr 用来储存从从站读来的数据(最多125个word)。对写命令而言,local
19、addr 存放需要写入从站的数据(最多123个word)。创建一个类型为modbuslocaddr的本地变量,并将其指定给msg指令的localaddr 输入,modbus 主站 message 指令,现在,msg_modbus 指令已经设置成功:通过插在左边第一个插槽的2080-serialisol plug-in 串口模块,用非连续触发的方式,读取从站的48449-48452保持寄存器,数据存放在myreaddata1mydata4,从站地址为100。 当msg指令成功执行完成后,输出q 将置为true (msg_modbus_1.q=1). 如果msg指令执行不成功,则输出q 保持fal
20、se,输出 error 置为true (msg_modbus_1.error=1),同时输出 errorid 给出十进制的错误代码,modbus 主站 message 指令,在连续型触发模式下(mylocalcfg.triggertype=1), 输出q 和error 保持false,errorid 为 0 每个串口(48 点的控制器可支持5个plug-in串口模块,以及一个内置的串口) 拥有自己独立的数据收发缓冲区,modbus 主站 message 指令,msg_modbus 成功执行完毕: msg_modbus 执行出错,modbus 主站 message 指令,故障码及说明,message 指令编程示例,基本的 msg 梯形图逻辑: 非连续型 每个in的上升沿触发一次 当msg指令被触发时,其输出端 q 和 error 将被复位,m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年综合类-中医诊断学-第六章 高中数学学科知识-方程、不等式、数列与极限历年真题摘选带答案(5套单选100题合辑)
- 家庭卫生服务管理办法
- 安全环保设施管理办法
- 山西畜禽养殖管理办法
- 太原住宅绿化管理办法
- 富阳农村住宅管理办法
- 对外机械加工管理办法
- 大学高端会议管理办法
- 名单实行标签管理办法
- 学院宣传思想管理办法
- 中暑急救培训课件
- 2025上海崇明现代农业园区开发限公司招聘39人易考易错模拟试题(共500题)试卷后附参考答案
- 《SOP编写培训》课件
- 2025年无人机课件教案设计
- 《纺织工艺》课件
- 厨房规范参观流程
- 留学服务流程
- 2024年中考语文-课内文言文阅读专题10 《陋室铭》 (模拟)(含答案)
- .高速公路运营企业双重预防机制建设指导手册
- 2024年中国创新方法大赛考试题库(含答案)
- 中建幕墙施工专项方案
评论
0/150
提交评论