National Central University
Uedu Main Site
Explore Uedu
Student Console
Register as Member/Login
Research Informed Consent Center
Survey Center
Educational Big Data Challenge
Claim or create a course
Try an AI Scenario Task
Support & Messages
Uptime Data

UeduGPTs

--

Jupyters

3

Local AI

--

Uedu Code

--

中央大學 AQI 80 24°C PM2.5 21
AI Reply Desktop Notifications

Show a desktop notification when the AI TA finishes replying

Chat Message Notifications

Notify me when classmates post messages in the forum

Sound notification

Play an alert sound whenever there is a new notification

Unit 04

計時器與計數器

TON、TOF、CTU 與重置
Interaction 30 minute(s)

Learning Objectives

  • 說明 TON 與 TOF 的差別,畫出它們的時序圖
  • 用計時器寫出「延遲啟動」與「延遲停止」
  • 說明計數器為什麼只在上升緣加 1,並用 CTU 與 RST 數箱子

加入時間與次數

上一課的階梯圖只看「現在」:按鈕按著就亮,放開就暗,加上自保持也只是記住一個狀態。真實的機器還需要:

  • 時間:馬達啟動 2 秒、轉速穩定後才開始進料;馬達停下後,散熱風扇再吹 3 秒。
  • 次數:裝滿 3 箱就停下輸送帶,等人換棧板。

PLC 用計時器與計數器處理這兩件事。IEC 61131-3 把它們定義成標準的功能區塊: 計時器有 TON、TOF、TP,計數器有 CTU、CTD、CTUD。本課程的模擬 PLC 支援 TON、TOF、CTU。

TON:通電延遲

TON 的條件(IN)導通後開始累加時間,累加到設定值(PT)時,完成位元變成 1;條件一斷開,時間馬上歸零、完成位元變成 0。

IN   ___|‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾|________|‾‾‾|______
ET      0 → → → PT ─────┘0        0→┘0
Q    ___________|‾‾‾‾‾‾‾|______________________
            ←PT→                ↑ 條件太短,沒有到 PT,Q 不會亮

在本課程的階梯圖裡,計時器寫成輸出 TON T0 2000(T0 號、2000 毫秒);接點 T0 檢查完成位元,字組 T0.ACC 是目前累加的毫秒數。 各廠牌的寫法不同(例如用 0.1 秒為單位、或另外有保持型計時器 TONR/RTO),以手冊為準。

逐步看:TON 是怎麼累加的

PLC 每輪掃描執行到 TON 時,看條件是否導通:導通就把這一輪經過的時間加上去,斷開就歸零。為了看得清楚,把掃描週期放大成 100 毫秒。注意第 6 輪條件斷開時,ACC 直接歸零。

TOF:斷電延遲

TOF 正好相反:條件導通時完成位元立刻是 1;條件斷開後,完成位元再維持設定的時間才變成 0。

IN   ___|‾‾‾‾‾‾‾‾‾‾|_______________________
Q    ___|‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾|____________
                   ←── PT ──→

典型用法:馬達停下後散熱風扇繼續吹一段時間;人離開後走廊燈再亮 30 秒。

TP(脈衝)則是條件一導通,就輸出一段固定長度的脈衝,不管條件之後怎麼變。本課程的模擬 PLC 沒有 TP,用 TON 也能組出類似的效果。

下面的練習延續上一課的馬達自保持電路,加上一個 TON 與一個 TOF。

互動練習:延遲啟動與延遲停止

第 1 條 rung 是上一課寫好的馬達自保持(停止按鈕是常閉的實體接點)。依序完成任務:

  1. 「可以進料」燈 Q0.1 要在馬達啟動 2 秒後才亮。起始程式讓它跟著馬達馬上亮。 做法:把第 2 條 rung 的輸出改成「通電延遲計時器 TON」、計時器 T0、2000 毫秒;再新增一條 rung,用接點 T0 驅動 Q0.1。
  2. 散熱風扇 Q0.2 要在馬達停下後再吹 3 秒。把第 3 條 rung 的輸出改成「斷電延遲計時器 TOF」、T1、3000;再新增一條 rung,用接點 T1 驅動 Q0.2。
  3. 回答一個問題。

按「執行」後,計時器方框裡會顯示目前累加的毫秒數。

計數器:數上升緣

CTU(上數計數器)在條件從 0 變成 1 的那一輪(上升緣)把目前值 CV 加 1,CV 到達設定值 PV 時,完成位元是 1。

為什麼一定要看上升緣?一個箱子經過感測器要 0.2 秒,掃描週期 10 毫秒,感測器在 20 輪掃描裡都是 1。 如果每一輪都加 1,一個箱子就會被算成 20 個。

計數器不會自己歸零:要用 RST C0 把目前值清成 0、完成位元清成 0。CTD 是下數計數器(從設定值往下數),CTUD 兩個方向都能數。

本課程的寫法:輸出 CTU C0 3(C0 號、數到 3);接點 C0 檢查完成位元,字組 C0.CV 是目前值。

逐步看:上升緣計數

感測器在 9 輪掃描裡讀到的值,有 3 段連續的 1,也就是 3 個箱子。注意 prev 怎麼記住上一輪的值,讓「連續的 1」只算一次。

互動練習:數箱子

輸送帶上每隔一段時間來一個箱子,經過光電感測器(I0.2)時被數一次。起始程式已經寫好: 按啟動(I0.0)輸送帶開始轉並自保持,第 2 條 rung 用 CTU C0 3 數箱子。依序完成任務:

  1. 數到 3 箱時,「裝滿」燈 Q0.1 亮:新增一條 rung,用接點 C0 驅動 Q0.1。
  2. 裝滿時輸送帶要停,不能把第 4 箱送過來:在第 1 條 rung 後面串聯一個區塊,放常閉接點 C0。
  3. 換好棧板後按重置(I0.1):計數歸零、燈熄滅,再按啟動可以繼續。新增一條 rung:I0.1 → 輸出「重置 (R)」C0。
  4. 回答一個問題。

按「執行」再按住啟動一下,看箱子移動、計數器方框裡的數字增加。

小測驗:計時器

1.

「人離開後走廊燈再亮 30 秒」最適合用哪一種計時器?

2.

用 Python 模擬 TON(每輪 100 毫秒、設定 200 毫秒),會印出什麼?

acc, out = 0, []
for x in [1, 1, 0, 1, 1, 1]:
    acc = min(200, acc + 100) if x else 0
    out.append(int(acc >= 200))
print(out)
第 1 次作答

小測驗:計數器

1.

計數器數到設定值以後,目前值會怎樣?

2.

感測器每一輪讀到的值是 0 1 1 1 0 0 1 0 1 1,用上升緣計數,CV 最後是多少?

3.

「裝滿 3 箱時停下輸送帶」,在輸送帶的 rung 裡要怎麼放計數器 C0 的接點?

第 1 次作答

重點整理

  • TON:條件要連續導通到設定時間,完成位元才是 1;條件斷開立刻歸零。用在延遲啟動、防誤觸。
  • TOF:條件導通時完成位元立刻是 1;斷開後再維持設定時間才變 0。用在延遲停止。
  • 計時器靠每輪掃描累加時間;目前值 T0.ACC、完成位元 T0(寫法依廠牌而異)。
  • CTU 只在條件的上升緣加 1;目前值 C0.CV、完成位元 C0。不會自己歸零,要用 RST。
  • 常見組合:計數完成的接點用常閉串進設備的 rung 讓它停下;重置按鈕接 RST。

下一課看 IEC 61131-3 的五種語言,用結構化文字(ST)寫同樣的邏輯。

這一課完成了!
Next lesson:IEC 61131-3 與結構化文字
你目前沒有登入,學習進度只存在這個瀏覽器。 Login 後,進度會跟著帳號,換電腦也看得到。