2026/06/26

工業_札記_PID 控制入門:公式中的 P、I、D 到底在做什麼?

--------------------------------------------大意--------------------------------------------
PID 可簡單記成:P 看 current deviation,I 看 accumulated deviation,D 看 deviation trend。
----------------------------------------------------------------------------------------------
PID 控制,全名是 Proportional–Integral–Derivative Control,
中文叫做比例-積分-微分控制。
它是一種很常見的回授控制方法,
常用在馬達轉速控制、溫度控制、位置控制、壓力控制、電源控制等系統中。

PID 的基本想法是:
先比較「目標值」和「目前值」差多少,再根據這個差距決定要輸出多少控制力。

例如:
我們希望馬達轉速是 100 rpm,但目前只有 90 rpm。
這時系統就知道:「目前太慢了,應該增加控制輸出。」

這個「目標值和目前值的差距」,就叫做 error,也就是誤差。

$$
error = target - current
$$

例如:

$$
error = 100 - 90 = 10
$$

代表目前比目標低了 10。

一、PID 的基本公式

標準 PID 公式可以寫成:

$$
u(t)=K_p e(t)+K_i \int e(t)dt+K_d \frac{de(t)}{dt}
$$

其中:

  • \(u(t)\):控制器輸出,例如馬達 PWM、加熱功率、閥門開度

  • \(e(t)\):誤差,也就是目標值減目前值

  • \(K_p\):比例增益

  • \(K_i\):積分增益

  • \(K_d\):微分增益

這個公式看起來很抽象,但其實可以拆成三個部分:

$$
u(t)=P+I+D
$$

也就是:

$$
控制輸出 = P項 + I項 + D項
$$

PID 並不是先做 P,再做 I,再做 D。
在標準 PID 裡,每一次控制迴圈都會同時計算 P、I、D,
然後把三者加起來,形成最後的輸出。

二、P 項:比例控制,看「現在差多少」

P 是 Proportional,比例控制。

公式是:

$$
P = K_p \times error
$$P 項只看一件事:現在的誤差有多大?
假設目標速度是 100,目前速度是 90:

$$
error = 100 - 90 = 10
$$

如果:

$$
K_p = 2
$$

那麼:

$$
P = 2 \times 10 = 20
$$

意思是:
目前差 10,所以根據比例增益 \(K_p\),控制器給出 20 的修正量。

P 的直覺是:現在偏差越大,修正力道越大。

如果目前速度是 95:

$$
error = 100 - 95 = 5
$$

那 P 項就會變小。
因為系統已經比較接近目標,不需要像剛才那麼用力修正。

所以 P 項的特性是:

  • 反應快

  • 直接根據當下誤差修正

  • 誤差大,輸出大

  • 誤差小,輸出小
但是單靠 P 有一個常見問題:它可能無法完全消除誤差。
例如目標是 100,但系統最後穩定在 98。
這時誤差只剩 2,P 項覺得「差不多了」,
輸出可能不夠大,導致系統一直卡在 98,而不是精準到 100。這種現象叫做穩態誤差。

三、I 項:積分控制,看「過去累積欠了多少」

I 是 Integral,積分控制。

公式是:

$$
I = K_i \times \int e(t)dt
$$

在實際程式裡,通常會寫成:

integral += error * dt;
I = Ki * integral;

I 項看的不是「現在差多少」,而是:

過去一段時間,誤差累積了多少?

這就是「過去累積的偏差」。

假設目標速度是 100,系統每一輪控制都低於目標:

時間

實際速度

誤差

t1

90

10

t2

95

5

t3

98

2

t4

100

0


如果先不管 \(dt\) 和 \(K_i\),只看「累積誤差」的概念:

時間

誤差

I 累積誤差

t1

10

10

t2

5

10 + 5 = 15

t3

2

15 + 2 = 17

t4

0

17

這就是 I 項的重點。

P 項在 t2 的時候只看到「現在還差 5」。
但 I 項會記得:「前面曾經差過 10,現在又差 5,所以總共累積了 15。」

所以 I 項有點像是在記帳:
系統過去一直沒有達到目標,所以 I 項會把這些欠帳累積起來,逼系統繼續修正。

這就是為什麼 I 項可以消除穩態誤差。

例如目標速度是 100,但系統一直卡在 98。
P 項可能覺得誤差只有 2,不太夠力。
但 I 項會因為「長時間都差 2」而不斷累積,最後把輸出推高,讓系統真正接近 100。

四、I 項不是只會越來越大

I 項會根據誤差的正負方向累積。

假設目標速度是 100:

時間

實際速度

誤差

I 累積誤差

t1

90

+10

10

t2

95

+5

15

t3

105

-5

10

t4

102

-2

8

當實際速度低於目標時:

$$
error = target - current
$$

會是正值。
I 項會往正方向累積。

但當實際速度超過目標時,例如目前速度是 105:

$$
error = 100 - 105 = -5
$$

這時誤差變成負值,I 項就會被往回扣。

所以 I 項不是永遠只會變大。
它會根據系統是「低於目標」還是「高於目標」來累積或抵消。

五、I 項的風險:Integral Windup

I 項雖然可以消除穩態誤差,但如果 \(K_i\) 太大,或者累積誤差沒有被限制,就可能造成問題。

例如系統長時間達不到目標,I 項一直累積。
等到系統終於開始接近目標時,I 項已經累積得太大,導致輸出過強,直接衝過頭。

這叫做 integral windup,可以翻成「積分飽和」或「積分累積過度」。

因此實務上常常會對 integral 做限制,例如:

integral += error * dt;

if (integral > max_integral)
    integral = max_integral;

if (integral < min_integral)
    integral = min_integral;

這樣可以避免 I 項累積到失控。

六、D 項:微分控制,看「誤差變化有多快」

D 是 Derivative,微分控制。

公式是:

$$
D = K_d \times \frac{de(t)}{dt}
$$

在程式裡通常會寫成:

derivative = (error - previous_error) / dt;
D = Kd * derivative;

D 項看的不是現在差多少,也不是過去累積多少,而是:
誤差正在變大還是變小?變化速度有多快?

假設目標速度是 100。

上一輪誤差是 10,這一輪誤差是 3:

$$
derivative = \frac{3 - 10}{dt}
$$

這代表誤差正在快速變小。也就是說,系統正在快速接近目標。
這時 D 項通常會產生一種「煞車」效果,避免系統衝過頭。

用開車比喻:
你要把車速控制在 60 km/h。
如果現在只有 40 km/h,當然要踩油門。
但如果車速已經從 40 快速上升到 58,而且還在快速上升,你就不能繼續大力踩油門。
因為再踩下去可能會衝到 70。

D 項做的事情就像是:看到系統正在快速接近目標,所以提前減少控制力,避免超調。

七、Kp、Ki、Kd 是什麼?

PID 裡面的 \(K_p\)、\(K_i\)、\(K_d\) 都叫做增益,也就是調整各項影響力的參數。

可以把它們想成三個旋鈕:

參數

控制哪一項

意思

$$K_p$$

P 項

現在誤差要修正多用力

$$K_i$$

I 項

過去累積誤差要算多重

$$K_d$$

D 項

誤差變化速度要算多重


\(K_p\):比例增益

$$
P = K_p \times error
$$

\(K_p\) 越大,系統對當下誤差反應越強。
但如果太大,系統可能會震盪或衝過頭。

\(K_i\):積分增益

$$
I = K_i \times 累積誤差
$$

\(K_i\) 越大,系統越積極消除長期偏差。
但如果太大,容易造成 integral windup、超調和震盪。

\(K_d\):微分增益

$$
D = K_d \times 誤差變化速度
$$

\(K_d\) 越大,系統越會抑制快速變化。它可以減少超調,但也容易放大雜訊。


八、P、I、D 是同時作用,不是依序作用

PID 很容易被誤解成:先用 P 修正,P 不夠再用 I,最後再用 D。
但這不是標準 PID 的運作方式。

在標準 PID 裡,每一輪控制迴圈都會同時計算:

error = target - current;

P = Kp * error;

integral += error * dt;
I = Ki * integral;

derivative = (error - previous_error) / dt;
D = Kd * derivative;

output = P + I + D;

previous_error = error;

也就是:

$$
output = P + I + D
$$

P、I、D 是同時計入最後輸出的。

只是它們的「時間感」不同:

項目

它看的東西

時間感

P

現在的誤差

現在

I

過去累積的誤差

過去

D

誤差變化速度

趨勢 / 未來傾向

所以可以簡單記成:P 看現在,I 記過去,D 看趨勢。


九、用速度控制做完整例子

假設目標速度是 100,目前速度是 90。

$$
error = 100 - 90 = 10
$$

假設:

$$
K_p = 2
$$

那麼:

$$
P = 2 \times 10 = 20
$$

這表示 P 項根據「現在差 10」給出 20 的修正量。

接著,I 項會累積這個誤差:

integral += error * dt;

如果先簡化,不考慮 \(dt\),前幾次控制可能像這樣:

時間

實際速度

誤差

P 看的是

I 累積的是

t1

90

10

10

10

t2

95

5

5

15

t3

98

2

2

17

t4

100

0

0

17

P 項會隨著當下誤差變小而變小。
但 I 項記得過去曾經有一段時間低於目標,所以它仍然保留累積量。

如果後來速度變成 105:

$$
error = 100 - 105 = -5
$$

I 項就會被扣回來:

時間

實際速度

誤差

I 累積

t1

90

+10

10

t2

95

+5

15

t3

105

-5

10

這表示系統已經超過目標,I 項開始往反方向修正。
接著來看 D 項的例子,重點是「誤差變化速度」。

假設目標速度是 100:

時間

實際速度

誤差

誤差變化

D 的感覺

t1

90

10

—

剛開始

t2

95

5

-5

誤差快速變小 → 開始減力

t3

98

2

-3

還在快速接近 → 繼續煞車

t4

100

0

-2

很接近目標 → 更小輸出

t5

103

-3

-3

已經超過 → 強烈反向修正

這裡的重點是:

  • 誤差從 10 → 5 → 2,代表系統正在「快速接近目標」

  • D 項看到這個趨勢,就會提前減少輸出,像踩煞車

  • 如果沒有 D,系統可能會直接衝過頭,例如衝到 105

所以可以這樣理解:

  • P:現在差多少,就修多少

  • I:過去累積差多少,要補回來

  • D:看你接近目標的速度,太快就先踩煞車


十、總結:PID 的核心直覺

PID 的目標不是單純「越用力修正越好」。
它真正想達到的是:讓系統快、準、穩地接近目標值。

三個項目各自負責不同任務:

項目

功能

P

根據現在的偏差立即修正

I

根據過去累積的偏差消除長期誤差

D

根據誤差變化速度抑制超調

最簡單的理解是:

P:現在差多少,就修多少。
I:過去一直沒修好的部分,要補回來。
D:看你接近目標的速度,必要時提前煞車。

所以 PID 公式雖然看起來像數學式,但本質上是一個很直覺的控制策略:

$$
控制輸出 = 現在的修正 + 過去欠帳的補償 + 趨勢的預判
$$


也就是:

$$
u(t)=K_p e(t)+K_i \int e(t)dt+K_d \frac{de(t)}{dt}
$$
這就是 PID 控制的核心。



2026/06/02

心理_情緒標籤(Affect Labeling)

--------------------------------------------大意--------------------------------------------
1. 科學證實:透過口頭或文字精準命名當下的真實感受(情感標籤),
    能立刻切換大腦主控權,從生理上平息杏仁核的情緒風暴。
2. 佛法對治:這與唯識學精細辨識「心所」的智慧高度契合——說破無毒,
    一旦精準指認出心靈的「病名」,大腦與修持便能立刻找到對症下藥的「處方箋」。
3. 知行邊界:情緒標籤是「滅火器」而非「清理工人」——
    先精準命名以平息主觀情緒,才能氣定神閒地解決客觀事情。
----------------------------------------------------------------------------------------------

消解負面情緒或鞏固正面情緒,
最簡單且有效的方法,就是精準回答一個問題:「你現在感覺如何?」

北卡羅來納大學(UNC)的心理學教授克里斯蒂安·沃夫(Christian Waugh)
將此技術稱為「情感標籤(Affect Labeling)」,
亦即透過文字或口語,明確指認出當下的真實感受(註1)。

對此,他曾做過科學實驗,讓兩組人觀看令人不適的圖片(如凶狠咆哮的惡犬):
  • A組(唯物描述):只貼內容標籤,在心裡說「這是一隻狗」、「牠有牙齒」。結果:負面情緒毫無緩解。
  • B組(情緒標籤):直接指認感受,在心裡說「我感到恐懼」、「這讓我焦慮」。結果:負面情緒顯著降低。
也就是說,只要你意識到並明確標記那個負面情緒,痛苦立即就會減輕。
沃夫教授指出,這個標籤動作對正負情緒有著精妙的「不對稱作用」:
  • 對負面情緒(減弱):一旦明確說出,大腦會自動轉向思考「為什麼會這樣」與「如何解決」。這種尋求對策所帶來的確定性,會讓焦慮感馬上減輕。
  • 對正面情緒(鞏固):正面情緒本質是短暫且易逝的。當我們為快樂貼上精確標籤時,這個動作強行延長了訊號在大腦中的停留時間,讓積極的體驗在腦中駐留得更久。

若要在日常生活中實踐,以下有兩點具體的操作建議:

第一,外顯化(必須說出或寫下)
找個信任的對象傾訴,把煩惱直接說給他聽。
如果身邊沒人,至少也要把它寫下來(例如記錄在筆記軟體中)。
單純在腦中閃過是不夠的,必須透過語言或文字將其實體化。

第二,精準化(拒絕模糊,直擊真實)
表達必須真實且具體。
面對負面情緒不要隱藏,不能明明難受還敷衍說「沒事」或「不爽」,
要精確釐清到底是「羞愧」、「挫折」還是「嫉妒」。
就算是正面情緒,也別只籠統地說「我很快樂」,
要點出具體是哪種快樂:是感到「有趣」、「平靜」還是「滿足」?


*****
無獨有偶,早在 2007 年,
加州大學洛杉磯分校(UCLA)的心理學家馬修·利伯曼(Matthew Lieberman)
便透過功能性磁振造影(fMRI)腦部掃描,為這個現象找到了堅實的生理學證據(註2)。

當人遭遇強烈情緒時,大腦負責處理負面情緒與生存警報的杏仁核(Amygdala)會瘋狂活化。
然而,一旦受試者進行「情緒標籤」的動作,把感受說出來(如:「我感覺到壓力」),
杏仁核的活動在幾秒內大幅下降,其緩解程度甚至堪比止痛藥對身體疼痛的抑制。
利伯曼的研究揭示了兩個核心神經機制:
第一,腦區的切換
單純「命名情緒」會立刻激活前額葉皮質(Prefrontal Cortex)。
前額葉是負責理性調節與邏輯思考的區域,它的啟動會直接抑制杏仁核的警報。

第二,故事與情緒的剝離
我們在面對痛苦時,
大腦習慣開始編織「故事」或「合理化解釋」(例如:「我覺得沒有人在乎我」)。
但故事並非情緒,而是大腦圍繞情緒產生的衍生妄想。
有效的情緒標籤,要求我們停止講故事,直擊底層的核心形容詞(如「孤單」或「自責」)。

當你替情緒命名的那一刻,你啟動了前額葉的觀照能力。
如利伯曼所言:「當你替情緒命名時,你就不再是情緒本身。」
你從情緒的受害者,變成了理性的觀察者。


*****
這種透過「命名」來對治心靈狀態的邏輯,與佛教唯識學(Yogacara)體系完全相通。
在唯識學中,人的心理活動被嚴密拆解為「五十一心所」,
其中包括了導向清淨的「善心所」(如:信、慚、愧、無貪、無瞋、無癡),
以及導致痛苦的「煩惱心所/惡心所」(如:貪、瞋、癡、慢、疑、嫉)。

正如我一位出家師父開示過的一個深刻隱喻:
「當你可以為現在的狀態命名,就等於知道解決方向了。
這就好像生病,最怕的是醫生不曉得你得的是什麼病;
一旦知道病的名稱(確立診斷),就能有治療方向(開出處方)。」

唯識學之所以將煩惱心所分得如此細微
(將模糊的「痛苦」精準拆解為忿、恨、惱、嫉等),本質上就是為了「確立診斷」。
當我們陷入負面情緒時,最怕的是大腦處於模糊的「無明」狀態,
只知道不舒服,卻不知病因。

一旦我們能精準指認當下是「瞋心所」或「慢心所」在作祟,
佛教相對應的處方箋(如用慈悲對治瞋、用因緣觀對治癡)就能立刻對焦。
這與行為科學所說的「透過精準標籤,讓大腦反思因果、琢磨對策」完全不謀而合。

綜合邏輯對照表

維度

沃夫教授(行為科學)

利伯曼教授(神經科學)

唯識學與師父開示(佛法對治)

無效的狀態

隱藏情緒、模糊籠統(只說很快樂或很不爽)

圍繞情緒編造「故事」與「合理化」

陷入無明、隨煩惱流轉,不知病因

核心動作

真實、明確、具體地貼上情緒標籤

單純命名情緒,直擊底層形容詞

觀照當下,指認出具體的心所名稱

生理/心理機制

反思因果,琢磨對策,建立大腦的「確定性」

激活前額葉皮質,抑制杏仁核的生存警報

精準對號入座(確立病名),啟動正知正念

最終結果

負面痛苦減輕,正面情緒鞏固

大幅降低情緒風暴,重新奪回主控權

確立對治方向,依方抓藥(藥到病除)



最後要說,情緒標籤是「滅火器」,而非「清理工人」——
它負責迅速撲滅事情引發的情緒風暴,但外在的客觀問題仍須動手解決。

精準指認病名以平息內耗,是為了幫大腦找回理性的工具。
先處理情緒(破除主觀的無明),再處理事情(應對客觀的因緣);
唯有心靈恢復氣定神閒,你才能乾淨俐落地把事情處理掉。



----------------------------------------------------------------------------------------------
註1:萬維鋼·精英日課5:行為無效,說破無毒


註2: 2026年5月29日 張馬丁shorts


2026/06/01

工業_札記_什麼叫做創新

--------------------------------------------大意--------------------------------------------
創新不一定是「無中生有」,
更多時候是在既有知識與成果之上,提出新的架構、重新組合,或進一步改良。
簡單來說,就是:從無到有、從散到整、從有到優。
----------------------------------------------------------------------------------------------

廣義來說,創新大致可以從三種形式來理解:
1. 提出新的東西:前人尚未形成的新觀念、新理論或新方法。
2. 組合再創造:把既有的知識、技術或成果重新組合,形成新的成果。
3. 改進既有事物:把原本存在的東西做得更有效率、更可靠或更實用。

可以簡化成:從無到有、從散到整、從有到優。
這三類並不是《專利法》明文規定的「創新三分類」,
但與台灣專利審查基準所列的
「開創性發明、已知技術的組合發明、已知發明的改良」非常接近。

以下借用幾個大家比較熟悉的科學史與技術史例子來說明。


一、提出新的東西

第一種,是提出前人尚未形成的新觀念、新理論或新方法。
例如愛因斯坦於 1905 年提出狹義相對論。
當然,相對論並不是完全沒有前人的基礎,
但愛因斯坦進一步重新處理時間、空間與運動之間的關係,建立出新的理論架構。
因此,所謂「新的東西」,並不是指毫無前人基礎,
而是在既有知識之上,提出前人尚未形成的理論或架構。


二、組合再創造

第二種,是把別人已經取得的成果重新組合,形成新的理論或成果。
DNA 雙股螺旋結構就是很典型的例子。
在 Watson 與 Crick 提出模型以前,科學界已經累積不少相關成果。
例如,

  • Chargaff 發現 DNA 中 A 與 T、G 與 C 的數量大致相等;
  • Rosalind Franklin、Maurice Wilkins 等人的 X 光繞射研究,也提供了 DNA 結構的重要線索。
    Watson 與 Crick 綜合這些既有成果,
    再加上分子化學與立體結構的知識,於 1953 年提出 DNA 雙股螺旋模型。

因此,這類創新的特色是:
個別材料未必是新的,但重新組合這些材料之後,產生了新的成果。
這也很接近熊彼得所說的「新組合」:
創新往往不是完全憑空產生,而是把既有知識、技術、資源重新組合。


三、改進既有事物

第三種,是原本的東西已經存在,但進一步改善它。
最典型的例子是瓦特改良蒸汽機。瓦特並不是蒸汽機的發明者。
在他以前,Newcomen 蒸汽機已經實際用於礦井抽水。
1712 年左右,Newcomen 的大氣式蒸汽機已投入礦井排水,
之後在十八世紀前半葉逐漸得到廣泛使用。
它最大的問題之一,是耗煤量大、效率低。
瓦特的重要貢獻之一,是加入分離式冷凝器,避免汽缸反覆加熱與冷卻,
大幅降低燃料消耗,提高蒸汽機的效率。
1769 年,瓦特取得分離式冷凝器相關專利。

所以,瓦特的創新並不是「發明蒸汽機」,而是:
把原本已經存在的東西做得更好,使它具有更大的實用價值。


總結

創新不一定等於「無中生有」。它至少可以有三種形式:
一、提出新的東西。
二、重新組合既有成果。
三、改善既有事物。




----------------------------------------------------------------------------------------------
參考資料:
1. DNA:1953: DNA Double Helix


2. Newcomen 蒸汽機:
(1)https://blog.sciencemuseum.org.uk/a-new-age/

(2)維基:紐可門蒸汽機
人們從礦井中抽水時會用到紐可門蒸汽機。18世紀,人們建造了數百台紐可門蒸汽機。
詹姆斯·瓦特後來發明的瓦特蒸汽機是紐可門蒸汽機的改進版本,
瓦特蒸汽機的燃油效率相較於紐可門蒸汽機大約翻了一倍,
於是很多蒸汽機採用詹姆斯·瓦特的設計方案。
因此在蒸汽機的起源方面,詹姆斯·瓦特比湯瑪斯·紐科門更為人所知。


3. Watt 改良蒸汽機:
(1) James Watt and the separate condenser
On 5 January 1769 a patent was given to Scottish engineer James Watt
for his separate condenser.

(2)維基:瓦特蒸汽機
Watt worked on the design over a period of several years, introducing the condenser,
and introducing improvements to practically every part of the design.
Notably, Watt performed a lengthy series of trials on ways to seal the piston in the cylinder,
which considerably reduced leakage during the power stroke, preventing power loss.
All of these changes produced a more reliable design
which used half as much coal to produce the same amount of power.


4. 專利審查基準彙編
◎第一章 說明書、申請專利範圍、摘要及圖式(2024年7月1日施行版)
[這一章直接列出「開創性發明、已知技術的組合發明、已知發明的改良」,
與本文所歸納的三種創新形式最直接相關。
]

◎第三章 專利要件(2024年7月1日施行版)
[這一章主要用來補充說明:具有「組合」或「改良」形式,
並不代表一定具有專利上的進步性;
仍須判斷是否只是單純拼湊、簡單變更,
或是否為通常知識者可以輕易完成。
]