案例目标
本案使用的西门子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的组态界面。