MUDBUS通讯实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MODBUS通讯实验
一、理论背景
1.1单工、半双工和全双工
单工数据传输只支持数据在一个方向上传输;全双工数据通信允许数据同时在两个方向上传输,因此,全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力。半双工数据传输指数据可以在一个信号载体的两个方向上传输,但是不能同时传输。例如,在一个局域网上使用具有半双工传输的技术,一个工作站可以在线上发送数据,然后立即在线上接收数据,这些数据来自数据刚刚传输的方向。像全双工传输一样,半双工包含一个双向线路(线路可以在两个方向上传递数据)。
1.2RS-485:
RS-485标准是半双工通信协议,RS-485适用于收发双方共享一对线进行通信,也适用于多个点之间共享一对线路进行总线方式联网。在低速、短距离、无干扰的场合可以采用普通的双绞线,反之,在高速、长线传输时,则必须采用阻抗匹配(一般为120Ω)的RS485专用电缆。
RS485采用差分信号负逻辑,-2V~-6V表示“0”,+2V~+6V表示“1”。RS485有两线制和四线制两种接线,四线制只能实现点对点的通信方式,现很少采用,现在多采用的是两线制接线方式,这种接线方式为总线式拓扑结构在同一总线上最多可以挂接32个结点。在RS485通信网络中一般采用的是主从通信方式,即一个主机带多个从机。很多情况下,连接RS-485通信链路时只是简单地用一对双绞线将各个接口的“A”、“B”端连接起来。
、
1.2Modbus
工业控制已从单机控制走向集中监控、集散控制,如今已进入网络集约制造时代。工业控制器连网也为网络管理提供了方便。Modbus就是工业控制器的网络协议中的一种。Modbus协议是应用于电子控制器上的一种通讯约规。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为主流的工业标准之一。对符合Modbus协议的不同厂商生产的控制设备可以连成工业网络,进行集中监控。
图:S7-200 D型9针接口的MODBUS接线方式
二、实验准备
1、西门子 CPU 226实验操作台;
2、自制RS-485 modbus通讯线;
3、已安装MODBUS通讯指令库的计算机;
4、MODBUS从机设备(此选用FL3102型号火探)
5、24供电电源,导线若干。
连接MODBUS通讯线,D型接口端接CPU的端口1(端口0用于与电脑通讯),针脚3引出线接火探的DATA+接线端,针脚8引出线接火探的DATA-接线端。
三、相关指令
安装完指令库后,可在指令树的“库”内找到MODBUS通讯相关指令。
需注意的是,指令的引用需与接口端对应。如本次MODBUS通讯接口插在CPU 端口1,则只能使用“MODBUSMASTER PORT 1”内的指令。
MODBUS主站通讯使用到两个相关指令:
3.1MBUS_CTRL
用于S7-200的MBUS_CTRL指令可初始化、监视或禁用Modbus通讯。在使用MBUS_MSG指令之前,必须正确执行MBUS_CTRL指令。
Mode“模式”:输入数值选择通讯协议。输入值1将CPU端口分配给Modbus协议并启用该协议。输入值0将CPU端口分配给PPI系统协议并禁用Modbus协议。
Baud"波特":参数将波特率设为1200、2400、4800、9600、19200、38400、57600或115200波特。
Parity"奇偶校验":参数被设为与Modbus从站奇偶校验相匹配。所有设置使用一个起始位和一个停止位。可接受的数值为:
0 - 无奇偶校验
1 - 奇校验
2 - 偶校验
Timeout"超时":参数设为等待来自从站应答的毫秒时间数。"超时"数值可以设置的范围为1毫秒到32767毫秒。典型值是1000毫秒(1秒)。"超时"参数应该设置的足够大,以便从站有时间对所选的波特率作出应答。
"超时"参数用于确定Modbus从站是否对请求做出应答。"超时"值确定Modbus主设备在发送了请求的最后一个字符后,将要等待多长时间才会有应答的第一个字符。如果在"超时"规定的时间内
至少收到应答的一个字符,Modbus主设备将从Modbus从站接收到整个应答。
Done"完成" :MBUS_CTRL指令完成时,输出打开。
error"错误":输出包含执行该指令的结果。下表定义了在执行MBUS_CTRL指令时会产生的错
误条件。
错误代码说明
0 无错误
1 奇偶校验选择无效
2 波特率选择无效
3 超时选择无效
4 模式选择无效
3.2MBUS_MSG
MBUS_MSG指令(或用于端口1的MBUS_MSG_P1)用于启动对Modbus从站的请求并处理应答。当EN输入和"首次"输入打开时,BUS_MSG指令启动对Modbus从站的请求。发送请求、等待应答、并处理应答通常需要多次扫描。EN输入必须打开以启用请求的发送,并应该保持打开直到"完成"位被置位。
Frist"首次":参数应该在有新请求要发送时才打开以进行一次扫描。"首次"输入应当通过一个边沿检测元素(例如上升沿)打开,这将导致请求被传送一次。参见实例程序。
Slave"从站":参数是Modbus从站的地址。允许的范围是0到247。地址0是广播地址,只能
用于写请求。
RW "读写":参出指定是否要读取或写入该消息。"读写"参数允许使用下列两个值。
0 :读
1 :写
Addr"地址":参数是起始的Modbus地址。
10001至19999是离散输入(触点)
30001至39999是输入寄存器
40001至49999是保持寄存器
"地址"的指定取值范围基于Modbus从站支持的地址。
Count"计数":参数指定在该请求中读取或写入的数据元素的数目。"计数"值是位数(对于位数据类型)和字数(对于字数据类型)。
"DataPtr"参数是指向S7-200 CPU的V存储器中与读取或写入请求相关的数据的间接地址指针。对于读取请求,DataPtr应该指向用于存储从Modbus从站读取的数据的第一个CPU存储器位置。
对于写入请求,DataPtr应该指向要发送到Modbus从站的数据的第一个CPU存储器位置。
DataPtr值作为间接地址指针传递到MBUS_MSG。例如,如果要写入Modbus从站的数据从S7-200 CPU中的地址VW200开始,则DataPtr的数值将会是&VB200 (VB200的地址)。指针必须始终
是VB类型,即使它们指向字数据。
保持寄存器(地址4xxxx)和输入寄存器(地址3xxxx)的值是字(2个字节或16位)。S7-200 CPU
字的格式与Modbus寄存器相同。低位编号的V存储器地址是寄存器的最高有效字节。高位编号的
V存储器地址是寄存器的最低有效字节。