正 文
此范例将向大家介绍如何应用S7-200 SMART 的 USS 协议对西门子V20 变频器进行通讯控制。使大家更加熟练的掌握和灵活的应用S7-200 SMART 的 USS通讯协议功能。
一、 通讯连接:
用电缆将S7-200 SMART Port 0端口与V20的RS485接口相连(注意端口连接规则:V20的P+对3、N-对8),如下图所示:
二、 西门子V20系列变频器通讯参数设置
1. 首先对变频器恢复出厂设置:设置P0010=30,P0970=21
2. 选择连接宏 Cn010 -USS 控制
3. 选择设定好连接宏为CN010后,设置P0003=3(专家级),修改P2014=0
三、 程序编写
S7-200 SMART USS 标准指令库包括 USS_INIT、USS_CTRL、USS_RPM_X、USS_WPM_X等指令。调用这些指令时会自动增加一些子程序和中断服务程序。
选择 USS_INIT 指令,初始化模块初始化S7-200 SMART的PORT0端口
EN: 初始化程序 USS_INIT 只需在程序中执行一个周期就能改变通信口的功能,以及进行其他一些必要的初始设置,因此可以使用 SM0.1 或者沿触发的接点调用 USS_INIT 指令;
Mode: 模式选择,执行 USS_INIT 时 ,Mode 的状态决定在通讯端口上是否使用 USS 通信功能;
= | 1 | 设置为 USS 通信协议并进行相关初始化 | |
---|---|---|---|
0 | 恢复为 PPI 协议并禁用USS通信 |
Baud: USS 通信波特率。此参数要和变频器的参数设置一致;
= | 1200 bit/s | |
---|---|---|
2400 bit/s | ||
4800 bit/s | ||
9600 bit/s | ||
19200 bit/s | ||
38400 bit/s | ||
57600 bit/s | ||
115200 bit/s |
Port: 0 = CPU 集成的 RS485 通讯端口;1 = 可选CM 01 信号板。
Active:指示激活的变频器站地址。
Done: 初始化完成标志
Error: 初始化错误代码
Active参数:USS_INIT 子程序的 Active 参数用来表示网络上哪些 USS 从站要被主站访问,即在主站的轮询表中激活。网络上作为 USS 从站的驱动装置每个都有不同的 USS 协议地址,主站要访问的驱动装置,其地址必须在主站的轮询表中激活。USS_INIT 指令只用一个 32 位长的双字来映射 USS 从站有效地址表,Active 的无符号整数值就是它在指令输入端的取值。
表 1. 从站地址映射
在这个 32 位的双字中,每一位的位号表示 USS 从站的地址号;要在网络中激活某地址号的驱动装置,则需要把相应位号的位置设为二进制“1",不需要激活 USS 从站,相应的位设置为”0"。最后对此双字取无符号整数就可以得出 Active 参数的取值。
在表 1 的例子中,如果使用站地址为 1 的 V20变频器,则须在位号为 01 的位单元格中填入二进制“1"。其他不需要激活的地址 对应的位设置为”0"。取整数,计算出的 Active 值为 00000002 h,即 16#00000002,也等于十进制数2。
建议使用 16 进制数,这样可以每 4 位一组进行加权计算出 16 进制数,并组合成一个整数。当然也可以表示为十进制或二进制数值,但有时会很麻烦,而且不直观。
如果一时难以计算出有多个 USS 从站配置情况下的 Active 值,可以使用 Windows 自带的计算器。将其设置为科学计算器模式,可以方便地转换数制。
选择 USS_CTRL指令,用于对单个驱动装置进行运行控制
EN: 使用 SM0.0 使能 USS_CTRL 指令
RUN: 驱动装置的启动/停止控制
= | 0 | 停止 |
---|---|---|
1 | 运行 |
此停车是按照驱动装置中设置的斜坡减速指电机停止
OFF2: 停车信号 2。此信号为“1”时,驱动装置将封锁主回路输出,电机自由停车
OFF3: 停车信号 3。此信号为“1”时,驱动装置将快速停车
F_ACK: 故障确认。当驱动装置发生故障后,将通过状态字向 USS 主站报告;如果造成故障的原因排除,可以使用此输入端清除驱动装置的报警状态,即复位。注意这是针对驱动装置的操作。
DIR: 电机运转方向控制。其“0/1”状态决定运行方向
Drive: 驱动装置在 USS 网络上的站号。从站必须先在初始化时激活才能进行控制
Type: 向 USS_CTRL 功能块指示驱动装置类型
= | 0 | MM 3 系列,或更早的产品 |
---|---|---|
1 | MM 4 系列,SINAMICS G 110,SINAMICS V 20 |
Speed_SP: 速度设定值。该速度是全速的一个百分数;“Speed_SP”为负值将导致变频器反向运行。
Resp_R: 从站应答确认信号。主站从 USS 从站收到有效的数据后,此位将为“1"一个程序扫描周期,表明以下的所有数据都是最新的
Error: 错误代码。0 = 无出错。其他错误代码请参考
Status: 驱动装置的状态字。此状态字直接来自驱动装置的状态字,表示了当时的实际运行状态
详细的状态字信息意义请参考相应的驱动装置手册。
Speed: 驱动装置返回的实际运转速度值,实数。
Run_EN: 运行模式反馈,表示驱动装置是运行(为 1)还是停止(为 0)
D_Dir: 指示驱动装置的运转方向,反馈信号
Inhibit: 驱动装置禁止状态指示(0 - 未禁止,1 - 禁止状态)。禁止状态下驱动装置无法运行。要清除禁止状态,故障位必须复位,并且 RUN, OFF2 和 OFF3 都为 0
Fault: 故障指示位(0 - 无故障,1 - 有故障)。表示驱动装置处于故障状态,驱动装置上会显示故障代码(如果有显示装置)。要复位故障报警状态,必须先消除引起故障的原因,然后用 F_ACK 或者驱动装置的端子、或操作面板复位故障状态。
因Speed_SP为速度是全速的一个百分数,即输入50HZ对应100%,转换如下图:
读写参数
在任一时刻 USS 主站内只能有一个参数读写功能块有效,否则会出错。因此如果需要读写 多个参数(来自一个或多个驱动装置),必须在编程时进行读写指令之间的轮替处理。
轮询处理方式可以参考下面给出一个简单的例子,方法不是唯一的。
读取V20频率实际值,读参数号r0021,经过滤波的频率实际值[Hz]
EN: 要使能读写指令此输入端必须为 1
XMT_REQ: 发送请求。必须使用一个沿检测触点以触发读操作,它前面的触发条件必须与 EN 端输入一致
Drive: 要读写参数的驱动装置在 USS 网络上的地址
Param: 参数号(仅数字)。此处也可以是变量
Index: 参数下标。有些参数由多个带下标的参数组成一个参数组,下标用来指出具体的某个参数。对于没有下标的参数,可设置为 0
DB_Ptr: 读写指令需要一个 16 字节的数据缓冲区,用间接寻址形式给出一个起始地址。此数据缓冲区与“库存储区”不同,是每个指令(功能块)各自独立需要的。
此数据缓冲区也不能与其他数据区重叠,各指令之间的数据缓冲区也不能冲突
Done: 读写功能完成标志位,读写完成后置 1
Error: 出错代码。0 = 无错误
Value: 读出的数据值。该数据值在 “Done”位为1时有效。
读取V20电流实际值,读参数号r0027,输出电流实际值
读写实数(浮点)类型参数
使用USS_RPM_R读取参数P1058的值
注意:
(1)读参数P1058,其数据类型为实数。
(2)只要M10.1接通一个上升沿,就完成一次P1058参数的读操作。
(3)读入的参数被放在VD116里。
(4)需要注意的是Index为0时代表读Pxxx.0参数组
使用USS_RPM_R修改参数P1058的值
注意:
(1)写参数P1058.In000,其数据类型为浮点数。
(2)只要给M10.2一个上升沿,就完成一次参数P1058.In000的写操作。
(3)EEPR~的逻辑为0时,写入的值只保存到RAM中,为1时,写入得值保存到EEPROM。
(4)EEPROM中写数据是有次数限制的,V20最多不超过50000次
分配库存储区地址
USS 指令库需要大概 402 个字节的 V 存储区用于支持其工作。调用 USS_INIT 指令后就可以为 USS 指令库分配库存储区。也可以在编程的稍后阶段分配存储区地址,但这一步是必不可少的,否则程序无法通过编译。
根据 S7-200 SMART中的数据存储区分配原则,分配给库指令的数据区绝对不能与其他程序使用的数据区有任何重叠。否则会造成出错。
右击库,点击库存储器
分配库存储器地址
最后编译下载整个项目
打开状态图表,设定频率为5HZ,修改点动频率值为8.8HZ,运行变频器
作者简介
耿国新:山东邹平县人,机电一体化专业,熟练使用西门子全系列PLC,HMI、WINCC、组态王等上位系统的编程组态应用。有着10年以上电气项目设计/调试经验(电厂脱硫、脱销、除尘电气控制,污水处理电气控制)。