文章目录
- 前言
- 一、功能概述
- 二、变频器控制程序编写
-
- 1. 新建自定义数据类型“11_VFDType”
- 2. 新建FC块“FC613_VFDControl”
- 3. 编程
- 三、通讯程序编写
- 总结
前言
在之前的文章中,我们介绍了西门子G120变频器在博途中的参数设置方法,见文章《西门子G120变频器参数设置教程及Startdrive软件使用方法》。 本文基于以上文章中提到的西门子报文352,编写一个变频器报文控制功能块。
一、功能概述
二、变频器控制程序编写
1. 新建自定义数据类型“11_VFDType”
图1
2. 新建FC块“FC613_VFDControl”
添加如下引脚变量:
图2
3. 编程
程序段1:变频正向运行DO
程序段2:变频反向运行DO
程序段3:反馈值计算
REGION 电流反馈值
#IntST_I := WORD_TO_INT(#Drive.ST_I);
IF #IntST_I < 0 THEN
#IntST_I := 0;
ELSIF
#IntST_I > 16384 THEN
#IntST_I := 16384;
END_IF;
IF #Drive.STW1_Bit2 THEN
#CurrentValue := INT_TO_REAL(#IntST_I) * #CurrentRange / 16384.0;
ELSE
#CurrentValue := 0;
END_IF;
END_REGION
REGION 速度反馈值
#IntST_S := WORD_TO_INT(#Drive.ST_S);
IF #IntST_S < 0 THEN
#IntST_S := 0;
ELSIF
#IntST_S > 16384 THEN
#IntST_S := 16384;
END_IF;
IF #Drive.STW1_Bit2 THEN
#SpeedValue := INT_TO_REAL(#IntST_S) * #SpeedRange / 16384.0;
ELSE
#SpeedValue := 0;
END_IF;
END_REGION
REGION 转矩反馈值
#IntST_T := WORD_TO_INT(#Drive.ST_T);
IF #IntST_T < 0 THEN
#IntST_T := 0;
ELSIF
#IntST_T > 16384 THEN
#IntST_T := 16384;
END_IF;
IF #Drive.STW1_Bit2 THEN
#TorqueValue := INT_TO_REAL(#IntST_T) * #TorqueRange / 16384.0;
ELSE
#TorqueValue := 0;
END_IF;
END_REGION
程序段4:启动停止命令
程序段5:急停命令
程序段6:故障复位
程序段7:正转、反转速度/频率设定值
程序段8:设定值计算
REGION 速度设定值
IF #TempSpeedSet < 0.0 THEN
#TempSpeedSet := 0.0;
ELSIF
#TempSpeedSet > #SpeedRange THEN
#TempSpeedSet := #SpeedRange;
END_IF;
#Speed_AO := REAL_TO_INT(#TempSpeedSet / #SpeedRange * 16384.0);
END_REGION
REGION 频率设定值
IF #TempFrequencySet < 0.0 THEN
#TempFrequencySet := 0.0;
ELSIF
#TempFrequencySet > 50.0 THEN
#TempFrequencySet := 50.0;
END_IF;
#Frequency_AO := REAL_TO_INT(#TempFrequencySet / 50.0 * 16384.0);
END_REGION
IF NOT #HMIMode THEN
#Drive.CW_S_Set := INT_TO_WORD(#Frequency_AO);
ELSE
#Drive.CW_S_Set := INT_TO_WORD(#Speed_AO);
END_IF;
三、通讯程序编写
打开设备试图,选择变频器-属性-系统常数,得知西门子报文352的硬件标识符为272。
图3 通过DPRD_DAT和DPWR_DAT指令,读写变频器数据。 
总结
本文基于西门子G120变频器报文352,设计了变频器控制功能块。



