西门子PLC通过PROFINET控制其他厂商变频器
案例目标
本案使用的西门子PLC为S7-1217,本案例同样适用于S7-1500。PLC的开发环境为TIA v14,使用的变频器为博能传动A1系列驱动器,通信为PROFINET通信。
PROFINET通信拓扑
添加西门子PLC
打开项目视图,点击“添加新设备”,弹出添加新设备对话框;在设备树中选择PLC型号,我选择S7-1517,然后点击【确定】。
安装变频器设备描述文件
点击菜单栏的“选项”按钮,选择“管理通用站描述文件(GSD)(D)”。
然后,选择设备描述文件所在的文件路径,勾选文件,点击安装。
在“网络视图”下的“硬件目录”中,按照“其他现场设备\PROFINET IO\Drives\BONENEG\AGILE Drive\BONENG A1-CM25-PN”路径,可以找到已安装的设备描述文件。
组态设备
添加驱动器设备
点击“设备和网络”,进入网络视图页面;
将硬件目录中“”模块拖拽至网络视图空白处;
点击蓝色提示“未分配”以插入站点,选择主站“PLC_1.PROFINET 接口_1”,完成与IO控制器的网络连接。
选择“拓扑视图”,用鼠标连接PLC与驱动器端口1。
组态驱动器报文
将硬件目录中的“标准报文2,PZD-2/6”模块拖拽到“设备概览”视图的插槽中,系统自动分配了输入输出地址,本例中分配的输入地址IW76,IW78,IW80,IW82,IW84,IW86;输出地址QW68,QW70。
导入第三方驱动库
打开TIA软件在【选项】中的【全局库】选择【恢复库】
在目录中找到库文件,点击打开。
选择保存的目录,点击确定。
库载入完成后,可以在TIA的【库】中找到添加的库,添加库就完成了。
速度控制块
使用速度控制块前,请将驱动器功能码C05.02设为”1:速度控制功能块”。C05.00报文类型根据实际报文类型选择。速度控制块支持的报文类型有标准报文2,标准报文4,标准报文5和标准报文7。
将库中的”Bn_VelocityControl”拖入程序中,每一个速度控制块对应一台驱动器,当多台驱动器时,注意修改速度控制块的名称,避免重复。
PZD_InAddr是对应的驱动器的输入参数的首地址,PZD_OutAddr是对应的驱动器的输出参数的首地址。
参数名称 |
类型 |
输入输出 |
说明 |
---|---|---|---|
Enable |
Bool |
输入 |
0:驱动器进入开机*状态。 1:驱动器进入开机准备状态 |
Run |
Bool |
输入 |
0:停机,按照Stop mode设定的方式。 1:驱动器运行。(运行前是开机准备状态) |
Quick stop |
Bool |
输入 |
1:快速停机无效。 0:快速停机有效 |
Fault reset |
Bool |
输入 |
0:故障复位无效 1:复位故障 |
Motion rotation |
Bool |
输入 |
0:正转 1:反转 |
Stop mode |
Bool |
输入 |
0:减速停机 1:*停机 |
Target velocity |
Word |
输入 |
给定速度或给定频率。类型与Max velocity相同 |
Max velocity |
Word |
输入 |
额定速度或者额定频率。 |
PZD_InAddr |
Word |
输入 |
输入参数首地址,注意是数字,无”IW”类型。 |
PZD_OutAddr |
Word |
输入 |
输出参数首地址,注意是数字,无”QW”类型。 |
Ready to start bit |
Bool |
输出 |
0:当前驱动器处于开机*状态。 1:当前驱动器处于开机准备状态。 |
Run state bit |
Bool |
输出 |
0:当前驱动器处于停机状态。 1:当前驱动器处于运行状态 |
Fault bit |
Bool |
输出 |
0:无故障。1:驱动器故障 |
State word |
Word |
输出 |
驱动器状态字。 |
Velocity actual |
Word |
输出 |
实际速度值,与目标速度类型相同。 |
Current actual |
Word |
输出 |
实际输出电流值 |
Voltage actual |
Word |
输出 |
实际输出电压值 |
Error code |
Word |
输出 |
故障代码 |
PZD6 value |
Word |
输出 |
自定义参数 |
PKW控制块
PKW块支持的报文类型有标准报文6和标准报文7。
将库中的”Bn_PKW”拖入程序中,每一个速度控制块对应一台驱动器,当多台驱动器时,注意修改速PKW块的名称,避免重复。
PKW_InAddr是对应的驱动器的输入参数的首地址,PKW_OutAddr是对应的驱动器的输出参数的首地址。
参数名称 |
类型 |
输入输出 |
说明 |
---|---|---|---|
Execute |
Bool |
输入 |
0:无效。1:执行读写操作 |
PKE |
Word |
输入 |
访问参数的Modbus地址 |
IND |
Word |
输入 |
读写命令 |
PWE1 |
Word |
输入 |
|
PWE2 |
Word |
输入 |
|
PKW_InAddr |
Word |
输入 |
输入参数首地址,注意是数字,无”IW”类型。 |
PKW_OutAddr |
Word |
输入 |
输出参数首地址,注意是数字,无”QW”类型。 |
Done |
Bool |
输出 |
读写操作完成。 |
Busy |
Bool |
输出 |
正在读写中。 |
Error |
Bool |
输出 |
读写错误。 |
RdVal |
Array[1..2] of Word |
输出 |
读取到的值。 |
ErrorCode |
Bool |
输出 |
错误代码 |
IND请求类型
IND值 |
说明 |
---|---|
0 |
无请求 |
1 |
读参数(单字) |
2 |
读参数(双字) |
3 |
写参数(单字) |
4 |
写参数(双字) |
IND应答类型
IND值 |
说明 |
---|---|
0 |
无应答 |
1 |
读完成(单字) |
2 |
读完成(双字) |
3 |
写完成(单字) |
4 |
写完成(双字) |
5 |
读写错误 |
PWE应答错误类型
PWE |
说明 |
---|---|
00 |
无错误 |
01 |
访问参数不存在,地址错误 |
02 |
参数超限 |
03 |
参数为只读参数,不允许写 |
04 |
无权限访问 |
05 |
停机修改 |
06 |
IND操作码错误 |
实例程序供大家学习,实例程序使用S7-1500通过PROFINET控制8台博能传动A1系列驱动器,程序包含一个Wincc的组态界面。