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