西门子S7-200 SMART Modbus RTU通信,如何编写从站程序和主站程序?

简介: 本篇我们来学习S7-200 SMART的Modbus RTU通信以及从站程序和主站程序的编写。

本篇我们来学习S7-200 SMART的Modbus RTU通信以及从站程序和主站程序的编写。


通过集成RS485端口或可选通信板SM CM01的RS485/RS232端口,S7-200 SMART可以作为Modbus RTU主站或者从站同多个设备进行通信。


640.jpg


Modbus RTU通信端口

   

西门子S7-200 SMART作为Modbus RTU主站时,最多可以控制247个从站,通信板SB CM01与CPU集成端口功能是一样的。利用STEP7 Micro/WIN SMART指令库编程可以使Modbus RTU主站和从站通信更为简单。下面我们通过一个简单的实例来练习使用S7-200 SMART Modbus RTU通信。


640.jpg


Modbus RTU主站

   

需要完成如下通信任务:


1、Modbus主站读取Modbus从站DI通道I0.0开始的16位的值;


2、Modbus主站向Modbus从站前5个保持寄存器写入数据。本次试验所需的硬件有:两台S7-200 SMART CPU、一台以太网交换机CSM1277、一台编程计算机、一根PROFIBUS通信电缆、三根以太网电缆。硬件之间的连接如下图中所示:


640.jpg

硬件连接

   

下面,我们先来学习编写Modbus RTU从站程序。首先编写Modbus从站初始化程序,在Modbus从站项目中完成硬件组态和符号定义后,在指令树中展开指令树库文件夹下的Modbus RTU Slave文件夹,拖放Modbus从站初始化指令到主程序中,在文件菜单功能区单击存储器按钮打开库存储器分配对话框,输入该指令库存储器的起始地址,例如VB1000,也可以单击建议地址按钮,系统自动计算可用的存储器地址。注意该存储区不能再重复使用。


640.jpg


设置指令库存储器起始地址

   

使能端插入一个常开触点,输入首次扫描位地址SM0.1,模式参数输入1,启用Modbus协议,Modbus从站地址设置为3,波特率设置为9600,奇偶校验设置为偶校验,端口设置为使用CPU集成的RS485端口,延时参数在有线网络运行时设置为0,可访问的IQ点数设置为256,可访问的AI寄存器数设置为16,可访问的V存储区中的字保持寄存器数设置为100,V存储区中的保持寄存器起始地址设置为VB0,输入初始化完成标志位地址和错误代码输出地址。


640.jpg


Modbus从站初始化指令

   

编写Modbus从站通信程序,从指令树中拖放Modbus从站通信指令到程序中,使能端插入一个常开触点,输入始终接通位地址SM0.0,输入从站通信完成标志位地址,输入错误代码输出地址。为了直观的查看试验结果编写程序将主站写入从站的第一个保持寄存器的数据送入QW0,用CPU面板的输出点指示灯显示,单击保存按钮保存项目。


640.jpg

Modbus从站通信指令

   

在项目树中展开程序块的库文件夹,可以看到Modbus从站指令使用了三个子程序和两个中断程序,将程序编译下载到PLC,设置CPU为RUN工作模式,至此,Modbus从站的编程就完成了。


640.jpg


编译下载程序

   

以上,我们介绍了S7-200 SMART的Modbus RTU通信如何编写从站程序,下面我们继续来学习编写Modbus RTU通信主站程序:

   

首先,我们来编写Modbus主站初始化程序,在Modbus主站项目中完成硬件组态和符号定义后,在指令树中展开指令树库文件夹下的Modbus RTU Master文件夹,拖放Modbus主站初始化指令到主程序中。


640.jpg

拖放Modbus主站初始化指令

   

与从站类似,分配库存储器,使能端插入一个常开触点,输入始终接通位地址SM0.0,模式端也插入一个常开触点输入地址SM0.0,启用Modbus协议。波特率设置为9600,奇偶校验设置为偶校验,端口设置为使用CPU集成的RS485端口,超时参数设置为1000毫秒,输入初始化完成标志位地址和错误代码输出地址。


640.jpg

设置Modbus主站初始化指令参数

   

编写实现Modbus主站读写Modbus从站的通信程序。要启动对Modbus从站的读写请求和处理响应需要使用Modbus通信指令,请注意同一时刻只能有一条Modbus通信指令处于激活状态,使用多条该指令时需要编写程序实现轮询。如下图所示,程序段2实现的功能是首次扫描时置位使用Modbus通信标志位,复位其它Modbus通信指令使能位。


640.jpg

程序段2

   

程序段3实现的功能是,当启用或者第一次调用Modbus通信指令时,从地址为3的Modbus从站中读取地址10001开始的16个数据,也就是读取DI通道从I0.0开始的十六位的值,读取到的数据存放到主站VB0开始的存储区中。


640.jpg

程序段3

   

程序段4实现的功能是,第一次调用完成后复位启用标志位,复位第一次调用使能位,复位第二次调用完成位,置位第二次调用使能位。


640.jpg


程序段4

   

程序段5实现的功能是,第二次调用时向地址为3的Modbus从站写入5个保持寄存器数据,从CPU的VB10到VB19获取5个字数据,然后写入到Modbus从站中的地址40001到40005。


640.jpg

程序段5

   

程序段6实现的功能是,第二次调用完成后复位第二次调用使能位,复位第一次调用完成位,置位第一次调用使能位。这样就通过轮询来实现了读Modbus从站输入位和写Modbus从站保持寄存器的功能,单击保存按钮保存项目,在项目树中展开程序块下的库文件夹,可以看到Modbus主站指令使用了三个子程序和一个中断程序。


640.jpg


程序段6

   

将程序编译下载到PLC,设置CPU为RUN工作模式,这样Modbus主站的编程就完成了。

相关文章
|
测试技术
西门子S7-200 SMART自由口通信,如何编写发送程序,使用超级终端发送测试
今天我们学习编写西门子S7-200 SMART自由口通信的发送程序,并使用超级终端进行发送功能测试。首先设置参数,打开STEP7 Micro/WIN SMART编程软件,右键单击项目树中的CPU,选择打开,在打开的系统块中选择CPU类型和信号板类型。设置信号板,串口的类型为RS232,地址为2,波特率为9600。
西门子S7-200 SMART自由口通信,如何编写发送程序,使用超级终端发送测试
|
1月前
【通信协议讲解】单片机基础重点通信协议解析与总结之串口通信(三)
【通信协议讲解】单片机基础重点通信协议解析与总结之串口通信(三)
|
1月前
|
网络协议 数据格式
【通信协议讲解】单片机基础重点通信协议解析与总结之ModBus(五)
【通信协议讲解】单片机基础重点通信协议解析与总结之ModBus(五)
|
4月前
|
安全 数据处理
LabVIEW与PLC通讯方式及比较
LabVIEW与PLC通讯方式及比较
71 0
|
6月前
|
Java
java实现上位机与西门子PLC的通讯设置
这段代码创建了一个ZCAN_Transmit_Data数组,初始化并设置了数组中的第一个元素,包括写入数据、传输类型为1。然后,创建了一个ZCAN_CAN_FRAME对象,指定了CAN_ID和数据长度为8,并将十六进制字符串转换为字节数组填充到数据字段。将这个帧赋值给ZCAN_Transmit_Data对象。最后通过ZLGCAN接口发送数据,如果返回值不等于1,则抛出异常,否则返回发送结果。
260 0
|
6月前
[通讯方式] 串口通信
[通讯方式] 串口通信
102 0
|
监控 网络协议 物联网
优秀的 Modbus 主站(主机、客户端)仿真器、串口调试工具
优秀的 Modbus 主站(主机、客户端)仿真器、串口调试工具。modbus master,modbus,串口,工控,物联网,PLC,嵌入式
255 1
优秀的 Modbus 主站(主机、客户端)仿真器、串口调试工具
Beckoff的EtherCAT从站代码架构解析
Beckoff的EtherCAT从站代码架构解析
|
存储 测试技术
西门子S7-200 SMART自由口通信,如何编写接收程序
本篇我们来学习编写西门子S7-200 SMART自由口通信的接收程序。我们继续使用上篇文中STEP7 Micro/WIN SMART编程软件所创建的项目,删除已经编写的发送程序,再来编写接收程序,拖动常开触点到程序段1中,输入地址SM0.1,通过传送指令,将常数十六进制数09送到SMB130。
西门子S7-200 SMART自由口通信,如何编写接收程序
|
存储 人工智能
西门子S7-200 SMART Modbus RTU通信,如何编写从站程序
上篇文章中我们通过一个例子学习了西门子S7-200 SMART中断程序的编写,本篇我们开始学习S7-200 SMART的Modbus RTU通信。通过集成RS485端口或可选通信板SM CM01的RS485/RS232端口,S7-200 SMART可以作为Modbus RTU主站或者从站同多个设备进行通信。
西门子S7-200 SMART Modbus RTU通信,如何编写从站程序