首頁>技術>

在實際自動化專案中,不管用上位機還是PLC做控制器,都經常會用到定時器。

我們PLC攻城獅朋友,知道會有定時器指令。那麼上位機C#沒有指令怎麼做?

一.我們先看PLC的效果

PLC定時器

1.圖中有個定時器物件,都有4個引腳和1個例項

2.我們再看看F1幫助(順便告訴老鐵F1的資料也許比培訓機構要好)

引腳功能

3.現在明白這些引腳的功能了吧?

IN輸入引腳 判斷要不要計時

PT輸入引腳 用來設定時間

Q輸出引腳 計時結果

ET輸出引腳 當前計時時間

二.C#定時器封裝切入主題(直接幹)

1.首先了解一點知識,Stopwatch物件,這個是.net平臺給我們的定時器物件,我們需要進一步封裝達到我們的需求,我們首先看看物件原型。

Stopwatch物件原型

原型註釋

2.知道這麼多已經夠了,開幹寫程式碼吧,建立TON.cs類

3.我們想想定時器的邏輯是什麼?

是不是突然腦子空白了?想啥呢,別鬧,大家都很忙的。多看看F1的幫助,西門子已經寫的很清楚了。

我把定時器邏輯複製下來

這個是重點,給大家寫出來,不用背,理解一下

接通延時

可以使用“接通延時”指令將 Q 引數的設定延時 PT 指定的一段時間。

當引數 IN 的邏輯運算結果 (RLO) 從“0”變為“1”(訊號上升沿)時,啟動該指令。指令啟動時,預設的時間 PT 即開始計時。

超過持續時間 PT 時,引數 Q 的訊號狀態變為“1”。

只要啟動輸入仍為“1”,引數 Q 就保持置位。如果 IN 引數的訊號狀態從“1”變為“0”,則復位引數 Q。

當在引數 IN 上檢測到一個新的訊號上升沿時,將重新啟動定時器功能。

4.程式碼框架給大家列出來,方法,屬性,成員組成。

定時器類架構

5.我們建立成員,並用構造方法例項化成員

成員及構造方法

為什麼要用上升沿下降沿,前面的原理已說明,如果不清楚上升沿下降沿怎麼做,翻我前面的文章 C#如何封裝PLC的上升沿下降沿物件

6.所有屬性解讀

屬性就是向外界提供介面

IN我在這裡做的讀寫 對應setget屬性

輸出Q就是 只讀對應get屬性

PT我在這裡做的讀寫 getset屬性

輸出ET就是隻讀 對應get屬性

7.IN引腳程式碼

8.Q引腳程式碼

9.PT引腳程式碼

10.ET引腳程式碼

11.效果怎麼樣?我們測一下,看會不會翻車?

定時器演示

分析:我定時為3000毫秒。第一次賦值為1(true)時,開始計時,但是我中途賦值為0(false)時,定時器停止。第二次賦值為1(true)時,開始計時,直到時間到輸出ture;

12.總結:當我們使用多個定時器我們只需要new定時器定時器即可,需要多少個new多少個,面向物件程式設計。一個一個new,for迴圈new都可以,怎麼高興怎麼來。把它們放到死迴圈執行緒中,就可以和使用PLC一樣愉快的使用定時器了。

13.拋磚引玉,給大家思路,可以嘗試面向物件的方式,實現PLC其它指令。

27
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 六個步驟,從零開始教你搭建基於WordPress的個人部落格