首页 西门子变频器 正文

回复

S7-1200与G120 Profinet自由报文Bico互联控制实例

西门子变频器 浏览:36 回复:0 收藏

EE_Notes  2025-08-22 09:57

  本文介绍一种PLC使用Profinet通信控制变频器等应用时,比较经典的控制用法。依托TIA Protal V18环境实现S7-1200与G120充分利用999自由报文和Bico技术的灵活性,简化系统架构,减少图纸设计工作量,提高PLC程序的柔性。

  本项目由一台S7-1200控制14台G120变频器,变频器分布在现场设备就近各电气室内。

图片
  因为各台变频器接线方式完全一致,我们以一台为例说明,原理图如下:
图片

  变频器输出侧配有主回路接触器,并要求对接触器状态信号进行监控;变频电机风机的启/停,故障信号也要进行监控。传统做法这些监控信号需要接入分布I/O或直接接入PLC。由原理图可见,实际上我们将这些需要监控的信号全部接入变频器CU控制单元的I/O端子,并经由Profinet网络通过999报文实现控制和监视功能,下面就来看详细方法。

  由于使用999自由报文,报文长度可以自己定义,考虑数据量和未来扩展,我们采用了6个读和6个写的PZD长度,根据报文形式,建立全局变量表,如下图:

图片
这里有一个细节问题,由于TIA Protal变量表数据索引方式和原来的STEP7 Manager不同,不能直接使用全局变量表中一个整字(INT或Word数据类型)中的某一位或几位,所以使用了Array of Bool数据类型,进行对需要拆分使用的PZD的定义,后面会介绍拆分和组合的例程和指令说明。
图片
接下来组态G120变频器侧的通讯,由于选择了999报文,组态方式相对灵活,6进6出PZD的长度并未完全用使用。
先看变频器接收到的3个PZD,分别是控制字、给定值、输出接触器控制字(位)。控制字和给定值(前两个PZD字)组态及PLC控制程序如下所示:
图片
用于启动变频器程序如下:
图片
用于停止变频器程序如下:
图片
用于远端故障复位程序如下:
图片
PLC发送命令数据到G120变频器:
图片
第4个PZD字第0位数据控制主回路接触器。组态及PLC控制程序如下:
图片
图片
图片
接下来看变频器要发送的5个PZD,分别是状态字、转速实际值、电流实际值、转矩实际值和I/O端子状态。组态及PLC控制程序如下所示:  
图片

PLC读取实际数据来自G120变频器:

图片

实际数据中转速实际值、电流实际值、转矩实际值的换算部分略过,重点介绍一下读写数据程序中的GATHER指令和SCATTER指令,前面说到过TIA Protal变量表数据索引方式和原来的STEP7 Manager不同,并不能直接使用全局变量表中一个整字(INT或Word数据类型)中的某一位或几位,那么我们要使用状态字、接触器控制位和I/O状态反馈中的某一位或几位就需要用GATHER指令和SCATTER指令对数据进行组合和拆分,下面是这两条指令的功能说明:(Tips 用SCATTER指令拆分的INT或Word数据类型字节序已经自动转换。)

图片

图片

实际PLC程序中,对数据进行按位组合发送:

图片

  对需要按位使用的数据进行按位拆分:

图片

这样得到的数据可以利用在程序中,例如进行HMI显示元件赋值和故障字报警字状态的组织:

图片

图片

图片

图片

篇幅有点长,但相信耐心读完一定有所收获。时间仓促,语言组织有些不足,欢迎评论区批评指正和讨论。欢迎点亮❤️,点赞,转发支持。































我知道了