今天這篇文章,我們來介紹一個帶運行計時的電機控制函數(shù)塊,為后續(xù)的電機調(diào)度函數(shù)塊做準(zhǔn)備。我之前曾寫過一個電機控制函數(shù)塊FB5001_MotorControl(西門子SCL編程實例——帶反饋監(jiān)視的電機控制),我們在它的基礎(chǔ)上,增加運行時間累計功能。
打開博途新建項目,將FB5001_MotorControl添加到項目中,修改其名稱為FB5007_MotorControlWithRuntime。在原函數(shù)塊基礎(chǔ)上:
①增加輸入?yún)?shù):GlobalTime和ResetRuntime。
GlobalTime:來自循環(huán)中斷組織塊的全局時間(單位:秒);
ResetRuntime:復(fù)位函數(shù)塊內(nèi)部的用于計時的變量;
②增加輸入/輸出參數(shù):
Runtime:電機運行的實際時間(單位:秒)。多次啟動的運行時間可累積;
③增加用于計時的靜態(tài)變量:
statStartTime:按下啟動按鈕的時間(單位:秒);
statLastRunningTime:上次運行的時間(單位:秒),用于累計;
statRunTime:當(dāng)前運行時間(單位:秒);
整個函數(shù)塊(FB5007_MotorControlWithRuntime)的變量聲明如下圖所示:
代碼如下:
為了能產(chǎn)生時間信號,我們添加循環(huán)中斷組織塊OB30,將其中斷時間設(shè)置為1秒。設(shè)置一個全局變量,比如"DB200_Global".globalSecon,在OB30中將其周期性加1,代碼如下:
添加一個啟動組織塊,每次CPU重啟時讓全局時間變量清零(該全局時間變量的數(shù)據(jù)類型為UDInt,其取值范圍為0~4_294_967_295。以每秒加1的頻率計時,可支持大約136年,因此即使不清零也沒有關(guān)系),如下圖所示:
這樣,就可以在OB1中調(diào)用FB5007_MotorControlWithRuntime,統(tǒng)計其運行時間了。
我已經(jīng)測試過,如果你有任何問題,歡迎留言。我們后續(xù)會在這個函數(shù)塊的基礎(chǔ)上,寫電機調(diào)度的函數(shù)塊(比如有多個電機,如何按照預(yù)定規(guī)則進行啟停控制)。
我的書《西門子S7-1200/1500 PLC SCL語言編程 ——從入門到精通》從硬件到軟件,比較詳細的介紹了SCL語言的編程,感興趣的話可以點擊下面的鏈接或者左下角的【閱讀原文】:
審核編輯 :李倩
-
電機控制
+關(guān)注
關(guān)注
3568文章
1952瀏覽量
271454 -
變量
+關(guān)注
關(guān)注
0文章
614瀏覽量
28846 -
SCL
+關(guān)注
關(guān)注
1文章
243瀏覽量
17482
原文標(biāo)題:西門子SCL編程實例——帶運行計時的電機控制
文章出處:【微信號:方正智芯,微信公眾號:方正智芯】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
在西門子TIA Portal中使用CFC語言實現(xiàn)電機控制的全流程

西門子S7-200與變頻器之間無線MODBUS通訊實例

三菱PLC與西門子PLC比較
基于 EtherCAT 轉(zhuǎn) ProfiNet 網(wǎng)關(guān)達成西門子 1200 PLC 與伺服電機通訊連接的應(yīng)用實例

評論