西门子S7-200 SMART Modbus RTU通信,如何编写从站程序和主站程序
本篇我们来学习S7-200 SMART的Modbus RTU通信以及从站程序和主站程序的编写。
通过集成RS485端口或可选通信板SM CM01的RS485/RS232端口,S7-200 SMART可以作为Modbus RTU主站或者从站同多个设备进行通信。
Modbus RTU通信端口
西门子S7-200 SMART作为Modbus RTU主站时,最多可以控制247个从站,通信板SB CM01与CPU集成端口功能是一样的。利用STEP7 Micro/WIN SMART指令库编程可以使Modbus RTU主站和从站通信更为简单。下面我们通过一个简单的实例来练习使用S7-200 SMART Modbus RTU通信。
Modbus RTU主站
需要完成如下通信任务:1、Modbus主站读取Modbus从站DI通道I0.0开始的16位的值;2、Modbus主站向Modbus从站前5个保持寄存器写入数据。本次试验所需的硬件有:两台S7-200 SMART CPU、一台以太网交换机CSM1277、一台编程计算机、一根PROFIBUS通信电缆、三根以太网电缆。硬件之间的连接如下图中所示:
硬件连接
下面,我们先来学习编写Modbus RTU从站程序。首先编写Modbus从站初始化程序,在Modbus从站项目中完成硬件组态和符号定义后,在指令树中展开指令树库文件夹下的Modbus RTU Slave文件夹,拖放Modbus从站初始化指令到主程序中,在文件菜单功能区单击存储器按钮打开库存储器分配对话框,输入该指令库存储器的起始地址,例如VB1000,也可以单击建议地址按钮,系统自动计算可用的存储器地址。注意该存储区不能再重复使用。
设置指令库存储器起始地址
使能端插入一个常开触点,输入首次扫描位地址SM0.1,模式参数输入1,启用Modbus协议,Modbus从站地址设置为3,波特率设置为9600,奇偶校验设置为偶校验,端口设置为使用CPU集成的RS485端口,延时参数在有线网络运行时设置为0,可访问的IQ点数设置为256,可访问的AI寄存器数设置为16,可访问的V存储区中的字保持寄存器数设置为100,V存储区中的保持寄存器起始地址设置为VB0,输入初始化完成标志位地址和错误代码输出地址。
Modbus从站初始化指令
编写Modbus从站通信程序,从指令树中拖放Modbus从站通信指令到程序中,使能端插入一个常开触点,输入始终接通位地址SM0.0,输入从站通信完成标志位地址,输入错误代码输出地址。为了直观的查看试验结果编写程序将主站写入从站的第一个保持寄存器的数据送入QW0,用CPU面板的输出点指示灯显示,单击保存按钮保存项目。
Modbus从站通信指令
在项目树中展开程序块的库文件夹,可以看到Modbus从站指令使用了三个子程序和两个中断程序,将程序编译下载到PLC,设置CPU为RUN工作模式,至此,Modbus从站的编程就完成了。
编译下载程序
以上,我们介绍了S7-200 SMART的Modbus RTU通信如何编写从站程序,下面我们继续来学习编写Modbus RTU通信主站程序:
首先,我们来编写Modbus主站初始化程序,在Modbus主站项目中完成硬件组态和符号定义后,在指令树中展开指令树库文件夹下的Modbus RTU Master文件夹,拖放Modbus主站初始化指令到主程序中。
拖放Modbus主站初始化指令
与从站类似,分配库存储器,使能端插入一个常开触点,输入始终接通位地址SM0.0,模式端也插入一个常开触点输入地址SM0.0,启用Modbus协议。波特率设置为9600,奇偶校验设置为偶校验,端口设置为使用CPU集成的RS485端口,超时参数设置为1000毫秒,输入初始化完成标志位地址和错误代码输出地址。
设置Modbus主站初始化指令参数
编写实现Modbus主站读写Modbus从站的通信程序。要启动对Modbus从站的读写请求和处理响应需要使用Modbus通信指令,请注意同一时刻只能有一条Modbus通信指令处于激活状态,使用多条该指令时需要编写程序实现轮询。如下图所示,程序段2实现的功能是首次扫描时置位使用Modbus通信标志位,复位其它Modbus通信指令使能位。
程序段2
程序段3实现的功能是,当启用或者第一次调用Modbus通信指令时,从地址为3的Modbus从站中读取地址10001开始的16个数据,也就是读取DI通道从I0.0开始的十六位的值,读取到的数据存放到主站VB0开始的存储区中。
程序段3
程序段4实现的功能是,第一次调用完成后复位启用标志位,复位第一次调用使能位,复位第二次调用完成位,置位第二次调用使能位。
程序段4
程序段5实现的功能是,第二次调用时向地址为3的Modbus从站写入5个保持寄存器数据,从CPU的VB10到VB19获取5个字数据,然后写入到Modbus从站中的地址40001到40005。
程序段5
程序段6实现的功能是,第二次调用完成后复位第二次调用使能位,复位第一次调用完成位,置位第一次调用使能位。这样就通过轮询来实现了读Modbus从站输入位和写Modbus从站保持寄存器的功能,单击保存按钮保存项目,在项目树中展开程序块下的库文件夹,可以看到Modbus主站指令使用了三个子程序和一个中断程序。
程序段6
将程序编译下载到PLC,设置CPU为RUN工作模式,这样Modbus主站的编程就完成了。
今天我们分别学习了西门子S7-200 SMART Modbus RTU通信的从站程序编写和主站程序编写,在以后的文章中我们将继续学习西门子PLC编程的相关内容,欢迎持续关注!
关于台达plc的modbus主站和从站如何编写程序
最近在工作中遇到了台达的plc,本来我只要读取它们的数据罢了,台达plc作为modbus从站。我作为modbus主站去读取modbus从站的数据,应该是一件很容易的事。但是,很不幸的是,设备厂家对通讯方面完全不了解。当我向他索要modbus地址和通讯参数的时候,他萌萌的告诉我他对这方面不是很清楚,当时我心里凉了半截,心里默默问候我们公司的售前人员。没办法了,工作还得继续下去(甲方爸爸催的紧啊),把他们的设备拆开看了下,得到一些信息:他们设备的控制器台达的plc,柜子外配了一个网口,这个网口是用plc的485端口转换的。
现在有几个问题:
1,我以前没接触过台达plc
2,也没接触过那个485转以太网的模块
怎么办呢,赶紧去了解一波呗。
台达plc肯定支持modbus通讯,毕竟搞西门子plc好多年,学一下怎么用modbus应该很快。
对485转以太网模块虽然不熟悉,但是以前用过232转以太网模块,想了下用法上应该差不多,了解一下应该也快。
根据485转以太网模块的品牌,自己找到了技术支持电话,在咨询之后要了他们的软件,功能果然和moxa的232转以太网功能一样,只是品牌不一样而已。心里也有底了。
然后花了一些时间了解台达的modbus编程,下面我就来说说关于台达plc的modbus编程的有关内容。
接触过plc的都知道,中国市场的plc分两派:欧美系和日系。他们两种编程的风格不太一样,在这里就不细说了。台达plc属于是仿日本三菱plc的,所以属于典型的日系plc。本人以前一直用的是西门子plc,西门子plc的modbus主站从站都需要调用西门子的库程序实现,所以以为台达plc也是需要这种类似操作,当知道现场设备的厂家根本没有考虑modbus从站的时候我的心拔凉拔凉的。但是,天无绝人之路,当我了解了一点台达plc后忽然发现,台达plc默认就支持modbus从站。
台达的plc的内部地址和modbus地址有一个对应关系,对应关系如下图
对应关系的全部内容,你们可以自己在台达plc的应用手册上查看。
现在对应关系是有了,那么modbus的通讯参数和站号地址在哪里设置呢?下面就来阐述,我们需要主站和从站分开阐述。
我们先说台达plc作为modbus从站,该如何设置。
台达plc不做任何设置,也是一个modbus从站,因为台达plc的通讯参数和站号地址是通过一些特定的寄存器地址设置的,而那些特殊的寄存器地址是有一个默认值的。
设置从站的通讯参数
以上就是modbus从站的参数和站号设置,前面也提到了这些可以不设置,那么就是默认值。我们来看看这些特殊寄存器代表的意义:
D1121:plc站号地址,默认值为1
D1120:com2(rs485通讯协议),默认值是H86,代表的意思是波特率9600,字长度7位,偶校验,1位停止位
M1220:com2通讯设定保持用,如果设定了D1120,m1120就置1使设置保持。
M1143:SLAVE 模式时,COM2(RS-485)之 ASCII/RTU
模式选择 (Off: ASCII模式 ,On: RTU 模式)
MASTER 模式时, COM2(RS-485) 之 ASCII/RTU
模式选择,配合 MODRD /MODWR/MODRW 指令使用(Off: ASCII 模式, On: RTU 模式)
默认值为0.
所以,默认的通讯参数是波特率9600,字长度7位,偶校验,1位停止位,ASCII模式,站号地址为1.
然后我们再讲一下,modbus主站该怎么编程。首先我们需要了解一下需要用到的指令。
modbus ASCII模式的例子
modbus rtu模式的例子
以上是台达plc的modbus读指令,modbus的写指令和读指令差不多,大同小异。
总结一下:台达plc和西门子的区别:西门子plc的modbus功能只需要调用系统的库程序,没有用到特殊寄存器,读取数据的存放位置直接指定普通寄存器即可,通讯参数也是直接把参数输入。而台达plc要实现modbus功能,需要用到系统指定的特殊寄存器,只要按照应用手册的例子编程就好了。
好了,今天就说到这里吧,欢迎大家一起交流。
相关问答
PLC主站从站什么意思?
是指在工业自动化控制系统中,PLC(可编程逻辑控制器)的通讯方式。其中,PLC主站是指负责控制、监视和调度PLC从站的设备,通常由计算机、上位机、控制器等设备...
plcmodbus主站和从站区别?
Modbus主站和从站区别为:发出指令不同、唯一性不同、对接不同。一、发出指令不同1、Modbus主站:Modbus主站可以主动发出指令。2、Modbus从站:Modbus从站不...
plc从站能发数据给主站吗?
1.可以2.PLC从站可以向主站发送数据,这是因为PLC从站作为一个被动设备,它接收主站的指令并执行相应的操作。在某些情况下,PLC从站也可以主动向主站发送数据...
一个plc能同时做主站和从站吗?
从技术上来说,PLC是可以同时担任主站和从站的角色,因为PLC本质上是一个可编程的控制器,可以根据不同的程序对输入输出进行控制和通信。但是要实现PLC同时做主...
台达PLC主站与从站通讯问题?
可能原因为:1.RS-485配线不正确;2.主从站的通讯格式与通讯速率设置不一致你应该按照以下方式做:1.检查配线;2.将主从站回归出厂值,然後重新设置通讯格式与...
三菱plc主站就是cpu的站对吧。本地站是从站的意思吗?
应该不是吧主站和从站都有CPU啊,只是赋予的主次关系不一样而已把当主站CPU出现异常是可以启用从站CPU我觉得应该是这样子的应该不是吧主站和从站都有CPU...
fx5umodbustcp主站设置?
1.将通讯模块接入PLC的通讯口,扩展的网口连接modbusTCP客户端(PC或者DCS)。2.通过IE浏览器查看BCNet模块的参数在IE浏览器中,如果BCNet模块当前的IP地址,...
西门子PLC主站(S7-300)+从站(S7-200)+HMI(西门子触控屏)+变频器+PC如何实现通信?触屏与PC同时控制?
300与200用EM277联起来PC明显是用它自身的以太网卡就是我们平时的上网卡哪300处挂个CP网卡然后网线出来接到交换机上这样你的电脑可以接到交换机上再者就...
plc主从站与远程区别?
PLc的主站和从站是领导与被领导的关(这里是一个不太恰当的比喻)。主站手了是有令牌的,向从站发出指令,从站是指令的接受方。按照指令去执行数据交换,操作设...
西门子plc主站和子站的DP地址怎么查看?
PLC地址在STEP7硬件组态中确定分站的地址是由硬件上拨码确定的,1、2、4、8、16、32,由这几个数字相加得到,子站的DP地址也是这样相加。PLC地址在STEP7硬件组...