使用西門子的SCL語言編寫ABB變頻器的總線控制程序塊
好的編程規范就是對一些通用的控制對象編寫標準控制塊,對數據處理、傳遞、邏輯控制實現封裝,以實現代碼的可重用和簡化編程的目的,關于這方面的討論,我在工控網上發表的《PLC的面向對象編程》中有介紹。
西門子的SCL語言是符合國際標準的一種PLC編程語言,其優秀的程序結構體系和運算編程適合于標準庫的開發,我在工控網上發表的《在S7300/400型PLC中使用高級語言編程》中有關于這方面的介紹。
1、硬件電路設計
本文用到的變頻器為ABB的ACS800系列變頻器,使用其最一般的功能,電路設計類似于下圖:
.png)
本設計將主接觸器放在變頻器之前,啟動電機時先打開主接觸器,然后啟動變頻器驅動電機,關斷電機時,先控制變頻器關閉,延時后主接觸器關閉,在電機不運行的情況下,可節約電源,該設計可用于風機之類的控制,即不需要頻繁的起停,值得說明的是由于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程序代碼的輔助生成工具的截圖:
.png)
使用該工具,可以產生以下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類庫及使用說明