版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、modbus协议在s7-200 plc与pc机通信中的应用定义使用modbus通信i办议是modicon公司提出的一种报文传输协议,它广泛应 用于工业控制领域,并已经成为一种通用的行业标准。不同厂商提供的控制设置 可通过modbus协议连接成通信网络,从而实现集屮控制。根据传输网络类型的区别,modbus通信协议又分为串行链路上的modbus 和基于tcp/ip协议的modbusomodbus串行链路i办议只有一个主站,可以有1-247个从站。modbus通信只 能从主站发起,从站在未收到主站的请求时,不能发送数据或互相通信。modbus串行链路协议的通信接口可采用rs-485接口,也可使用r
2、s-232c 接口。具中rs-485接口可用于远距离通信,rs-232c接口只能用于短距离通信。modbus报文传输格式:modbus寻址modbus地址通常是包含数据类型和偏移量的5个或6个字符值。第一个或 前两个字符决定数据类型,最后的四个字符时符合数据类型的一个适当的值。 modbus主设备指令能将地址映射至止确的功能,以便发送到从站。1 modbus主站寻址。modbus主设备指令支持卜列modbus地址:(1) 00001至09999是离散输出(线圈)。(2) 10001至19999是离散输入(触点)。(3) 30001至39999是输入寄存器(通常是模拟量输入)。(4) 40001
3、至49999是保持寄存器。所有modbus地址均以1为单位,表示第一个数据值从地址1开始。有效地 址范围将取决于从站。不同的从站将支持不同的数据类型和地址范围。2 modbus从站寻址modbus从站指令支持以下地址:(1) 000001至000128是实际输岀,对应于q0.0-q15.7o(2)010001至010128是实际输入,对应于10.0115.7。(3)030001至030032是模拟输入寄存器,对应于aiw0至aiw2。(4)040001至04xxxx是保持寄存器,对应于v区。modbus从站亦议允许你对modbus主站可访问的输入、输出、模拟输入和 保持寄存器(v去)的数量进行
4、限定ombusjnit指令的参数maxiq指定modbus 主站允许访问的实际输入或输出(i或q)的最人数量。mbusjnit指令的maxai 参数指定modbus主站允许访问的输入寄存器(aiw)的最人数量。mbusjnit 指令的maxhold参数指定modbus主站允许访问的保持寄存器(v存储区字)的 最大数量。modbus地址与s7-200地址对应关系如下表所示。000001qo.o00(x)02q0.1000003q0.2 000127q15.6000128q15.701000110.001(x)0210.101000310.2 010127115.6010128115.703000
5、1aiwo03(x)02aiw2030003aiw4 030032aiw62040001holdstart040002holdstart+2040003holdstart+4 04xxxxholdstart+2x( xxxx-1)modbus寻址:ascii模式和rtu模式modbus通信协议有ascii和rtu (远程传输单元)两种报文传输模式。modbus网络屮所有的站必须采用相同的传输模式和串口参数。ascii模式采用lrc (纵向冗余校验)方式进行校验,其报文格式如下表所示: 地址功能 码数量 字节 数数据1 数据nlrc 高字|jlrc 低字|j回车换行ascii模式中,报文帧中的何
6、:个8位字节都转换为两个ascii码发送。报文 屮的每个ascii码都由16进制字符组成,传输的每个字符都包括1个起始位、 7个数据位、1个奇偶校验位、1个停止位;如果没有校验位,则有两个停止位。lrc计算时不包括开始的冒号符、lrc本身和回车换行符。rtu模式的报文格式如下表所示:地址功能码数据1 数据ncrc高字 节crc低字 节地址:modbus地址,1个字节。功能码:modbus功能代码,1个字符o modbus协议支持的功能码16条(1-16), 具中西门子modbus rtu协议库支持最常用的8条。信息数据:n个字节,格式与功能码有关。crc:循环兀余校验,两个字节。西门子modb
7、us rtu协议库支持最常用的8条功能码如下表所示:功能码描述1读取单个/多个线圈的实际输出状态。功能1返冋任意数量输出点的 接通/断开状态(q)。2读取单个/多个线圈的实际输入状态。动能2返冋任意数量的输入点 的接通/断开(do3多个保持寄存器,功能3返回v存储器的内容。保持寄存器在modbus 下是字类型,在一个请求中最多可读120个字。4读单个/多个输入寄存器,返回模拟输入值。5写单个线圈(实际输出)。功能5将实际输出点设置为指定值。改输 出点不是被强制,用户程序可以車写由modbus的请求而写入的值。6写单个保持寄存器。功能6写一个单个保持寄存器的值到s7-200的 v存储区。15写多
8、个线圈(实际输出)。动能15写多个实际输出值到s7-200的q 映像区。起始输出点必须是一个字节的开始(如,q0.0或q2.0),并 且要写的输出的数量是8的倍数。这是modbus从站协议指令的限定。 这些点不是被强制,用八程序可以重写山modbus的请求而写入的值。16写多个保持寄存器。功能16写多个保持寄存器到s7-200的v区。在一个请求屮最多可以写120字。modbus报文传输格式rtu模式下,报文中的每8位字节被转化为两个16进制字符,然后以字节 为单位进行传输,并采用crc (循环兀余校验)方式进行校验。rtu模式的有点 在于同波特率下有着比ascii模式更高的传输效率。目前支持m
9、odbus通信的dcs系统和过程仪表大都采用基于串行接口的 modbus rtu模式,西门子提供了针对西门子plc modbus rtu通信的协议库。如果要在西门子plc上实现modbus ascii模式通信,用户可根据相关协议 规定利用口出口模式口主编程实现。西门子专门为modbus rtu通信开发了指令库,极大地简化了 modbus rtu 通信的开发,以便于快速实现相关应用。通过modbus rtu从站指令库,是的 s7-200可作为modbus rtu中的从站设备集成到modbus网络中,以实现与modbus 主站设备的通信。而在最近推出的step7-micro/win sp5升级包中
10、,西门子又增加了 modbus rtu master指令库,使得s7-200 cpu可作为modbus主站,实现与modbus rtu 从站的通信任务。耍使用modbus指令库必须注意以下四点:(1) 使用modbus指令库前,需要将其安装到step7-micro/win中, step7-micro/win必须为v3. 2或以上版木。(2) s7-200 cpu必须是固化程序修订版2. 00或最好支持modbus主设备i办 议库(cpu mlfb 21x-2xx23-0xb0)o(3) 由于冃前已经推出了针对端口 0和端口 1的modbus rtu主站指令库 modbus master por
11、to 和 modbus master portl > 以及针对端口 0 的 modbus rtu 从站指令库,故可利用指令库实现端口 0的modbus rtu主/从站通信。(4) 一日.cpu端口被利用于modbus rtu主/从站|办议通信时,该端口就无 法用于任何其它用途,包括与step7-micro/win通讯。modbus主站协议指令:西门子modbus主站协议库包括两条指令:mbus.ctrl指令和mbus_msg 指令。mbus.ctrl指令用于初始化主站通信,mbus.msg指令(或用于端口 1 的mbus_msg_p1)用于启动对modbus从站的请求并处理应答。mbus
12、.ctrl扌旨令用于s7-200端口 0的mbus.ctrl指令(或用于端口 1 的mbus_ctrl_p1指令)可初始化、监视或禁用modbus通讯。在使用 mbus_msg指令之前,必须正确执行mbus.ctrl指令。指令完成后立即设 定“完成”位,才能继续执行下一条指令。mbus.ctrl指令在每次扫描且en输入打开时执行。mbus.ctrl指令必 须在每次扫描时(包括首次扫描)被调用,以允许监视随mbus.msg指令启动 的任何突出消息的进程。除非每次调用mbus_ctrl,否则modbus主设备协议 将不能正确运行。西门了 en:指令使能位。mode: “模式”参数。“模式”输入数值
13、选择通讯协议输入值1将cpu端口 分配给modbus协议并启用改协议。输入值0将cpu端口分配给ppi系统协议, 并禁用modbus协议。baud: u波特率”参数。mbus.ctrl指令支持的波特率为1200, 2400, 4800, 9600, 19200, 38400, 57600 或 115200bit/s。parity:"奇偶校验”参数。“奇偶校验”参数被设为与modbus从站奇偶校验 相匹配。所有设置使用一个起始位和一个停止位。可接受的数值为:0无奇偶校验1奇校验2偶校验timeout: 时”参数。“超时”参数设为等待来自从站应答的毫秒时间数。 “超时”数值可以设置的范i
14、韦i为1毫秒到32767毫秒。典型值是1000毫秒 (1秒)。“超时”参数应该设置的足够大,以便从站有时间对所选的波特率 作出应答。done: mbus_ctrl指令成功完成时,“完成”输出为1,否则为0。error: “错误”输出代码。“错误”输出代码由反应执行该指令的结果的特定 数字构成。“错误”输出代码的含义如下:0 无错误1奇偶校验选择无效2波特率选择无效3 超时选择无效4模式选择无效上述参数支持的操作数和数据类型如下表所示。输入/输出操作数数据类型modei, q, m, s, sm, t, c, v,l布尔baudvd, id, qd, md, smd,ld, ac, consta
15、nt, *vd, *ac, *ld双字parityvb, ib, qb, mb, smb,lb, ac, constant, *vd, *ac, *ld匚-1 !timeoutvw, iw, qw, mw, smw,lw, ac, constant, *vd,*ac, *ld字donei, q, m, s, sm, t, c, v,l布尔eitorvb, ib, qb, mb, smb, lb, ac, *vd, *ac, *ld字节mbus.msg 指令mbus.msg指令(或用于端口 1的mbus_msg_p1)用于启动对modbus 从站的请求并处理应答。当en输入和“首次”输入都为1时
16、,mbus_msg指令启动对modbus从 站的请求。发送请求、等待应答、并处理应答通常需要多次扫描。en输入必须 打开以启用请求的发送,并应该保持打开直到“完成”位被置位。必须注意的是,一次只能激活一条mbus.msg指令。如果启用了多条 mbus_msg指令,则将处理所执行的第一条mbus_msg指令,z后的所有mbus_msg指令将屮止并产生错误代码6oen:指令使能位。first: “首次”参数。“首次”参数应该在有新请求耍发才打开以进行一次扫 描。“首次”输入应当通过一个边沿检测元素(例如上升沿)打开,这将导致请 求被传送一次。slave:"从站”参数。“从站”参数是mod
17、bus从站的地址,允许的范围是0 到247。地址0是广播地址,只能用于写请求。不存在对地址0的广播请求的应 答。并非所有的从站会支持广播地址,s7-200 modbus从站办议库不支持广播地 址。rw: “读写”参数。“读写”参数指定是否要读取或写入该消息。“读取”参 数允许使用下列两个值:0读,1 写。add地址”参数。“地址”参数是起始的modbus地址。允许使用下列収 值范围:00001至09999是离散输出(线圈)10001至19999是离散输入(触点)30001至39999是输入寄存器40001至49999是保持寄存器其屮离散输出(线圈)和保持寄存器支持读取和写入请求,而离散输入(触
18、 点)和输入寄存器支持读取请求。“地址”的具体值应与modbus从站支持的地址一致。count: “计数”参数。“计数”参数指定在该请求中读或写入的数据元素的 数日。“计数”数值是位数(对于位数据类型)和字数(对于字数据类型)。根据modbus协议,“计数”参数与modbus地址存在以下对应关系:地址计数oxxxx“计数”是要读取或写入的位数。lxxxx“计数”是要读取的位数。3xxxx“计数”是要读取的输入寄存器的字数。4xxxx“计数”是要读取或写入的保持寄存器的字数。mbus_msg指令将读取或写入最大120个字或1920他(240字节的数据)。“计数”的实际值还取决于modbus从站中
19、的限制。dataptr: “dataptr” 参数。“dataptr” 参数是指向 s7-200cpu 的 v 存储器中 与读取或写入请求相关的数据的间接地址指针。对于读取请求,dataptr应指向 用于存储从modbus从站读取的数据的第一个cpu存储器位置。对于写入请求, dataptr应指向要发送到modbus从站的数据的第一个cpu存储器位置。done:完成输出。完成输出在发送请求和接收应答时关闭。“完成”输出在 应答完成或mbus_msg指令因错误而屮止时打开。error: “错误”输出仅当“完成”输出打开时有效。低位编号的错误代码(1 到8)是由mbus_msg指令检测到的错误。这
20、些错误代码通常指示与 mbus_msg指令的输入参数有关的问题,或接收来自从站的应答时出现的问 题。奇偶校验和crc错误指示存在应答但是数据未正确接收。这通常是曲电气 故障(例如连接有问题或者电噪声)引起的。髙位编号的错误代码(从101开始)是由modbus从站返回的错误。这些错 误指示从站不支持所请求的功能,或者所请求的地址(或数据类型或地址范围) 不被modbus从站支持。mbus.msg指令错误代码含义如下所示:mbus msg错误代码说明0无错误1应答时奇偶校验错误:权当使用偶校验或奇 校验时才会发生。传输被干扰,可能会收到 不正确的数据。该错谋通常是由电气故障(例 如错误接线或者彫响
21、通讯的电噪声)引起的。2保留位,暂未启用。3接收超时:在“超时”时间内,没有来自从 站的应答,nj能有以下一些原因:为从站的 电气连接有问题、主设备和从站设置为不同 的波特率/奇偶校验设置,以及错误的从站地 址。4请求参数出错:一个或多个输入参数(从站、 读写、地址或计数)被设置为非法值。检查 文档中输入参数的允许值。5modbus主设备未启用:在调用mbus.msg前,每次扫描时都调用mbus ctrlo6modbus忙于处理另一个请求:只能激活一 条mbus.msg指令。7应答时岀错:收到的应答与请求不相关。这 表示从站屮出现了某些错谋,或者错谋的从 站应答了请求。8应答时crc错误:传输
22、被干扰,可能会收到 不正确的数据。该错谋通常是由电气故障(例 如错误链接或者影响通讯的电噪声)引起的。101从站不支持在该地址处所请求的功1党,请参 阅表1-4.102从站不支持数据地址:“地址”加上“计数” 所要求的地址范围超出了从站所允许的地址 范围。103从站不支持数据类型:该“地址”类型不被 从站支持。104从站故障。105从站已接受消息但应答延迟:这是 mbus_msg的错误,用户程序应在稍后重新 发送请求。106从站忙,因此拒绝消息:可以再次尝试相同 的请求,以获得应答。107从站因未知原因而拒绝消息。108从站存储器奇偶校验错误:从站中有错胡。上述参数支持的操作数和数据类型如下表
23、所示:输入/输lu数据类型操作数firsti, q, m, s, sm, t, c, v,l(以上升沿检测元素为条件 的功率流)布尔slavevb, ib, qb, mb, smb, lb, ac, constant, *vd, *ac, *ld字节rwvb, ib, qb, mb, smb, lb, ac, constant, *vd, *ac, *ld字节addrvd, id, qd, md, smd,ld, ac, constant, *vd, *ac, *ld双字countvw, 1w, qw, mw, smw,lw, ac, constant, *vd,*ac, *ld整型datap
24、tr&vb双字donei, q, m, s, sm, t, c, v,布尔lerrorvb, ib, qb, mb, smb, lb, ac, *vd, *ac, *ld字节mbus.init 指令:西门子 modbus从站协议库包括两条指令:mbusjnit指令和 mbus_slave 指令。mbus.init指令用于启用和初始化或禁止modbus通讯。mbus_slave指令用于为modbus主设备发出的请求服务。mbusjnit指令用于启用和初始化或禁止modbus从站通讯。在使用 mbus_slave指令之前,必须正确执行mbus_init指令。指令完成后立即设 定“完成”位,
25、才能继续执行下一条指令。en:指令使能位。mode:模式选择,启动/停止modbus从站通信。mode参数允许使用一卜.两 个数值:1启动,0停止。address:从站地址,modbus从站地址,取值1-247.baud:游特 率 可选 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200。parity:奇偶校验,0二无校验;1二奇校验;2=偶校验。delay:延时,附加字符间延时,缺省值为0。maxiq:歇 i/q位,参与通信的最人i/o点数,s7-200的i/o映像区128/128, 缺省值为128«maxai:最人ai字数,参与
26、通信的最人ai通道数,可为16或32。maxhold:设定供modbus地址4xxxx使用的v存储器屮的字保持寄存器数 目。holdstart:保持寄存器区起始地址,以&vbx指定(间接寻址方式)。done:初始化完成标志,成功初始化后置1。error:初始化错误代码。mbus_init指令错误代码的含义如下表所示:错误代码说明0无错误1内存范围错误2非法波特率或奇偶校验3非法从属地址4非法modbus参数值5保持寄存器与modbus从属符号重叠6收到奇偶校验错误7收到crc错误8非法功能请求/功能不受支持9请求中的非法内存地址10从属功能未启用上述参数支持的操作数和数据类型如下表所示
27、:输入/输出操作数数据类型模式、地址、奇偶校验vb, ib, qb, mb, smb,lb, ac, constant, *vd, *ac, *ld字节波特、holdstartvd, id, qd, md, smd,ld, ac, constant, *vd, *ac, *ld双字延时、maxiq , max al ,maxholdvw, iw, qw, mw, smw,lw, ac, constant, *vd, *ac, *ld字完成i, q, m, s, sm, t, c, v,l布尔错误vb, ib, qb, mb, smb, lb, ac, *vd, *ac, *ld字节mbus_s
28、lave指令被用于为modbus主设备发出的请求服务,并且必须在 每次扫描时执行,以便允许该指令检查和回答modbus请求。mbus_slave指令无输入参数,在每次扫描且en输入开启时执行。en:指令使能位。done: modbus执行通信中时置1,无modbus通信活动时为0。error:错误代码。mbus slave指令错误代码的含义如下表所示:错误代码说明0无错误1内存范围错误2非法波特率或奇偶校验3非法从属地址4非法modbus参数值5保持寄存器与modbus从属符号重克6收到奇偶校验错谋7收到crc错误8非法功能请求/功能不受支持9请求中的非法内存地址10从屈功能未尼用附例。k硬件
29、设置例程屮的modbus通讯是在两个s7-200cpu的0号通讯口间进行的(最好每个 cpu都有两个通讯口)。在主站侧也可以选择相应库文件"mbus_ctrl_pt 秋,mbus_msg_pr,通过1号通讯口通信。通讯口 1与micro/win建立pg或 pc连接,两个cpu的通讯口 0通过ppi电缆进行连接(电缆的针脚 连接2, 3,7, 8)2、参数匹配对于modbus通讯,主站侧需要程序库”mbus_ctrl苗itmbus_msg”,从 站侧需要程序库” mbus_init”和” mbus_slave”。在micro/win中你需要为主站和从站新建一个项目,程序与参数设置。必须 要保证主站与从站的“baud”和“ parity "的参数设置要一致,并且程序 块"mbus_msg”中的slave地址要与程序块"mbus_inft中的"addr"所设置的一致。micro/win “系统块”中设置的0通讯口的波特率与modbus协议无关("mode''=t)。3、库的存储地址项口完成后必须要在micro/win屮定
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年直播平台礼物体系设计优化方案
- 医疗被服洗涤污泥处置流程
- 2026年基本公共卫生服务项目培训考试题(附答案)
- 肾脏功能测试试题及参考答案
- 止血包扎题目及答案
- 2026中国PLC电力线通信芯片在智能家居中的穿透力优化
- 信号系统专项施工方案
- 2026皮革制品加工行业市场深入调研报告
- 医疗垃圾处理知识培训试题(附答案)
- 2026年临床执业医师模拟试题及答案
- 2025年高级政工师考试题库及答案
- 具身智能在建筑工地安全监控中的应用方案可行性报告
- 2025年度山西地质集团校园招聘307人笔试参考题库附带答案详解
- 2025年LNG船舶运输合同标准范本
- JJG 667-2025液体容积式流量计检定规程
- (高清版)DB31∕T 1384-2022 城市绿地防雷通 用技术要求
- 校内宿管面试题及答案
- 门卫管理制度车辆人员
- 西洋参多糖分离纯化及其生物活性研究进展
- 离婚协议标准版(有两小孩)
- 1输变电工程施工质量验收统一表式(线路工程)-2024年版
评论
0/150
提交评论