工控网首页
>

应用设计

>

使用西门子的SCL语言编写ABB变频器的总线控制程序块

使用西门子的SCL语言编写ABB变频器的总线控制程序块

2008/6/20 14:05:00

        好的编程规范就是对一些通用的控制对象编写标准控制块,对数据处理、传递、逻辑控制实现封装,以实现代码的可重用和简化编程的目的,关于这方面的讨论,我在工控网上发表的《PLC的面向对象编程》中有介绍。
         西门子的SCL语言是符合国际标准的一种PLC编程语言,其优秀的程序结构体系和运算编程适合于标准库的开发,我在工控网上发表的《在S7300/400型PLC中使用高级语言编程》中有关于这方面的介绍。

1、硬件电路设计
本文用到的变频器为ABB的ACS800系列变频器,使用其最一般的功能,电路设计类似于下图:


        本设计将主接触器放在变频器之前,启动电机时先打开主接触器,然后启动变频器驱动电机,关断电机时,先控制变频器关闭,延时后主接触器关闭,在电机不运行的情况下,可节约电源,该设计可用于风机之类的控制,即不需要频繁的起停,值得说明的是由于ABB的总线通讯模块由变频器自身提供电源,当变频器断电后,可能导致总线故障,所以上面的设计对西门子的MM440没问题,但对ABB的变频器并不一定适合,所以另外一种设计方式就是将主接触器放在变频器的下方,该接触器一般由急停开关控制。
本程序将以第一种方式的设计为依据(该程序来自MM440控制程序的转换)

2、变频器的一般参数
<1>99.01:选择语言
<2>99.02:选择应用宏程序,不同的应用宏会预先定义不同的连接端子功能,而这些端子又随后可以被不同功能的参数定义,当多个参数使用同一个端子时,在这个端子信号被激活后,这多个参数功能均会被激活。
<3>99.04:选择电机控制模式DTC/SCALAR,当电机的额定电流小于变频器的额定电流的1/6时,可以使用SCALAR模式。
<4>99.05:电机的额定电压
<5>99.06:电机的额定电流
<6>99.07:电机的额定频率
<7>99.08:电机的额定转速
<8>99.09:电机的额定功率
<9>20.01:设置最小转速
<10>20.02:设置最大转速
<11>22.02:设置加速度时间1
<12>22.03:设置减速度时间1
<13>10.01/10.02:设定为COMM.CW,由外部EXT1/EXT2来控制电机电机启停(包括总线控制)
<14>10.03:若希望改变电机的运转方向,可以将该参数设置为”REQUEST”
<15>若该变频器的硬件设计为,主接触器位于变频器和电机之间(该设计主要用于急停控制主接触器),则主接触器的辅助常开触点可接到端子X22/5和X22/8上,用于控制变频器运行使能,可通过参数16.01来选择端子DI5(X22/5);若热敏电阻接到X22/6和X22/7上,可定义参数30.05选择”THERMISTOR”,同时必须定义参数30.04来启用热敏保护。X25(1/2/3)为继电器1输出,通过参数14.01定义其功能。

3、变频器的总线参数
<1>P98.02:fieldbus
<2>P98.07:ABB Drives,and need to modify in step 7 hardware config
<3>P51.01:check the module type:Profibus DP
<4>P51.02:node address,when the frequency hardware switch is zero,the parameter indicate the address from config.
<5>P51.03:Baud rate,consist to the setting of PLC
<6>P51.04:PPO type,consist to the setting of PLC
-----reference value--------------
<7>REF1:-20000(Dec)=-[P11.05],20000(Dec)=[P11.05]; -1:-[P11.04],0:[P11.04]
<8>P20.01/P20.02 FOR SPEED LIMIT;P20.07/P20.08:FREQUENCY LIMIT (THESE PARAMETERS WILL EFFECT THE '<7>' Set)
<9>P22.07 FOR 'OFF3' TYPE STOP TIME(stop according to fastest possible deceleration mode)
<10>P11.03/P11.06 FOR EXE REF1/REF2 SELECT,设定为COMM.REFx(表示由现场总线给定速度值)

4、关于程序块
本程序编写了四个内部速度设定点和一个外部速度设定点,手动/自动,以及报警全集成。
重要的参数介绍:
<1>Enbl:设备使能,该参数用于连接安全条件,譬如急停信号
<2>EnFV:使故障传递至人机界面容许,这是因为可视化是提供给用户最详细信息的平台,在可视化界面上显示的信息一定要正确,但实际上某些故障会导致一系列其他类型的故障产生,为了只显示那些引起最初故障的根源,需要对传递至可视化的故障进行控制。最常见的就是电源故障,该故障会导致一系列其他的故障,故可以用电源检测条件来控制可视化故障。
报警分为故障和警告,故障会导致停机,而警告则不会,在本程序中使用了大量的结构,这些结构将不同类型的变量加以区分(甚至于将可视化与非可视化故障加以区分),便于用户诊断和维护程序。这种程序看起来相当复杂,但监控起来相当方便,若开发出与之对应的人机界面控件,甚至于可以使人机界面的组态高度自动化。
<3>Aon/Aoff ; Mon/Moff :自动开/自动关,手动开/手动关,有些编程规范把手动/自动合在一起编写,这是因为他们有着一些共同的安全条件检测,本块已经把各种报警条件,安全条件作为单独的输入,这些输入都会导致电机的停转(而不管块是在手动,还是自动模式下),所以在使用本块时,对于Aon/Aoff ; Mon/Moff输入参数,只需要编写逻辑起停条件,而不需要再次串入安全条件。
<4>本程序用到了一个全局变量:"IP_1Sec",其为间隔一秒的脉冲,用于计时,所以当想使用本块时,必须先编写间隔一秒的脉冲"IP_1Sec"

5、关于程序代码的自动化生成
          西门子的SCL编辑器相对微软的编程软件而言,还相当原始,代码几乎都要手工输入,为了提高效率,可以自己开发一个辅助生成软件,譬如针对参数的定义,可以由软件自动产生,以下是本人编写的一个SCL程序代码的辅助生成工具的截图:


使用该工具,可以产生以下ACS800的程序代码的60%以上。



6、程序代码(使用S7-300在ACS800变频器上已经测试过)
(*Function:
=========
This Function Block controls a freq.converter(ABB.ACS800) using the following criteria:

- Starting and stopping via Profibus
- Motor Protection Equipment (Motor Protector, Motor Temperature, Fuses)
- Motion Control (Pressure/Rotation Sensor/Contactor Feedback)
- Maintenance Lock-Out Switch
config step:
<1>P98.02:fieldbus
<2>P98.07:ABB Drives,and need to modify in step 7 hardware config
<3>P51.01:check the module type:Profibus DP
<4>P51.02:node address,when the frequency hardware switch is zero,the parameter indicate the address from config.
<5>P51.03:Baud rate,consist to the setting of PLC
<6>P51.04:PPO type,consist to the setting of PLC
-----reference value--------------
<7>REF1:-20000(Dec)=-[P11.05],20000(Dec)=[P11.05]; -1:-[P11.04],0:[P11.04]
<8>P20.01/P20.02 FOR SPEED LIMIT;P20.07/P20.08:FREQUENCY LIMIT (These parameters will effect the '<7>' setting)
<9>P22.07 FOR 'OFF3' TYPE STOP TIME(stop according to fastest possible deceleration mode)
<10>P11.03/P11.06 FOR EXE REF1/REF2 SELECT,setting for 'COMM.REF'
<11>P10.01/P10.2:setting for COMM.CW*)

FUNCTION_BLOCK FB250
VERSION:'1.0'
AUTHOR:parker
FAMILY: Mtr
VAR_INPUT // Input Parameters
Manu:Bool:=0; //Fault Acknowledge
Auto:Bool:=0; //Automatic Mode
Enbl:Bool:=0; //Enable Device
EnFV:Bool:=0; //Enable Faults to Visu
EnMV:Bool:=0; //Enable Manual Operation from Visu
Ackn:Bool:=0; //Fault Acknowledge
Mute:Bool:=0; //Horn Silence
LT:Bool:=0; //Lamp Test
AOn:Bool:=0; //Auto On (1-impulse sufficient)
AOff:Bool:=0; //Auto Off (1-impulse sufficient)
MOn:Bool:=0; //Manual On (1-impulse sufficient)
MOff:Bool:=0; //Manual Off (0-impulse sufficient)
FBOn:BOOL:=0; //Feedback Main Contactor On (1=Running)
FDO:Bool:=0; //Fused Disconnect Open (1=OK)
MP:Bool:=0; //Motor Protector Fault (1=OK)
WMT:Bool:=0; //Motor Temp Warning (1=OK)
FMT:Bool:=0; //Motor Temp Fault (1=OK)
LOS:Bool:=0; //Maintenance Lock-Out Switch (1=OK)
ISet1:Bool:=0; //Internal Setpoint 1 on
投诉建议

提交

查看更多评论
其他资讯

查看更多

工业自动化设计高级参考

PLC的面向对象编程

简化监控软件的编程方法

Siemens OPC编程的.NET类库及使用说明