电子开发网

电子开发网电子设计 | 电子开发网Rss 2.0 会员中心 会员注册
搜索: 您现在的位置: 电子开发网 >> 电子开发 >> 梯形图实例 >> 正文

学习s7-200之间的Modbus通讯_两个PLC互相通信,主站从站通讯

作者:佚名    文章来源:本站原创    点击数:    更新时间:2022/12/15

S7-200两个PLC互相通信,Step7软件的使用,进行主站和从站直接的通讯。以下主要内容为从Step7 软件里面的库模块是使用就行介绍。

一、使用Modbus协议库

二、Modbus的地址

Modbus地址通常是包含数据类型和偏移量的5个字符值。第一个字符确定数据类型,后面四个字符选择数据类型内的正确数值。

(1)主站寻址Modbus主站指令可将地址映射到正确功能,然后发送至从站设备。Modbus主站指令支持下列Modbus地址:00001到09999是离散输出(线圈);10001到19999是离散输入(触点);30001到39999是输入寄存器(通常是模拟量输入);40001到49999是保持寄存器。所有Modbus地址都是基于1,即从地址1开始第一个数据值。有效地址范围取决于从站设备。不同的从站设备将支持不同的数据类型和地址范围。

(2)从站寻址Modbus主站设备将地址映射到正确功能。Modbus从站指令支持以下地址:00001至00128是实际输出,对应于Q0.0-Q15.7;10001至10128是实际输入,对应于I0.0-I15.7;30001至30032是模拟输入寄存器,对应于AIW0至AIW62;40001至04XXXX是保持寄存器,对应于V区。所有Modbus地址都是从1开始编号的。

示例:

三、相关指令介绍

(一)做主站使用Modbus master库

(1)初始化主设备指令MBUS_CTRL用于S7-200端口0(或用于端口1的MBUS_CTRL_P1指令)可初始化、监视或禁用Modbus通信。

 EN:使能端,有信号则该指令执行

Mode:输入的值用于选择通信协议。输入值为 1 时,将 CPU 端口分配给 Modbus 协议并启用该协议。输入值为 0 时,将 CPU 端口分配给 PPI 系统协议并禁用 Modbus 协议。

Baud:波特率

Parity:设置为与 Modbus 从站设备的奇偶校验相匹配。所有设置使用一个起始位和一个停止位。允许的值如下:0(无奇偶校验)、1(奇校验)和 2(偶校验)。

Port:设置物理通信端口(0 = CPU 中集成的 RS-485,1 = 可选 CM01 信号板上的 RS-485 或 RS-232)。

Timerout:设为等待从站做出响应的毫秒数。“超时”(Timeout) 值可以设置为 1 ms 到 32767 ms 之间的任何值。典型值是 1000 ms (1 s)。“超时”(Timeout) 参数应设置得足够大,以便从站设备有时间在所选的波特率下做出响应。

Done:初始化完成标志,成功初始化后置1.数据类型为布尔

error:初始化错误代码。数据类型为字节

 MBUS_CTRL

 

 通过在每次扫描时调用 MBUS_CTRL 来初始化和监视 Modbus 主站。Modbus 主站设为 9.6 Kbps,无奇偶校验。从站设备允许在 1000 毫秒(1 秒)内进行响应。

 

(2)MBUS_MSG指令(或用于端口1的MBUS_MSG_P1)用于启动对Modbus从站的请求,并处理应答。当EN输入和“首次”输入打开时,MBUS_MSG指令启动对Modbus从站的请求。发送请求、等待应答、并处理应答。EN输入必须打开,以启用请求的发送,并保持打开,直到“完成”位被置位。

En:使能端

First:在有新请求发送时打开。

Slave:从站地址

RW:0-读,1-写。

Addr:modbus起始地址。

Count:读取或写入的数据元素的数量

DataPtr:读取或写入请求相关数据的间接地址

 MBUS_MSG

该指令会对从站 2 的 4 个保持寄存器执行写入 (RW = 1) 操作。从 CPU 中的 VB100-VB107(4 个字)获取写数据,然后写入到 Modbus 从站中的地址 40001 - 40004。

 

(二)做从站使用 Modbus Slave库

(1)MBUS_INIT指令用于启用、初始化或禁止Modbus通信。在使用MBUS_SLAVE指令之前,必须正确执行MBUS_INIT指令

EN:使能端

Mode:模式  0-禁用Modbus  1-启用Modbus

Addr:设备地址

Baud:波特率

Parity:校验位  0-无校验  1-奇校验  2-偶校验

Port:端口号

Delay:延时  通过使标准 Modbus 信息超时时间增加分配的毫秒数来延迟标准 Modbus 信息结束超时条件。在有线网络上运行时,该参数的典型值应为 0。如果使用具有纠错功能的调制解调器,则将延时设置为 50至 100 ms 之间的值。如果使用扩频无线通信,则将延时设置为 10 至 100 ms 之间的值。“延时”(Delay) 值可以是 0 至 32767 ms。

MaxIQ:用于设置 Modbus 地址 0xxxx 和 1xxxx 可用的 I 和 Q 点数,取值范围是 0 至 256。值为 0 时,将禁用所有对输入和输出的读写操作。建议将 MaxIQ 值设置为 256。

MAXAI:用于设置 Modbus 地址 3xxxx 可用的字输入 (AI) 寄存器数,取值范围是 0 至 56。值为 0 时,将禁止读取模拟量输入。

MAXHold:用于设置 Modbus 地址 4xxxx 或 4yyyyy 可访问的 V 存储器中的字保持寄存器数。

HoldStart:是 V 存储器中保持寄存器的起始地址。该值通常设置为 VB0,因此参数 HoldStart 设置为 &VB0(地址 VB0)。

Done:初始化完成标志,成功初始化后置1.数据类型为布尔

Error:初始化错误代码。数据类型为字节

MBUS_INT 

 

(2)MBUS_SLAVE指令用于为Modbus主设备发出的请求服务,并且必须在每次扫描时执行,以便允许该指令检查和回答Modbus请求。

 MBUS_SLAVE

  提示:还要对 在调用了Modbus指令库的指令后,还要对库存储区进行分配,这是非常重要的,否则即使编写程序没有语法错误,程序编译后也会显示至少几十个错误。分配库存储区的方法如下:先选中“程序块”,再单击右键,弹出快捷菜单,并单击“库存储区”,如图4-4所示。再在“库存储区”中填写Modbus指令所需要用到的存储区的起始地址。

Tags:Modbus通讯,Modbus,S7-200,西门子plc  
责任编辑:admin
请文明参与讨论,禁止漫骂攻击,不要恶意评论、违禁词语。 昵称:
1分 2分 3分 4分 5分

还可以输入 200 个字
[ 查看全部 ] 网友评论
推荐文章
最新推荐
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 在线帮助 - 文章列表
返回顶部
刷新页面
下到页底
晶体管查询