电子开发网

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

西门子S7-200系列PLC的MODBUS通信功能 指令MBUS_CTRL

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

在上一篇文章中我们说到了MODBUS RTU 协议的信息帧的格式,同时也跟到大家提到了如何通过从站设备提供的通信说明中的信息帧格式及地址去准备相应的数据,那么今天我们主要说一下S7-200系列PLC中MODBUS RTU库指令意思。

在S7-200SMART系列PLC中的库指令中集成了MODBUS RTU通信的库指令,库指令中包含了S7-200SMART系列PLC作为主站功能的库指令及S7-200SMART系列PLC作为从站功能的库指令(如下图所示)

 

在这里我们主要介绍下主站的库指令,主站的库指令中根据所使用的通信口的个数不一样分为两个,若使用时PLC的本体的RS485端口需要作为modbus的主站功能,而扩展的RS485的信号板又需要作为MODBUS的主站的功能,那么前者使用第一个主站库的指令,后者可以使用第二个主站库指令,每个主站库指令中都有两个指令,分别为初始化指令MBUS_CTRL ,数据读写发送请求指令MBUS_MSG指令。下面我们对这两个指令的意思以及指令上的管脚进行一些说明:

MBUS_CTRL指令

 

EN:初始化指令使能端,需要保持每个扫描周期都接通

Mode:通信协议的选择,若需选择MODBUS RTU通信,这需要保持该位为1状态,所以此处可以使用SM0.0接通。

Baud:通信波特率的设置

Parity:奇偶校验的选择,0表示无校验,1表示奇校验,2表示偶校验

Port :端口号设置,若使用PLC本体上的RS485端口,则应选择为0(注意S7-200PLC中的库指令中的MBUS_CTRL没有此管脚)

Timeout: 该参数用于确定 Modbus 从站设备是否对主站发出请求做出响应。若达到设定值后,还未获得从站的响应,则PLC认为从站出问题,同时MBUS-MSG指令中的故障代码存储器中会存储相应的故障代码,同时完成位的状态为1.

Done:完成位,当初始化完成后,该位的状态为1,编写程序时,可以根据这个完成位来判断初始化是否完成,完成后可以用于激活MBUS_MSG指令进行数据请求的发送,(需要注意是:初始化完成后,至少需要过一个扫描周期后,才能去激活MBUS-MSG指令,否则可能通信不成功)

Error:故障代码存储器(使用一个字节进行存储),当初始化出现错误后,在故障存储器中会产生一个代码,查看指令帮助中的代码说明,可以查看到可能出错的原因是什么。

MBUS_MSG指令

 

EN:指令的使能

MBUS_MSG指令使用时一定要注意的一点就是,同一个扫描周期内,只能由一条MBUS_MSG的EN端的状态为1.如果在一个扫描周期内出现2条及2条以上的MBUS_MSG的EN端的状态为1的情况。则MBUS_MSG指令中的故障代码的值会为6,通信会不成功。

First:触发请求,仅保持一个扫描周期的时长 ,因此在使用时需要使用沿脉冲进行触发。

Slave:从站站号,根据从站中设置的地址进行填写

RW:读写操作选择,0表示读,1表示写,若控制变频器运行,使用写的功能,若需要读取变频器的电流等需要用读的命令。

Addr:起始的MODBUS寄存器地址,此地址使用时一定要正确编写。

MODBUS寄存器的地址,根据功能码的不一样,主要有4种类型的表示方式,分别为0XXXX(读写线圈状态),1XXXX(读开关输入状态),3XXXX(读输入寄存器),4XXXX(读写保持寄存器)四种类型,对于第四种类型4XXXX的类型,地址可以扩展,扩展为4XXXXX六位数的类型格式。

各功能码对应的MODBUS地址寄存器类型如下图所示,而每种地址的起始地址都是从0001开始,而且都是以十进制数进行表示的。

 

地址类型确认后,如何来确定输入的地址呢?

该地址的确定与在上篇文章中提到的MODBUS RTU信息帧格式中的Data内容有关,Data的内容包括两部分内容,一部分内容为数据区的地址,一部为数据区的内容,则此处的MODBUS寄存器的地址与数据区的地址有关。如图所示:

 

此处中的数据区的地址,指的是寄存器地址,从图中可以看到他的范围是从十六进制数的0000到十六进制数的FFFF,因此从这我们可以看到功能码为06,对应的寄存器地址是0000的时候,那么在我们MBUS_MSG指令中的Adder的地址应填写为40001(因为都是表示的第一个地址,需要一一对应上)。

根据这个计算方法,我们可以写出 在上一篇文章中提到的控制变频器运行的寄存器地址对应都MBUS_MSG指令中Adder的地址为:

 

功能码为06,所以类型为4XXXX的类型,地址为16# 3200,相对于16#0000来讲,偏移了12800.(此为十进制数)所以对应到MBUS_MSG指令中的地址为在1的基础上上偏移12800,即12801,而功能码06对应的类型为4,所以我们在使用时应在MBUS_MSG指令的Adder出填写412801这个地址。

Count:读写的格式,表示从adder这个管脚指的的地址开始的连续多少个地址进行数据的读写。

Dataptr:读写数据存放的地址,使用指针的方式表示,实际地址以十六位的方式表示,假设使用的地址是&VB100。前面的指令管脚定义的是对变频器运行命令的控制,则当把16#1001写入到VW100中,则电机正转运行,若把16#1003写入到VW100中,则表示的是反转运行。若是读取的功能,假设MBUS_MSG指令中adder为413077,count为2,Dataptr为&VB102, 则表示把413077这个地址中的数据读取出来存放于VW102,把413078的数据读取出来存放于VW104中。

Done:完成位。当执行完成后,该为位1,因此当出现需要使用多个MBUS_MSG指令是,可以使用每个指令的Done来实现轮询的功能。

Error:故障代码存储器,方便查询通信故障。

通过本篇文章,希望大家对MODBUS的库指令有进一步的了解

Tags:西门子S7-200,MODBUS通信,指令  
责任编辑:admin
相关文章列表
西门子S7-200系列PLC中断指令第一部分 梯形图实例
西门子PLC置位、复位指令
西门子PLC地址下降沿检测指令功能说明及应用实例   NEG指令应用举
西门子PLC的bcd_di指令
西门子PLC  S7 PLC移位寄存器指令(SHRB)
西门子PLC整数乘法指令(MUL_I)和整数除法指令(DIV_I)
西门子PLC整型数比较指令,CMP指令
西门子plc中R复位线圈指令符号与状态字
西门子plc数据块传送指令的用法举例
西门子plc有记忆接通延时定时器指令的用法举例 梯形图实例
西门子plc堆栈指令的用法梯形图实例
西门子plc指令英文全称及含义中文说明
西门子plc S7-200PLC中断指令介绍 开关中断、连接分离中断
西门子PLC字整数与双字整数之间的转换、双整数与实数之间的转换
西门子PLC整数与双整数加减法指令简介 西门子plc指令
西门子s7-200与绝对型编码器的接线方式
西门子plc编程软件中MOV_W、MOV_B、SHR_B的含义
西门子S7-200PLC通过Modbus库与智能仪表通讯
西门子S7-200CN与台达DVP14SS2之间的Modbus通讯连接mbus_msg
S7-200系列PLC其它常用指令
三菱plc条件跳转控制指令使用方法
西门子S7-200型PLC的暂停指令
西门子S7-200型PLC的看门狗指令WDR
西门子PLC S7-200系列PLC的自然对数和指数指令
西门子PLC S7-200系列PLC的三角函数运算指令
三菱PLC 三菱FX系列PLC的条件跳转指令[CJ(FNC00)]
三菱PLC 三菱FX系列PLC的二进制浮点数的开平方指令与三角函数运算
三菱FX系列PLC的二进制浮点数的四则运算指令
三菱PLC 三菱FX系列PLC的外部设备( SER)指令
三菱FX系列PLC的时钟运算指令
请文明参与讨论,禁止漫骂攻击,不要恶意评论、违禁词语。 昵称:
1分 2分 3分 4分 5分

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