1、S7-200_6_Modbus 通讯实验 2008-11-10 19:59:04| 分类: AS_L | 标签: |字号大中小 订阅 1 学习目标掌握通讯协议的概念了解 Modbus 的通讯协议能够使用 Modbus 协议库实现两台 PLC 之间的通讯2 实验目标设置两台 PLC 使用 Modbus 进行通讯,一主一从。Modbus 主站控制 Modbus 从站的输入、输出、保持寄存器。3 相关资料S7-200 系统支持的 PPI、MPI 和 PROFIBUS-DP 协议通常以 RS-485 电气网络为硬件基础。RS-485 串行通信标准采用平衡信号传输方式,或者称为差动模式。平衡传输方式可以
2、有效地抑制传输过程中干扰。S7-200 系统中的 RS-485 端口是半双工的,不能同时发送和接收信号。通过 S7-200 CPU 通信口的自由口模式实现 Modbus 通信协议,可以通过无线数据电台等慢速通信设备传输。这为组成 S7-200 之间的简单无线通信网络提供了便利。Modbus 是公开通信协议,其最简单的串行通信部分仅规定了在串行线路的基本数据传输格式,在 OSI 七层协议模型中只到 1,2 层。Modbus 具有两种串行传输模式,ASCII 和 RTU。它们定义了数据如何打包、解码的不同方式。支持 Modbus 协议的设备一般都支持 RTU 格式。Modbus 是一种单主站的主/
3、从通信模式。Modbus 网络上只能有一个主站存在,主站在 Modbus 网络上没有地址,从站的地址范围为 0-247,其中 0 为广播地址,从站的实际地址范围为 1-247。Modbus 通信标准协议可以通过各种传输方式传播,如 RS232C、RS485、光纤、无线电等。 在 S7-200CPU 通信口上实现的是 RS485 半双工通信,使用的是 S7-200 的自由口功能。西门子在 Micro/WIN V4.0 SP5 中正式推出 Modbus RTU 主站协议库(西门子标准库指令)。使用 Modbus RTU 主站指令库,可以读写 Modbus RTU 从站的数字量、模拟量 I/O 以及
4、保持寄存器。4 实验方案通讯实验需要两台 CPU,在两台 CPU 中下载不同的程序,完成 Modbus 通讯。从站 CPU 要首先处于接收状态,然后主站 CPU 开始对从站进行操作。从站的程序如下:编程时使用 SM0.1 调用子程序 MBUS_INIT 进行初始化,使用 SM0.0 调用 MBUS_SLAVE,并指定相应参数。关于指令 MBUS_INIT 指令参数的说明,详见手册第 351 页。在从站的程序中,需要指定从站的地址,数据传输速率,校验方式等。在设置完毕后,从站处于接收状态。主站的程序如下:(1) 使用 SM0.0 调用 MBUS_CTRL 完成主站的初始化,并启动其功能控制。在初
5、始化时,需要指出从站的地址、数据传输速率、校验方式等,这些必须与从站的设置相一致。(2) 调用 Modbus RTU 主站读写子程序 MBUS_MSG,发送一个 Modbus 请求。通过MBUS_MSG 指令可以对从站的输入、输出、保持寄存器进行操作。5 实验总结 每一个新的读写请求必须使用脉冲触发。 在向从站写入数据时,要注意数据的地址,其表示方式如下:00001 至 0xxxx - 开关量输出; 10001 至 1xxxx - 开关量输入; 30001 至 3xxxx - 模拟量输入;40001 至 4xxxx - 保持寄存器 Modbus 主站可读/写的最大数据量为 120 个字。 在通
6、讯出现故障时,可以通过模块的故障代码可以对故障进行判断。 Modbus RTU Master 协议指令库使通信口工作在自由口模式下,此时不能与 Micro/WIN 软件通信。要在切换回 PPI 协议,可以将 MBUS_CTRL 指令的 Mode 输入端设置为逻辑“0”,或者将 CPU的允许模式选择开关置为 STOP 位置。 向从站数字量输出点发送数据时,数据长度为 1 时,发送 1 位,数据长度为 8 时,发送 8 位,即 1 个字节。数据长度为 16 时,发送 16 位,即 2 个字节,数据长度不能设置为其他数值,否则会报错。基于 MODBUS 协议的上位机与 PLC 及智能仪表之间的通信实
7、现方法 来源:d | 类别:技术 | 时间:2009-4-9 14:06:15 字体:大 中 小 摘要:介绍了 Modbus 通信协议的特点,结合作者的实践经验,介绍基于 MODBUS 协议下工控机为主站,PLC 及智能仪表为从站的通讯的实现方法.关键词:Modbus 通信协议 RS-485 PLC 工控机 智能仪表一、引言: 可编程控制器由于抗干扰能力强,可靠性高,编程简单,性能价格比高,在工业控制领域得到越来越广泛应用。基于 PLC 的控制系统多数情况下会以微机为主机 ,PLC 为从机.完成对生产过程的自动控制,工艺参数的显示和修改MODBUS RTU 规约是目前国际上普遍采用的主流通讯协
8、议之一.随着越来越多的企业开始向生产和管理的自动化转变,MODBUS得到了广泛的应用.二、MODBUS RTU 通讯协议简介:MODBUS 是一种工业控制系统串行通信协议, 当在网络上通信时,Modbus 协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成应答并使用 Modbus 协议发送给询问方。Modbus 协议包括ASCII、RTU、TCP 等,它需要对数据进行校验,其中 RTU 模式采用 16 位 CRC 校验.当控制器设为在 Modbus 网络上以 RTU(远程终端单元)模式通信 ,在消息中的每个 8bit 字节包含两个
9、4bit 的十六进制字符.这种方式的主要优点是:在同样的波特率下,可比 ASCII 码传送更多的数据.三、电气接口:本套系统采用 RS-485 作为电气接口.它具有干扰抑制性好、传输距离长、组网方便等特点,非常适合组成工业级的多机通信系统.网络采用总线型结构,半双工,终端加电阻.电缆选用带有金属网状屏蔽层的双绞线.它可以消除由于磁耦合引起的共模噪声,而金属屏蔽层可以阻断电容、电磁及高频磁耦合引起的噪声。另选用 RS232/RS485 转换器。通过转换器,我们就可以利用工控机的 RS232 串口,快速地开发基于 RS485 串口的上位机通信软件。四、PLC 程序设计:本系统中的可编程控制器采用西
10、门子 S7-200 系列.使用指令库中的 MBUS_INIT 和MBUS_SLAVE 指令.以下是系统中用于 PLC 的通讯程序:NETWORK 1 /首次扫描时初始化 Modbus 从属协议/将从站地址设为 1,将端口 0 设为 9600 波特,将校验设为偶数, /允许存取所有的 I、Q和 AI 数值,允许存取 1000 台保存寄存器( 2000 个字节) /从 VB0 开始。LD SM0.1CALL MBUS_INIT, 1, 1, 9600, 2, +0, +128, +32, +1000, for(int i=0; iwCrc = WORD(BYTE(pSendBufi);for(in
11、t j=0; jif(wCrc wCrc = 0xA001; elsewCrc = 1; return wCrc;六、上位机与智能仪表的通讯:上位机的通讯程序可参照上位机与 PLC 的通讯程序进行设计,注意将上位机的串口地址设为其它的地址(例如 2) 。在此不作过多介绍。多台智能仪表作为 MODBUS 从站的网络,每个从站必须设为唯一的从站地址,并设定好波特率。仪表要遵循 MODBUS 规约的通信帧结构对上位机的命令进行解析。非呼叫对象要能及时重新恢复等待接受状态。响应呼叫的仪表要解析命令并进行相应的功能处理,对非法的命令要能回报报错信息。七、 结束语:该方法用于某污水处理厂。由于采用智能仪表
12、使系统对 PLC 的要求以及布线成本都大大降低。监控程序的设计完全符合厂方的要求。另因其设备分散、成本要求苛刻的特点,充分利用 RS485 总线和现有成熟而规范的通信协议能最大限度地节约成本。实践表明,MODBUS 具有开放性好、功能强、通讯效率高等特点。来源:http:/机电之家机电行业电子商务平台!西门子 s7-200PLC modbus 与智能仪表时间:2011-08-04 来源 : 作者:电气自动化技术网 点击: 161 次问:西门子 S7-200PLC 与智能仪表 MODBUS 通讯,我只想问从站的程序用不用写 ,如果要写 在哪儿写 下载到哪儿?S7-200 做主站!答:从站不用写,
13、只需要设置通讯的参数,就行 PLC 和变频器通讯一样欲在 S7-200 程序中使用 Modbus 主设备指令,请执行以下步骤:1. 在程序中插入 MBUS_CTRL 指令,并在每次扫描时执行 MBUS_CTRL。您可以使用MBUS_CTRL 指令初始化或更改 Modbus 通讯参数。当您插入 MBUS_CTRL 指令时,会在程序中自动增加几个受保护的子程序和中断例程。2. 使用协议库存储器命令,为 Modbus 主设备协议指令需要的 V 存储器指定一个起始地址。3. 将一条或多条 MBUS_MSG 指令放入程序中。可以根据需要将尽可能多的 MBUS_MSG 指令放入程序中,但每次只能激活这些指
14、令中的一条。4. 连接 S7-200 CPU 上的端口 0 (或对端口 1 协议库是端口 1)和 Modbus 从站之间的通讯电缆。当心带有不同参考电位的互连装置会引起互连电缆中出现意外电流。这些意外电流会引起通讯错误或损坏装置。确保所有用通讯电缆连接的设备共享一个共用电路参考或单独隔离,以防不需要的电流通过。Modbus 主设备指令使用如下显示的 Modbus 功能读取或写入特定的 Modbus 地址。Modbus 从站必须支持所需的 Modbus 功能才能读取或写入特定的 Modbus 地址。所需的 Modbus 从站功能支持Modbus 地址 读取或写入 所需的 Modbus 从站功能0
15、0001 ?09999 离散输出 读取 功能 1写入 功能 5 用于单个输出点功能 15 用于多个输出点10001 ?19999 离散输出 读取 功能 2写入 不能30001 ?39999 输入寄存器 读取 功能 4写入 不能40001 ?49999 保持寄存器 读取 功能 3写入 功能 6 用于单个寄存器功能 16 用于多个寄存器(1)MBUS INIT 指令用于使能、初始化或禁止 Modbus 通信。如图 8-12 所示。只有当本指令执行无误后,才能执行 MBUS SLVE 指令。当 EN 位使能时,在每个周期 MBUS INIT 都被执行。但在使用时,只有当改变通信参数时,MBUS IN
16、IT 指令才重新执行,因此 EN 位的输入端应采用脉冲输入,并且该脉冲的应采用边沿检测的方式产生,或者采取措施使 MBUS INIT 指令只执行一次。表 8-7 列出了 MBUS_INIT 指令各参数的类型及适用的变量。表 8-7 MBUS_INIT 指令各参数的类型及适用的变量输入/输出 数据类型 适用变量Mode,Addr,Parity BYTE VB,IB,QB,MB,SB,SMB,LB,AC,Constant,*AC,*VD,*LDBaud,HoldStart DWORE VD,ID,QD,MD,SD,SMD,LD,AC,Constant,*AC,*VD,*LDDelay,MaxAI,
17、MaxHoldWORD VW,IW,QW,MW,SW,SMW,LW,AC,Constant,*AC,*VD,*LDDone BOOL I,Q,M,S,SM,T,C,V,LError BYTEVB,IB,QB,MB,SB,SMB,LB,AC,*AC,*VD,*LD参数说明:参数 Baud 用于设置波特率,可选1200、2400、4800、9600、19200、38400、57600、11520。参数 Addr 用于设置地址,地址范围为:1247。参数 Parity 用于设置校验方式使之与 ModBus 主站匹配。其值可为: 0(无校验) 、1(奇校验) 、2(偶校验) 。参数 MaxIQ 用于设
18、置最大可访问的 I/O 点数。(2)MBUS_SLAVE 指令MBUS_SLAVE 指令用于响应 ModBus 主站发出的请求。该指令应该在每个扫描周期都被执行,以检查是否有主站的请求。其梯形图指令如图 8-14 所示。只有当指令的 EN 位输入有效时,该指令在每个扫描周期才被执行。 当响应 ModBus 主站的请求时,Done 位有效,否则 Done 处于无效状态。位 Error 显示指令执行的结果。Done 有效时 Error 才有效,但 Done 由有效变为无效时,Error 状态并不发生改变。表 8-8 列出了 MBUS_SLAVE 指令各参数的类型及适用的变量。表 8-8 MBUS_
19、SLAVE 指令各参数的类型及适用的变量参数 数据类型 操作数Done BOOL I,Q,M,S,SM,T,C,V,LMBUS INITENMode DoneAddr ErrorBandParityMaxIQMaxHoldHoldStartMBUS SLVEENDoneError图 8-13 MBUS INIT 指令Error BYTE VB,IB,QB,MB,SB,SMB,LB,AC,*AC,*VD,*LDs7200 modbus 与智能仪表 S7200 与智能仪表 MODBUS 通讯,我只想问从站的程序用不用写 ,如果要写 在哪儿写 下载到哪儿?S7200 做主站!悬赏分:10 | 解决时
20、间:2011-08-03 20:20:07 | 提问者:lb1563 - 新生第 1 级问题 ID:71873最佳答案 从站不用写,只需要设置通讯的参数,就行 PLC 和变频器通讯一样欲在 S7-200 程序中使用 Modbus 主设备指令,请执行以下步骤:1. 在程序中插入 MBUS_CTRL 指令,并在每次扫描时执行 MBUS_CTRL。您可以使用 MBUS_CTRL 指令初始化或更改 Modbus 通讯参数。当您插入 MBUS_CTRL 指令时,会在程序中自动增加几个受保护的子程序和中断例程。2. 使用协议库存储器命令,为 Modbus 主设备协议指令需要的 V 存储器指定一个起始地址。
21、3. 将一条或多条 MBUS_MSG 指令放入程序中。可以根据需要将尽可能多的MBUS_MSG 指令放入程序中,但每次只能激活这些指令中的一条。4. 连接 S7-200 CPU 上的端口 0 (或对端口 1 协议库是端口 1)和 Modbus 从站之间的通讯电缆。当心带有不同参考电位的互连装置会引起互连电缆中出现意外电流。这些意外电流会引起通讯错误或损坏装置。确保所有用通讯电缆连接的设备共享一个共用电路参考或单独隔离,以防不需要的电流通过。Modbus 主设备指令使用如下显示的 Modbus 功能读取或写入特定的 Modbus 地址。Modbus 从站必须支持所需的 Modbus 功能才能读取或写入特定的 Modbus 地址。所需的 Modbus 从站功能支持Modbus 地址 读取或写入 所需的 Modbus 从站功能00001 ?09999 离散输出 读取 功能 1写入 功能 5 用于单个输出点功能 15 用于多个输出点10001 ?19999 离散输出 读取 功能 2写入 不能30001 ?39999 输入寄存器 读取 功能 4写入 不能40001 ?49999 保持寄存器 读取 功能 3写入 功能 6 用于单个寄存器功能 16 用于多个寄存器