轻松玩转USS

USS(Universal Serial Interface,通用串行通信接口)是西门子专为驱动装置开发的一种基于串行总线传输数据的通信协议。可将变频器与PLC或PC进行通信连接,并直观地实现对驱动器的监控。

USS是一种主从结构协议,USS总线上只允许有一个主站和最多31个从站,且每个从站拥有唯一的站地址。其工作机制是由主站发起、轮询访问各个从站,从站接收到主站报文且本站被主站寻址时,才会做出响应。

USS协议的波特率最高可达115.2 kbps,通信字符格式为:1个起始位,8个数据位,1个偶校验位和1个停止位。USS通讯的刷新周期与PLC的扫描周期是不同步的,通讯时间与通讯波特率、总线上变频器的台数以及扫描周期有关。

使用S7-1200/1500的USS程序块,用户无需详细了解USS协议格式,通过简单的调用,即可完成USS通讯,实现对驱动器的控制。

下面以以一台S7-1200PLC与两台变频器的通讯为例,完成USS通讯控制。

一. 新建项目、硬件组态

1. 打开TIA Portal v14 SP1新建项目,添加CPU 1214C AD/DC/Rly。

2. 组态硬件:添加通信模块_点到点_CM1241 (RS422/485),模块操作模式选择“半双工(RS485)两线制模式”,编译保存硬件组态。

二. 通讯编程

1. USS_PORT端口组态

打开OB1主程序调用USS端口组态程序:

2. USS_DRV与驱动器交换数据

添加函数快FB1, 组态“块接口”,关联程序块相关管脚:

调用USS_DRV程序块,将生成的“USS_DRV_DB”关联到“USS_PORT端口组态”的“USS_DB”管脚:

由于程序块中输入管脚“SPEED_SP”与输出管脚“SPEED”所代表的频率值均为最大频率(P1082)百分比,这里我在“USS_DRV”程序块前后做了换算:

3. 新建PLC数据类型,重命名为“USS控制参数”,添加相关控制参数:

4. 添加函数快FB2,调用两次FB1:

再次组态“块接口”(本属于个人习惯,将FB1嵌套调用,所需接口直接显示在OB1,调试更清楚一些,多此一举,可不做。 )

5. 添加全局DB,调用PLC数据类型“USS控制参数”2次(或N次):

6. OB1调用函数快FB2,填写管脚地址:

7. 变频器参数设置与电气接线

1. 参数设置:

命令源选择P700=5(COM链路的USS设置)

频率源选择P1000=5(通过COM链路的USS设定)

USS控制支持OFF2、OFF3两种停机方式,当以OFF2自由停机时,变频器禁止输出,电动机惯性停机;当以OFF3快速停机时,电动机以P1135设定的减速时间减速到0Hz。

2. 西门子变频器RS485通讯端口为控制端子的29#和30#;

三. 总结

我们做了1200PLC通过USS通讯对两台变频器的控制,或者说31台的控制。似乎是很简单也很方便。整个过程完成,我们做了USS通讯,UDT,多重背景,FB块嵌套......等等。

那么,有没有一种更简单的方法来实现对31台变频器的USS控制呢?通过对USS程序块的观察发现,是不是有一个叫做“DRIVE”的管脚?它是定义从站地址的,那我们是不是可以不做UDT,不做多重背景,只调用一次“USS_DRV”,通过上位机改变“DRIVE”的值,即改变从站地址的方式,实现PLC对多台变频器的监控呢???……

预知后事如何,请听下回分解。

作者简介

崔晗:工控爱好者,自学实战型工控男。河北承德人。机电一体化专业,现主要从事商用制冷检测工作。
   对CAD、EPLAN电气原理图设计,西门子的PLC、HMI、变频器、WinCCSCADA系统,以及市场主流的一些国产工控产品,如组态王,威纶通等都有着丰富的应用经验。对于现场总线,传感器,流量计,现场智能仪表的应用也有相应的应用经验。
    热爱工控!!! 爱好就是最好的动力!