西門子SCL語言編程實(shí)例——循環(huán)調(diào)用電機(jī)!
導(dǎo)讀
西門子結(jié)構(gòu)化編程可將不同的控制任務(wù)劃分為不同的控制區(qū)域,相同控制功能數(shù)量眾多的設(shè)備可利用具備多重背景的FB功能塊重復(fù)調(diào)用來解決,使程序簡潔、清晰、合理,易讀性強(qiáng),更改方便,為以后系統(tǒng)的升級(jí)改造提供了極大的便利。SCL語言的應(yīng)用,更是大大減小了程序代碼的占用空間,使西門子PLC能容納更大的程序,控制更大的系統(tǒng)。下面就舉一實(shí)例加以說明。
01所需軟件及硬件
博途V15編程軟件及仿真軟件、西門子1215CPU一臺(tái)、網(wǎng)線一條。
*注:如無PLC實(shí)物,可用仿真軟件做測試*
02項(xiàng)目描述
順豐、京東、郵政等大型物流企業(yè)的中轉(zhuǎn)場的輸送分揀系統(tǒng)大都是由數(shù)量眾多、結(jié)構(gòu)各異的皮帶機(jī)再加上數(shù)臺(tái)高效分揀機(jī)組成。因輸送分揀的路向繁多,皮帶機(jī)往往分為不同的線體,每條線體包含若干條皮帶以應(yīng)對(duì)不同的路向或最終匯集到分揀機(jī)以滿足其大處理量的要求,因此皮帶機(jī)的自動(dòng)控制是中轉(zhuǎn)場控制系統(tǒng)極其重要的一環(huán)。下面的例子以控制一條線體為例加以說明。
該實(shí)例為利用SCL語言編寫的控制程序,控制一條線體當(dāng)中的5條皮帶啟停。說明:
1、此例主要的目的是使大家掌握編程的方法,不是控制的邏輯,因此每條皮帶的控制與起保停類似。具體的控制邏輯要根據(jù)實(shí)際的需求編寫;
2、實(shí)際現(xiàn)場一條線體往往不止5條皮帶,這里為了測試監(jiān)控方便只用5條,但利用SCL語言編寫控制再多數(shù)量的皮帶,再多的線體,代碼并不會(huì)增加,只是改下數(shù)量而已,后面會(huì)有描述;
3、這個(gè)例子可使大家借一斑而窺全豹,初步認(rèn)知具有多重背景FB塊的使用魅力。
03程序編寫
1、創(chuàng)建新項(xiàng)目
實(shí)際生產(chǎn)中配方的數(shù)據(jù)已經(jīng)定好,打開博途V15軟件,創(chuàng)建一個(gè)名為“SCL循環(huán)調(diào)用電機(jī)”的項(xiàng)目,組態(tài)一臺(tái)固件版本為4.2的1215CPU,如下圖1所示:

2、創(chuàng)建自定義數(shù)據(jù)類型
將默認(rèn)的SBR0子程序重命名為配方處理,創(chuàng)建自定義數(shù)據(jù)類型可把我們從編寫大量符號(hào)表變量的工作中解脫出來,變量越多,效果越明顯。在這個(gè)項(xiàng)目中我們創(chuàng)建一個(gè)名為“motordata”數(shù)據(jù)類型的變量,如下圖2所示。該數(shù)據(jù)類型包含4個(gè)布爾變量,分別是皮帶電機(jī)的啟動(dòng)、停止、故障和運(yùn)行變量。


3、創(chuàng)建全局DB塊
創(chuàng)建全局DB塊的目的是為了給五臺(tái)皮帶電機(jī)FB塊的形參賦實(shí)參,而DB塊建了個(gè)符號(hào)名為motor的數(shù)組變量,數(shù)組元素5個(gè),每個(gè)元素的類型為“motordata”,即我們一開始自定義的數(shù)據(jù)類型,這樣我們就不必在DB塊里去一個(gè)個(gè)的輸5臺(tái)電機(jī)的變量。節(jié)省了時(shí)間,提高了效率。圖中顯示了電機(jī)1(Motor【0】)展開的變量,如下圖3所示:

4、編寫電機(jī)啟停程序
該程序編寫相對(duì)簡單,這里為了測試或仿真方便,只寫了簡答的類似起保停的控制邏輯,實(shí)際的控制要根據(jù)具體要求來編寫。新建名為“Mrun”的塊FB1,該段程序用SCL編寫,如下圖4所示:

5、編寫電機(jī)調(diào)用程序
這是該例子的核心部分,在項(xiàng)目中新建FB塊,命名為DYMrun,程序的變量表與代碼如下圖5所示:

創(chuàng)建全局DB塊的目的是為了給五臺(tái)皮帶電機(jī)FB塊的形參賦實(shí)參,在靜態(tài)參數(shù)中分別建立“dymrun”和“i”兩個(gè)變量,“dymrun”為數(shù)組變量,用FB1作為數(shù)組元素的數(shù)據(jù)類型,對(duì)應(yīng)5臺(tái)電機(jī);“i”為循環(huán)調(diào)用指針,整數(shù)類型,分別指向不同的皮帶電機(jī)。如程序所示,i為0到4,如果電機(jī)數(shù)量更多,比如12臺(tái),那么把4改為11即可。代碼很簡單,就是一個(gè)FOR循環(huán)語句,重要的是把全局DB塊DB1的數(shù)組變量正確賦值到FB1(Mrun)各形參管腳。要理解上述程序需要掌握UDT、SCL、數(shù)組、結(jié)構(gòu)化編程等等知識(shí)點(diǎn)。
04測試效果
在主程序中調(diào)用FB2,為照顧沒有實(shí)體PLC的學(xué)員,我們用仿真進(jìn)行演示。新建一個(gè)監(jiān)控表,監(jiān)控表輸入了Motor0和Motor2兩個(gè)電機(jī)的變量。主程序及測試的結(jié)果如下圖6所示:




圖7中Motor0的啟動(dòng)信號(hào)為true,其運(yùn)行信號(hào)也為true,證明程序?qū)?,如兩個(gè)紅框內(nèi)容所示,Motor2也是一樣,如兩個(gè)藍(lán)色框內(nèi)容所示;圖8為復(fù)位啟動(dòng)信號(hào)后,Motor0和Motor2因已自鎖仍繼續(xù)運(yùn)行;圖9為Motor0按下停止信號(hào),其運(yùn)行也停止,而Motor2因?yàn)榘l(fā)生故障使電機(jī)停止運(yùn)行。其余的幾臺(tái)請(qǐng)有興趣的學(xué)員自行測試。
總結(jié):SCL語言類似高級(jí)語言,因其代碼簡單易用,占存儲(chǔ)空間少以及強(qiáng)大的數(shù)據(jù)處理能力,成為未來編程語言的首選,想成為編程高手一定要熟練掌握。本案例拋磚引玉,希望能對(duì)大家學(xué)習(xí)SCL有所幫助。
來源:技成培訓(xùn)網(wǎng),作者:技成-何曉剛,未經(jīng)授權(quán)不得轉(zhuǎn)載!
粉絲福利
微信掃碼領(lǐng)64本西門子PLC電子書籍
