工控網(wǎng)首頁
>

應(yīng)用設(shè)計

>

使用西門子的SCL語言編寫ABB變頻器的總線控制程序塊

使用西門子的SCL語言編寫ABB變頻器的總線控制程序塊

2008/6/20 14:05:00

        好的編程規(guī)范就是對一些通用的控制對象編寫標(biāo)準(zhǔn)控制塊,對數(shù)據(jù)處理、傳遞、邏輯控制實現(xiàn)封裝,以實現(xiàn)代碼的可重用和簡化編程的目的,關(guān)于這方面的討論,我在工控網(wǎng)上發(fā)表的《PLC的面向?qū)ο缶幊獭分杏薪榻B。
         西門子的SCL語言是符合國際標(biāo)準(zhǔn)的一種PLC編程語言,其優(yōu)秀的程序結(jié)構(gòu)體系和運(yùn)算編程適合于標(biāo)準(zhǔn)庫的開發(fā),我在工控網(wǎng)上發(fā)表的《在S7300/400型PLC中使用高級語言編程》中有關(guān)于這方面的介紹。

1、硬件電路設(shè)計
本文用到的變頻器為ABB的ACS800系列變頻器,使用其最一般的功能,電路設(shè)計類似于下圖:


        本設(shè)計將主接觸器放在變頻器之前,啟動電機(jī)時先打開主接觸器,然后啟動變頻器驅(qū)動電機(jī),關(guān)斷電機(jī)時,先控制變頻器關(guān)閉,延時后主接觸器關(guān)閉,在電機(jī)不運(yùn)行的情況下,可節(jié)約電源,該設(shè)計可用于風(fēng)機(jī)之類的控制,即不需要頻繁的起停,值得說明的是由于ABB的總線通訊模塊由變頻器自身提供電源,當(dāng)變頻器斷電后,可能導(dǎo)致總線故障,所以上面的設(shè)計對西門子的MM440沒問題,但對ABB的變頻器并不一定適合,所以另外一種設(shè)計方式就是將主接觸器放在變頻器的下方,該接觸器一般由急停開關(guān)控制。
本程序?qū)⒁缘谝环N方式的設(shè)計為依據(jù)(該程序來自MM440控制程序的轉(zhuǎn)換)

2、變頻器的一般參數(shù)
<1>99.01:選擇語言
<2>99.02:選擇應(yīng)用宏程序,不同的應(yīng)用宏會預(yù)先定義不同的連接端子功能,而這些端子又隨后可以被不同功能的參數(shù)定義,當(dāng)多個參數(shù)使用同一個端子時,在這個端子信號被激活后,這多個參數(shù)功能均會被激活。
<3>99.04:選擇電機(jī)控制模式DTC/SCALAR,當(dāng)電機(jī)的額定電流小于變頻器的額定電流的1/6時,可以使用SCALAR模式。
<4>99.05:電機(jī)的額定電壓
<5>99.06:電機(jī)的額定電流
<6>99.07:電機(jī)的額定頻率
<7>99.08:電機(jī)的額定轉(zhuǎn)速
<8>99.09:電機(jī)的額定功率
<9>20.01:設(shè)置最小轉(zhuǎn)速
<10>20.02:設(shè)置最大轉(zhuǎn)速
<11>22.02:設(shè)置加速度時間1
<12>22.03:設(shè)置減速度時間1
<13>10.01/10.02:設(shè)定為COMM.CW,由外部EXT1/EXT2來控制電機(jī)電機(jī)啟停(包括總線控制)
<14>10.03:若希望改變電機(jī)的運(yùn)轉(zhuǎn)方向,可以將該參數(shù)設(shè)置為”REQUEST”
<15>若該變頻器的硬件設(shè)計為,主接觸器位于變頻器和電機(jī)之間(該設(shè)計主要用于急停控制主接觸器),則主接觸器的輔助常開觸點可接到端子X22/5和X22/8上,用于控制變頻器運(yùn)行使能,可通過參數(shù)16.01來選擇端子DI5(X22/5);若熱敏電阻接到X22/6和X22/7上,可定義參數(shù)30.05選擇”THERMISTOR”,同時必須定義參數(shù)30.04來啟用熱敏保護(hù)。X25(1/2/3)為繼電器1輸出,通過參數(shù)14.01定義其功能。

3、變頻器的總線參數(shù)
<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,設(shè)定為COMM.REFx(表示由現(xiàn)場總線給定速度值)

4、關(guān)于程序塊
本程序編寫了四個內(nèi)部速度設(shè)定點和一個外部速度設(shè)定點,手動/自動,以及報警全集成。
重要的參數(shù)介紹:
<1>Enbl:設(shè)備使能,該參數(shù)用于連接安全條件,譬如急停信號
<2>EnFV:使故障傳遞至人機(jī)界面容許,這是因為可視化是提供給用戶最詳細(xì)信息的平臺,在可視化界面上顯示的信息一定要正確,但實際上某些故障會導(dǎo)致一系列其他類型的故障產(chǎn)生,為了只顯示那些引起最初故障的根源,需要對傳遞至可視化的故障進(jìn)行控制。最常見的就是電源故障,該故障會導(dǎo)致一系列其他的故障,故可以用電源檢測條件來控制可視化故障。
報警分為故障和警告,故障會導(dǎo)致停機(jī),而警告則不會,在本程序中使用了大量的結(jié)構(gòu),這些結(jié)構(gòu)將不同類型的變量加以區(qū)分(甚至于將可視化與非可視化故障加以區(qū)分),便于用戶診斷和維護(hù)程序。這種程序看起來相當(dāng)復(fù)雜,但監(jiān)控起來相當(dāng)方便,若開發(fā)出與之對應(yīng)的人機(jī)界面控件,甚至于可以使人機(jī)界面的組態(tài)高度自動化。
<3>Aon/Aoff ; Mon/Moff :自動開/自動關(guān),手動開/手動關(guān),有些編程規(guī)范把手動/自動合在一起編寫,這是因為他們有著一些共同的安全條件檢測,本塊已經(jīng)把各種報警條件,安全條件作為單獨的輸入,這些輸入都會導(dǎo)致電機(jī)的停轉(zhuǎn)(而不管塊是在手動,還是自動模式下),所以在使用本塊時,對于Aon/Aoff ; Mon/Moff輸入?yún)?shù),只需要編寫邏輯起停條件,而不需要再次串入安全條件。
<4>本程序用到了一個全局變量:"IP_1Sec",其為間隔一秒的脈沖,用于計時,所以當(dāng)想使用本塊時,必須先編寫間隔一秒的脈沖"IP_1Sec"

5、關(guān)于程序代碼的自動化生成
          西門子的SCL編輯器相對微軟的編程軟件而言,還相當(dāng)原始,代碼幾乎都要手工輸入,為了提高效率,可以自己開發(fā)一個輔助生成軟件,譬如針對參數(shù)的定義,可以由軟件自動產(chǎn)生,以下是本人編寫的一個SCL程序代碼的輔助生成工具的截圖:


使用該工具,可以產(chǎn)生以下ACS800的程序代碼的60%以上。



6、程序代碼(使用S7-300在ACS800變頻器上已經(jīng)測試過)
(*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
投訴建議

提交

查看更多評論