今天這篇文章,我們來介紹一個(gè)帶運(yùn)行計(jì)時(shí)得電機(jī)控制函數(shù)塊,為后續(xù)得電機(jī)調(diào)度函數(shù)塊做準(zhǔn)備。我之前曾寫過一個(gè)電機(jī)控制函數(shù)塊FB5001_MotorControl(西門子SCL編程實(shí)例——帶反饋監(jiān)視得電機(jī)控制),我們在它得基礎(chǔ)上,增加運(yùn)行時(shí)間累計(jì)功能。
打開博途新建項(xiàng)目,將FB5001_MotorControl添加到項(xiàng)目中,修改其名稱為FB5007_MotorControlWithRuntime。在原函數(shù)塊基礎(chǔ)上:
①增加輸入?yún)?shù):GlobalTime和ResetRuntime。
②增加輸入/輸出參數(shù):
③增加用于計(jì)時(shí)得靜態(tài)變量:
整個(gè)函數(shù)塊(FB5007_MotorControlWithRuntime)得變量聲明如下圖所示:
代碼如下:
為了能產(chǎn)生時(shí)間信號(hào),我們添加循環(huán)中斷組織塊OB30,將其中斷時(shí)間設(shè)置為1秒。設(shè)置一個(gè)全局變量,比如"DB200_Global".globalSecon,在OB30中將其周期性加1,代碼如下:
添加一個(gè)啟動(dòng)組織塊,每次CPU重啟時(shí)讓全局時(shí)間變量清零(該全局時(shí)間變量得數(shù)據(jù)類型為UDInt,其取值范圍為0~4_294_967_295。以每秒加1得頻率計(jì)時(shí),可支持大約136年,因此即使不清零也沒有關(guān)系),如下圖所示:
這樣,就可以在OB1中調(diào)用FB5007_MotorControlWithRuntime,統(tǒng)計(jì)其運(yùn)行時(shí)間了。
我已經(jīng)測試過,如果你有任何問題,歡迎留言。我們后續(xù)會(huì)在這個(gè)函數(shù)塊得基礎(chǔ)上,寫電機(jī)調(diào)度得函數(shù)塊(比如有多個(gè)電機(jī),如何按照預(yù)定規(guī)則進(jìn)行啟??刂疲?。
我得書《西門子S7-1200/1500 PLC SCL語言編程 ——從入門到精通》從硬件到軟件,比較詳細(xì)得介紹了SCL語言得編程,感興趣得話可以感謝閱讀下面得鏈接查看: