西門子可編程工業(yè)控制器PLC(Program Logic Controller)對于很多人來說,都很熟悉。具有良好的通用性和易用性。在冶金、造紙、食品加工、紡織等很多控制領(lǐng)域廣泛地使用。加之由西門子倡導(dǎo)的工業(yè)控制網(wǎng)絡(luò)Profibus的網(wǎng)絡(luò)設(shè)備的廣泛使用,相對于其它PLC軟件來說,更容易使工程人員易于接受。
一、西門子S7 400 計時器使用中的問題
在使用西門子Simatic軟件過程中,和許多同行一樣,認(rèn)為在其PLC的軟件中,關(guān)于計時器的系統(tǒng)提供了多種定時,由用戶選擇使用,類型比較完備。但在使用方面,我們也發(fā)現(xiàn)了一些小的麻煩。具體體現(xiàn)由下面的分析中可以了解到。
(一)定義時間的格式特殊局限性
必須用西門子指定的時間定時格式,這就給程序設(shè)計帶來了一定困難,首先定時常數(shù)相對固定。其次,就是這樣的時間常數(shù)不能用變量來替換(本身要求必須是固定值的常量),見下面的梯型圖,設(shè)定的時間常數(shù)只能是S5T#20MS(20毫秒),從而相應(yīng)的計時器不能因條件更改而改變定時值,對于有限的計時器資源,如果計時器使用過多,必然造成浪費(fèi)。對于這些計時器的狀態(tài)一般不容易加以監(jiān)視、狀態(tài)值的傳遞和控制。有關(guān)的計時器軟件程序段一般都不能具有通用性。
(二)時間常數(shù)的固定性
對于較寬的時間常數(shù),比如以分鐘或秒為單位的計時長度來說,問題不是很大。但對于相對時間較短的時限,可能會出現(xiàn)一些問題。比如,毫秒為單位的計時長度,可能出現(xiàn)偏差。(當(dāng)然要求全部軟件的運(yùn)行時間的循環(huán)周期要大大小于定時的時限)在以即便在特定的固定的時間常數(shù),也不能隨便更改時間的常數(shù)值。比如,在圖例1中設(shè)定TV的時間為25毫秒,計時器本身都無法接受。
二、該類計時器的改進(jìn)設(shè)計思路
基于這些原因,我們參考圖例 2和有關(guān)的DANIELI AUTOMATION的設(shè)計軟件,認(rèn)為可以通過設(shè)計一些通用的帶參數(shù)的計時器函數(shù)塊來解決這些問題。當(dāng)然這些程序代碼應(yīng)該進(jìn)行充分的優(yōu)化,來保證系統(tǒng)實(shí)現(xiàn)的時事性和可靠性。過程中采用語句表來實(shí)現(xiàn),這樣執(zhí)行速度稍快一些。
在使用時,只要使用相應(yīng)的函數(shù),給入口參數(shù)一定的常值或變量,就可以通過函數(shù)出口的返回值得到計數(shù)器的相應(yīng)狀態(tài)。
設(shè)計這些函數(shù)的關(guān)鍵在于,利用CPU的最快頻率的振動信號,在PLC硬件配置中,可以找到這些信號。來進(jìn)行運(yùn)算,經(jīng)過比較得到相關(guān)的運(yùn)行狀態(tài)。
三、軟件實(shí)現(xiàn)的方法
下面是有關(guān)控制的設(shè)計代碼以及相關(guān)分析,這里提供了關(guān)鍵程序段的解釋,相關(guān)的其它軟件代碼,讀者可以自行分析加以解決。
注意,OB1_TIME_MSEC,為一字節(jié)變量,通過系統(tǒng)OB1的循環(huán)執(zhí)行,再調(diào)用系統(tǒng)時鐘函數(shù)(另外的軟件程序塊,設(shè)計相對簡單,本文省去),得到的CPU掃描的間隔時間,單位是毫秒數(shù)。我們就是利用這個較為精確的時間,來計算計時器的值。
實(shí)際應(yīng)用中,按照下面的方式圖例 3,來調(diào)用函數(shù),可以實(shí)現(xiàn)特定的功能。按此方法,參照Simatic PLC提供的Timer,我們可以設(shè)計出與之相對的靈活使用的Timer 函數(shù)。注意這個函數(shù)是不帶復(fù)位功能的。
圖 3 改進(jìn)的計時器的使用范例
四、結(jié)語
盡管S7 400 PLC軟件如此通用,也不是面面俱到的,也存在著使用中的一些問題。我們通過不斷理解其控制原理,加以自行改進(jìn),也完全可以作為通用的功能加以使用。就像上述的計時器類的函數(shù),我們可以依此類推來設(shè)計出相應(yīng)于S7 400 的各類計時器函數(shù),在以后的環(huán)境中加以應(yīng)用,來減少工業(yè)軟件設(shè)計中的一些工作量,提高編程效率。