西門子代理|模塊總代理
昨天看到有這樣一個貼子,要求編輯一個相對速度的計算公式,實際上類似的問題只需要理解了其中的一些基本原理,編輯這樣的程序也不算有難度的項目。在回復中大概講了調用定時中斷的方法,因為定時中斷相對于間隔時間是一個相對恒定了時間區間,這樣計算出來的速度比較合理。
方式:
1) 定義一個循環定時中斷,假設200mS。
2) 在這個中斷組織塊中編輯速度值程序。
程序:
1) 創建一個新項目,plc為S7-1214C ,選擇版本V4.2的cpu確認。
2) 插入一個循環定時中斷,設置定時中斷時間周期為200mS,圖示:
該電路(如圖)適用于數字萬用表等小電流的供電。用1.2伏的五號充電電池代替9伏層疊電池,改后比較經濟實用。
筆者改裝了一部叮—890型數字萬用表和DA—1型電子按摩器,使用兩年多來都很正常。電路是運用間歇振蕩器的快速關斷(截止)的特性而實現升壓的。在空載時(穩壓管和負載開路),升壓可達70多伏。元件I用中8mm的小磁環,初級繞5匝,次級繞奶匝。三極管選用p值大的、飽和壓降小的硅管。其他為普通電子元件。如果需要不同的電壓,可以改用相應的穩壓管。線路元件少,可設計裝在原電池盒內
為什么需要設置循環定時中斷為200mS?這個主要還是一個所謂的經驗方式,如果把這個周期設置時間間隔相對較大,那么,速度計算出來的值,看起來數據“跳變"現象大,尤其是項目速度不恒定的速度計算。如果這個周期時間間隔設置相對小,速度數據變化頻繁,同樣也針對于速度不恒定的環境下,看起來會不這么舒服(數據的大、小值變化)。所以,這個循環定時中斷時間還是需要根據具體的設備,通過實際比較找到一個相對合適的定時循環中斷周期計算。
3) 速度程序,在設置的定時中斷組織塊OB30中編輯速度程序,圖示:
速度值的計算原理:
在一個始終循環的定時中斷(200mS)中,編輯速度數據的當前值減上一個周期的速度數據,得到通過一個200mS時間間隔的差值,這個差值是設備在移動或者運行后,通過200mS周期后的變化值,相當于理解通過200mS的移動量。為感覺上的一致性,一般把速度值定義到1S或者1MIN的單位,這樣看起來的速度單位值相對舒服一點,也統一一點。計算完本周期的速度值,將本次計算的當前值,傳送到下一個周期的速度數據存儲區,以方便下一個200mS間隔周期再次調用計算。
將程序編譯、保存后下載到plc,讀取MD0的變化數據,得到一個速度值,圖示:
程序運行結果,當在某一個定時中斷中檢測到MD100 = 12.0,即在上一個定時中斷中MD104 = 0的狀態下,說明通過200mS周期后移動了12.0mm,那么,相對1S時間的速度值是60.0mm/S。因為是循環定時中斷,所以,MD112的值被200mS的周期間隔被不斷的刷新,得到這個速度值的實時值。