线下实训
HOME
线下实训
正文内容
plc编程写入modbus 实例分享!告诉你西门子PLC如何通过MODBUS控制变频器
发布时间 : 2025-06-21
作者 : 小编
访问数量 : 23
扫码分享至微信

实例分享!告诉你西门子PLC如何通过MODBUS控制变频器

一、MODBUS通信概述

MODBUS协议分为串行链路上MODBUS协议和基于TCP/IP协议的MODBUS 协议。 串行链路上MODBUS协议有MODBUS ASCAII(字符串) 和MODBUS RTU两种 。

200SMART所提供的MODBUS协议库能够支持MODBUS RTU通信。MODBUS RTU 是以16进制的数值进行发送 。

MODBUS ASCAII是以ASCAII码的方式进行发送,一个数据采用RTU方式发送只需要一个字节,而用ASACII码发送需要两个字节,发送时间。

PLC与变频器串口通信有很多通信方式,但常用的、首选的就是MODBUS通信方式 ,在实际的工业控制中应用非常广泛;这一期我们向大家一起分享变频器如何与PLC通过MODBUS RTU的方式进行控制。

二、MODBUS库指令详解

库指令分两种,一个是主站库,一个是从站库。

主站是PLC作为MODBUS的主站主动去读取其他设备的数据;从站是PLC作为MODBUS的从站,其他设备来读取数据;本期我们分享的是PLC作主站,变频器做从站。

STEP7-MinWIN SMART软件自带MODBUS通信库指令

初始化指令:

控制指令:

三、MODBUS RTU的通信格式(协议)

通信协议有:站号、功能码、数据地址、数据内容、校验位、结束符组成。

校验 :N=None无校验 E=Even偶校验 O=Odd奇校验

判断数据位中为1的个数是奇数还是偶数(选择偶校验如16#03中如果为1 的个数是偶数时,校验位为1 ;如果为1 的个数是奇数时,校验位为0 。选择奇校验时,为1的个数是偶数时,校验位为0 ;为1的个数是奇数时,校验位为1)

功能码指定了对从站设备读操作还是写操作,同时也指定了MODBUS寄存器地址的类型,常用功能码有:

四、PLC与变频器通信硬件的连接

在变频器上面涉及通信的端子标记有A/B RS585+/RS485-或RJ11的网口;找到相关变频器的说明书查看通信端口的接线定义,以下是台达VFD-M系列的变频器通信口接线定义

五、变频器通信参数的设置

1、 要实现变频器或仪表和PLC能正常通信,彼此的接口和协议需要一致,除此之外参数的设置也必须一致

P00 设03(频率指令)

P01 设03(运转指令)

P88 设03 (通讯地址,0-254之间)

P89 设02(波特率选择)

P92 设04 (数据格式,200SMART不支持2个停止位,因此只能选04/05任意一个参数)

P157 设01 (变频器默认的就是MODBUS模式)

2、查看说明书的启停、频率给定、运行频率、电压电流等反馈参数的地址

信息帧格式说明

表示读2103 2104两个地址的数据放在17 70 和00 00的地址里

通信协议的参数地址定义:

运行命令地址2000H 频率命令地址2001H

输出频率地址2103H 输出电流地址22104H

输出电压地址2106H 变频器温度地址 210DH

六、MODBUS通信程序的编写

在程序的开始可以加一段初始化对所有的位进行复位。

西门子S7 1200系列PLC作为modbus主站通讯编程方法

在做PLC的modbus主站通讯时,可能很多初学者都会碰到这样一个问题,就是一些读写型变量该如何来处理,因为modbus通讯程序有读和写的函数,但是我们在使用modbus通讯变量时,有读写型的变量,用的是一个地址;而我们读取和写入时,分别会用到两个地址;如何把这两个地址共用到一个地址上去呢?从而实现读写型的变量,通过读函数和写函数最终回归到一个地址。下面以西门子S71200PLC为例进行说明。

西门子官方对于modbus RTU通讯的技术方档请参数如下地址:

http://www.ad.siemens.com.cn/productportal/Prods/S7-1200_PLC_EASY_PLUS/SmartSMS/016.html

以下是我在调试过程中遇到的问题;需要注意。

注意事项:

1、作modbus主站时,缓冲区数据块需把"优化块的访问"的勾去掉,不然会报16#818C错误。

需求:

对一台台达变频器的当前频率进行读取,并可读写设定频率,其中当前频率的地址为42003,设定频率的地址为48194

编程步骤如下:

1、modbus初始化配置:

modbus初始化

2、初始化完成后,将轮询步骤赋值为1

轮询步骤赋初值

3、读取3号功能码,如读取完成,或错误,则将缓冲区数据转移到相应变量。

读取当前频率,并将读取值转存

4、对于读/写型变量,需要先判断设定值是否改变,原则上先写后读。

如下图所示:首先判断设定值是否改变,如未改变,则跳到读取设定值的步骤。

如设定值发生改变,则将设定值赋值到设定值临时变量和写数据缓冲区。然后再跳转至写操作步骤。

在写入前,需将设定值先写进modbus缓冲区

5、将设定值写入设备。MODE需改成1

modbus写入数据

6、设定值写入完成后,将跳转至下一步;直接读取刚刚写入的设定值。这样在上位机界面中就能第一时间反应出来是否写入成功。

写入完成后马上读取设定值

7、在设定值读取后成时,会将读取缓冲区的值赋值给设定值变量;但是在赋值之前,需要再次判断一下;设定值有没有发生改变,因为如果在读取设定值的过程当中设定值发生了改变,而这个时候如果没有判断是否发生改变直接赋值,原来改变的设定值将会被读取的缓冲值替代掉;这样将会造成设定值未写入成功的情况。

所以需要在读取完成后,需要再次判断一下设定值是否改变,

1、如未改变,则将读取缓冲区的值赋值给设定值和临时变量。

2、如改变了,则重新将设定值赋值给临时变量和写数据缓冲区。然后再重新跳转到写数据的步骤;再重新写入,写入完成后再重新读取。

写读完成后的判断

总结:modbus通讯因为是半双工;所以在持载多从站或需要读取写入多段数据时,必须用到轮询;而在轮询时,需要注意读取和写入的时序问题;否则很容易让一个读写型的变量出现未被写入成功的情况。即在轮询过程中有可能还未被写入成功就已被轮询的读取给覆盖了。如有初学者还有疑问或想要沟通的可以点击关注并留言评论。当然也欢迎大家一起沟通。

相关问答

plc1200怎么设置modbus485通讯?

要设置PLC1200的Modbus485通讯,首先需要确保PLC1200具备Modbus485通讯模块。然后,进入PLC1200的编程软件中,选择通讯设置,配置Modbus485通讯参数,包括波特....

西门子plc,modbus通信读取与写入程序怎么间?

仪表读上来的看是否支持IEEE754浮点数格式,先用ModScan测试用浮点数格式(正浮点和反浮点)能否正常显示,如果能正常读取和显示,那么西门子PLC通过MODBUS主站程...

engine如何连接plc?

要将引擎连接到PLC,首先需要确定PLC的通信协议和接口类型。常见的PLC通信协议包括Modbus、Profibus、Ethernet/IP等。根据PLC的通信协议,可以选择相应的通信模...

PLC怎么和485modbus通讯?

第一plc自身带485通讯模块或者是plc可以添加485模块,这需要你知道你自己的plc品牌型号,查看手册是否支持扩展485通讯。例如三菱的fx系列plcfx1s系列是不支持...

ABBPLC与MODBUS如何通信?

ABBPLC和MODBUS可以通过串口通信或以太网通信实现相互交互。1.首先,ABBPLC和MODBUS设备之间需要建立物理连接,串口通信可以通过RS485或RS232接口进行连接,...

西门子S200的modbus通讯怎么编写?

西门子S200系列的PLC可以通过MODBUS协议进行通讯。在编写MODBUS通讯程序时,需要考虑以下几个方面:确定通讯方式:MODBUS协议支持串行通讯和以太网通讯两种方式...

怎样用西门子300plcCPU自带接口实现MODBUS通讯?

s7-300自带的mpi口,不支持modbus通讯协议。如果要进行modbus通讯,需要添加cp341串行通讯模块s7-300自带的mpi口,不支持modbus通讯协议。如果要进行modbus通讯....

plcmodbus可以读写M吗?

PLCModbus协议可以读写M寄存器。M寄存器是Modbus协议中的一种保持寄存器,用于存储设备的状态信息或控制参数。通过Modbus协议,PLC可以读取M寄存器中的数据,实...

modbus功能块如何使用?

对于使用modbus功能块,首先需要了解modbus通讯协议的基本原理和相关参数设置,然后在PLC编程软件中创建modbus功能块并配置通讯参数,包括从站地址、功能码、寄...

PLC与单片机之间实现modbus通信,如何选取单片机型号和制作电路板?还有程序编写?

单片机首先要接个rs485/232芯片和PLC的通讯接口通讯,单片机需要编辑modbus通信程序,网上有很多现成的例程,单片机做modbus可以用protues软件先做个模拟,模拟...

 蓝晴晴  胡祖六简历 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2025  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部