chatGPT,幫我寫個(gè)PID
chatGPT,幫我寫個(gè)PID
今天上難度
昨天用chatGPT寫了控制燈的PLC程序,
朋友們說太簡單,
那好,
今天上難度。
PID是工業(yè)領(lǐng)域常用的一種算法,
我還沒有自己寫過,
讓它幫我寫一下試試~
01?二檔起步
既然昨天試過了,
那么今天就著昨天的聊天,
繼續(xù)問,
我還不太放心,
先英文問一句:




程序太長了,
截了好幾次圖才截下來。
比我想的要完美。
有注釋,
結(jié)構(gòu)清晰,
考慮了兩個(gè)限制條件,(使能和輸出限制)
挺好!
而且速度快,
這個(gè)長度的程序,
自己寫得寫一陣子吧,
chatGPT一秒就可以。
這就結(jié)束了嗎?
不,
甲方依然可以提要求!
02?雞蛋里挑骨頭
上面生成的,
是經(jīng)典的PID算法,
中規(guī)中矩。
但是,
還有些更極端的條件。
比如說積分飽和。
英文叫winding up,
來讓它試一下:


完美解決,
沒難住它,
看來這一課之前學(xué)過了。
還是要承認(rèn),
我自己寫這部分,
是寫不出來的,
估計(jì)得查資料寫半天,
它已經(jīng)超越我了。
那又怎樣,
甲方可以繼續(xù)提要求!
03?要求加戲
我查了查資料,
發(fā)現(xiàn)PID算法還可以加戲,
例如,
我們可以讓它加上前饋控制,
恩,
總之就是一種額外的算法:



順利給出了答案,
看來這個(gè)它也會。
還有點(diǎn)小瑕疵,
要求它改一下:


恩,
按照要求改了,
不過,
程序怎么越來越短了?
對比了一下,
發(fā)現(xiàn)開始的兩個(gè)條件丟了,
(使能和輸出限制)
這有點(diǎn)健忘呀,
改了這里,
忘了那里,
甲方不高興了!
04?忘記的,要補(bǔ)回來
讓它把忘記的,
統(tǒng)統(tǒng)補(bǔ)回來:



恩,又改了一遍,
還差了一點(diǎn),
再來!


幾個(gè)回合下來
甲方又拿到了滿意的結(jié)果。
這次還給加了中文注釋,
因?yàn)槲液退鼘υ挄r(shí),
一會英文,
一會中文,
所以它也時(shí)不時(shí)的,
隨機(jī)切換。
05?餐后甜點(diǎn): 濾波器
PID寫的有點(diǎn)快了,
這么快完成,
意猶未盡,
再寫個(gè)濾波器吧~
我也不知道自己想要什么濾波器,
先來一個(gè)再說:


不錯(cuò)哦,
再隨便打聽打聽:

卡爾曼和斯特林看起來高大上,
來一個(gè),
斯特林像不像過年放的加特林~

這個(gè)確實(shí)超綱了,
有點(diǎn)難為它了,
人家也不容易,
難度降一降吧:


你看,
人家也說了,
“這應(yīng)該是一個(gè)良好的起點(diǎn),
幫助您了解如何編寫均值濾波器的功能塊。”
這個(gè)起點(diǎn),
已經(jīng)省很多力氣了。
而且,
就算不完美,
也沒關(guān)系,
畢竟,
還可以繼續(xù)提要求不是?
我們再換個(gè)類型:


指數(shù)濾波器,
均值濾波器,
中位數(shù)濾波器,
這三種餐后甜點(diǎn),
還可以吧?
06?結(jié)語
昨天把燈打開和關(guān)上的程序,
屬于邏輯程序;
今天的PID和濾波器,
屬于工藝類型的;
我們算是測試了兩大類型的程序。
我認(rèn)為,
結(jié)果還不錯(cuò),
您看呢?
朋友們說,
還是不能直接拿來就用,
還會丟三落四,
沒有想象的好。
我想說,
它能給我們一個(gè)很好的起點(diǎn),
啟發(fā)我們的思路,
而且,
我們還能反復(fù)提要求。
有沒有發(fā)現(xiàn),
反復(fù)提要求的過程,
chatGPT反復(fù)給回答,
讓我這個(gè)“甲方”越來越明確,
自己想要什么。
必須承認(rèn),
有的時(shí)候,
我們不知道自己想要什么,

chatGPT可以記住之前的對話,
允許用戶不斷糾正,
從而,
幫助我們明確想要什么。
好像有點(diǎn)跑題了,
打住,
感謝大家閱讀:)