第一篇:關(guān)于西門子S7-200 PID編程學(xué)習(xí)心得
關(guān)于西門子S7-200 PID編程學(xué)習(xí)心得
1.注意區(qū)分輸入端接的是電壓信號還是電流信號;輸出端是電流信號還是電壓信號。在模擬模塊上不同信號下的接線方式。
2.了解信號輸入元件相關(guān)資料:
如使用溫度變送器,要了解溫度變送器測量范圍,如0~100℃;輸出電流范圍4~20mA;分度號是什么,如PT100;接線原理圖等。相關(guān)輸入元件;輸出元件在模擬模塊上的接線方式。其他如工程要求的精度是多少等。
3.關(guān)于PID設(shè)定值(VD204)確認(rèn):
假定我們將控制溫度定位23.5℃;以單極性為例,首先應(yīng)確定輸入信號是0~10V電壓信號還是4~20mA電流信號?,這在PID設(shè)定值中非常重要。如是0~10V電壓輸入信號對應(yīng)0~32000,溫度范圍0~100℃,設(shè)定值為可直接算出: VD204=23.5/(100-0)=0.235;
若是電流4~20mA,其對應(yīng)數(shù)值應(yīng)為6400~32000,溫度范圍0~100℃,則設(shè)定值應(yīng)為0.388。
原因:模擬模塊中0~32000對應(yīng)0~20mA;其中6400~32000對應(yīng)4~20mA對應(yīng)0~100℃;這就必須進(jìn)行相關(guān)的計(jì)算,23.5℃電流計(jì)算方式:
(20-4):(100-0)=(X-4):23.5;解方程:X=7.76(mA)。設(shè)定值:VD204=7.76/20=0.388.4.關(guān)于PID輸出值(VD208)確認(rèn):
以單極性為例,應(yīng)確定輸出信號是0~10V電壓信號還是4~20mA電流信號對應(yīng)著0~32000?
若是輸出信號AQW0對應(yīng)電壓信號,比如0~10V,則 AQW0=(實(shí)數(shù)VD208*32000在轉(zhuǎn)化成整數(shù))即可; 若是輸出信號AQW0對應(yīng)電流信號,比如4~20 mA,則 AQW0=(實(shí)數(shù)VD208*32000在轉(zhuǎn)化成整數(shù)+6400)。5.關(guān)于PID恒溫控制實(shí)際: 通過上機(jī)實(shí)驗(yàn)可知:PID恒溫控制是圍繞著設(shè)定值進(jìn)行調(diào)節(jié)的。若設(shè)定溫度為23.5℃;當(dāng)溫度低于設(shè)定值時(shí),加溫蒸汽調(diào)節(jié)閥始終處于全部打開狀態(tài),;當(dāng)溫度達(dá)到23.5℃,加溫用的蒸汽調(diào)節(jié)閥開始逐漸關(guān)閉,在關(guān)閉過程中,溫度有可能仍在漸漸上升,溫度偏離越大,關(guān)閉速度越快;知道全部關(guān)閉為止;當(dāng)溫度再次低于設(shè)定值時(shí),加溫蒸汽調(diào)節(jié)閥則會逐漸打開,打開速度取決于溫度偏離值的大小,偏離越大,打開速度越快;直到溫度再次達(dá)到設(shè)定值。若溫度長時(shí)間未達(dá)到設(shè)定值,調(diào)節(jié)功能會將調(diào)節(jié)閥全部打開,這就是我所觀察到的PID恒溫控制情況。所以,我們可以根據(jù)實(shí)控情況進(jìn)行必要的編程,有效的利用低于設(shè)定值時(shí)PID控制時(shí)段;切斷高于設(shè)定值部分的PID控制,在溫度高于設(shè)定值后,即可根據(jù)生產(chǎn)要求干脆部分或全部關(guān)閉加溫閥。以防溫度上升過高。來求得優(yōu)越的溫控效果。
西門子SIEMENS S7-200CPU PID控
制圖解之二
點(diǎn)擊數(shù):103 發(fā)布時(shí)間:2009年9月27日 來源:
常問問題
1做完 PID 向?qū)Ш螅绾沃老驅(qū)е性O(shè)定值,過程值及 PID 等參數(shù)所用的地址?
?做完 PID 向?qū)Ш罂稍?Symbol Table(符號表)中,查看 PID 向?qū)傻姆柋?上例中為 PID0_SYM),可看到各參數(shù)所用的詳細(xì)地址,及數(shù)值范圍。
?在 Data Block(數(shù)據(jù)塊)中,查看 PID 指令回路表的相關(guān)參數(shù)。如圖所示:
圖 12.PID 數(shù)據(jù)塊
2、做完 PID 向?qū)Ш螅绾卧谡{(diào)試中修改 PID 參數(shù)?
可以在 Status Chart(狀態(tài)表)中,輸入相應(yīng)的參數(shù)地址,然后在線寫入用戶需要的 PID 參數(shù)數(shù)值,這樣用戶就可根據(jù)工藝需要隨時(shí)對 PID 參數(shù)、設(shè)定值等進(jìn)行調(diào)整。
3、PID 已經(jīng)調(diào)整合適,如何正式確定參數(shù)?
可以在 Data Block(數(shù)據(jù)塊)中直接寫入?yún)?shù)。
4、做完 PID 向?qū)Ш螅芊癫榭?PID 生成的子程序,中斷程序?
PID 向?qū)傻淖映绦颍袛喑绦蛴脩羰菬o法看到的,也不能對其進(jìn)行修改。沒有密碼能夠打開這些子程序,一般的應(yīng)用也沒有必要打開查看。
5、PID 參數(shù)有經(jīng)驗(yàn)值嗎?
每一個項(xiàng)目的 PID 參數(shù)都不一樣,沒有經(jīng)驗(yàn)參數(shù),只能現(xiàn)場調(diào)試獲得。
6、我的 PID 向?qū)傻某绦驗(yàn)楹尾粓?zhí)行?
?必須保證用 SM0.0 無條件調(diào)用 PID0_INIT 程序
?在程序的其它部分不要再使用 SMB34 定時(shí)中斷,也不要對 SMB34 賦值
7、如何實(shí)現(xiàn) PID 反作用調(diào)節(jié)?
在有些控制中需要 PID 反作用調(diào)節(jié)。例如:在夏天控制空調(diào)制冷時(shí),若反饋溫度(過
程值)低于設(shè)定溫度,需要關(guān)閥,減小輸出控制(減少冷水流量等),這就是 PID 反
作用調(diào)節(jié)(在 PID 正作用中若過程值小于設(shè)定值,則需要增大輸出控制)。
若想實(shí)現(xiàn) PID 反作用調(diào)節(jié),需要把 PID 回路的增益設(shè)為負(fù)數(shù)。對于增益為 0 的積分或
微分控制來說,如果指定積分時(shí)間、微分時(shí)間為負(fù)值,則是反作用回路。
8、如何根據(jù)工藝要求有選擇地投入 PID 功能?
可使用“手動/自動”切換的功能。PID 向?qū)傻?PID 功能塊只能使用 SM0.0 的條件 調(diào)用。
PID Wizard 中的給定-反饋設(shè)置
完成 PID Wizard 組態(tài)后,會為每個 PID 回路生成一個子程序 PIDx_INIT(x = 01.0 之間的實(shí)
數(shù),而可以是實(shí)際的反饋地址,或是其他變量。例如,PV_I 可以是模擬量輸入地址
AIW0,也可以是存儲器地址 VW100 等;Setpoint 則往往來自 V 變量存儲區(qū),這樣可以
從人機(jī)操作界面(HMI)設(shè)備輸入給定值。注意:對于 PID 控制系統(tǒng)來說,必須保證給定與過程反饋的一致性: ?給定與反饋的物理意義一致
這取決于被控制的對象,如果是壓力,則給定也必須對應(yīng)于壓力值;如果是溫度,則 給定也必須對應(yīng)于溫度。?給定與反饋的數(shù)值范圍對應(yīng)
如果給定直接是攝氏溫度值,則反饋必須是對應(yīng)的攝氏溫度值;如果反饋直接使用模
擬量輸入的對應(yīng)數(shù)值,則給定也必須向反饋的數(shù)值范圍換算。如果給定與反饋的換算有特定的比例關(guān)系也可以。如給定也可以表示為以反饋的數(shù)值 范圍的百分比數(shù)值。
給定與反饋的數(shù)值具體是什么數(shù)值,其取值范圍究竟如何,完全取決于我們在使用
“PID 向?qū)А本幊虝r(shí)指定的給定與反饋的數(shù)值范圍。其中,反饋量的數(shù)值范圍不能隨
便自己定義,而要取決于具體應(yīng)用的模擬量輸入模塊。圖 2.在圖中 a.處設(shè)置給定范圍 圖 3.在圖中 b.處設(shè)置反饋范圍
假定一個 PID 控制系統(tǒng)的控制對象是壓力,反饋元件的測量范圍為 020mA(或 41200.0 °C。則
可按如下設(shè)置給定的范圍。
表 2.在上面的例子中,反饋和給定可以按照如下方法設(shè)置
圖 4.反饋范圍設(shè)置
圖 5 給定范圍設(shè)置
PID 自整定
新的 S7-200 CPU 支持 PID 自整定功能,在 STEP 7-Micro/WIN V4.0 中也添加了 PID 調(diào) 節(jié)控制面板。
用戶可以使用用戶程序或 PID 調(diào)節(jié)控制面板來啟動自整定功能。在同一時(shí)間最多可以有 8 個 PID 回路同時(shí)進(jìn)行自整定。PID 調(diào)節(jié)控制面板也可以用來手動調(diào)試?yán)习姹镜模ú恢С?PID 自整定)CPU 的 PID 控制回路。用戶可以根據(jù)工藝要求為調(diào)節(jié)回路選擇快速響應(yīng)、中速響應(yīng)、慢速響應(yīng)或極慢速響應(yīng)。PID 自整定會根據(jù)響應(yīng)類型而計(jì)算出最優(yōu)化的比例、積分、微分值,并可應(yīng)用到控制中。PID 調(diào)節(jié)控制面板
STEP 7-Micro/WIN V4.0 中提供了一個 PID 調(diào)節(jié)控制面板,可以用圖形方式監(jiān)視 PID 回路的運(yùn)行,另外從面板中還可以啟動、停止自整定功能。
圖 1.PID 調(diào)節(jié)控制面板 在圖 1 中: a.過程值指示 顯示過程變量的值及其棒圖 b.當(dāng)前的輸出值指示
顯示當(dāng)前使用的設(shè)定值、采樣時(shí)間、PID 參數(shù)值及顯示當(dāng)前的輸出值和棒圖
c.可顯示過程值、設(shè)定值及輸出值的 PID 趨勢圖 A.過程變量和設(shè)定值的取值范圍及刻度
B.PID 輸出的取值范圍及刻度 C.實(shí)際 PC 時(shí)間
D.以不同顏色表示的設(shè)定值、過程變量及輸出的趨勢圖
d.調(diào)節(jié)參數(shù) 這里你可以:
o 選擇 PID 參數(shù)的顯示:當(dāng)前參數(shù)(Current)、推薦參數(shù)(Suggested)、手動輸入(Manual)
o 在Manual 模式下,可改變 PID 參數(shù),并按 Update PLC 按鈕來更新 PLC 中的參數(shù) o 啟動 PID 自整定功能
o 選擇 Advanced(高級)按鈕進(jìn)入高級參數(shù)設(shè)定 e.當(dāng)前的 PID 回路號
這里你可以選擇需要監(jiān)視或自整定的 PID 回路
f.時(shí)間選項(xiàng)設(shè)定
這里你可以設(shè)定趨勢圖的時(shí)基,時(shí)基以分為單位
g.圖例顏色
這里你可以看到趨勢圖中不同的顏色代表不同的值的趨勢 h.幫助按鈕
i.PID 信息顯示窗口
j.關(guān)閉 PID 調(diào)節(jié)面板
要使用 PID 調(diào)節(jié)控制面板,PID 編程必須使用 PID 向?qū)瓿伞?/p>
PID 自整定步驟
第一步:在 PID Wizard(向?qū)В┲型瓿?PID 功能組態(tài)
要想使用 PID 自整定功能,PID 編程必須用 PID 向?qū)硗瓿傻诙剑捍蜷_ PID 調(diào)節(jié)控制面板,設(shè)置 PID 回路調(diào)節(jié)參數(shù) 在 Micro/WIN V4.0 在線的情況下,從主菜單 Tools > PID Tune Control Panel 或點(diǎn)擊進(jìn)入 PID 調(diào)節(jié)控制面板中,如果面板沒有被激活(所有地方都是灰色),可點(diǎn)擊 Configure(配置)按鈕運(yùn)行 CPU。在 PID 調(diào)節(jié)面板的 e.區(qū)選擇要調(diào)節(jié)的 PID 回路號,在 d.區(qū)選擇 Manual(手動),調(diào)節(jié) PID 參數(shù)并點(diǎn)擊
Update(更新),使新參數(shù)值起作用,監(jiān)視其趨勢圖,根據(jù)調(diào)節(jié)狀況改變 PID 參數(shù)直至調(diào)節(jié)穩(wěn)定。
為了使 PID 自整定順利進(jìn)行,應(yīng)當(dāng)做到:
?使 PID 調(diào)節(jié)器基本穩(wěn)定,輸出、反饋?zhàn)兓骄彛⑶沂狗答伇容^接近給定
?設(shè)置合適的給定值,使 PID 調(diào)節(jié)器的輸出遠(yuǎn)離趨勢圖的上、下坐標(biāo)軸,以免 PID 自整定開始后輸出值的變化 范圍受限制
參見:手動調(diào)整 PID 回路參數(shù)
圖 3.設(shè)置 PID 自整定高級選項(xiàng) 在此允許你設(shè)定下列參數(shù):
a.你可以選中復(fù)選框,讓自整定來自動計(jì)算死區(qū)值和偏移值對于一般的 PID 系統(tǒng),建議使用自動選擇。b.Hysteresis(滯回死區(qū)):
死區(qū)值規(guī)定了允許過程值偏離設(shè)定值的最大(正負(fù))范圍,過程反饋在這個范圍內(nèi)的變化不會引起 PID 自整定調(diào)節(jié)器改變輸出,或者使 PID 自整定調(diào)節(jié)器“認(rèn)為”這個范圍內(nèi)的變化是由于自己改變輸出進(jìn)行自整定調(diào)節(jié)而引起的。PID 自整定開始后,只有過程反饋值超出了該區(qū)域,PID 自整定調(diào)節(jié)器才會認(rèn)為它對輸出的改變發(fā)生了效果。這個值用來減少過程變量的噪聲對自整定的干擾,從而更精確地計(jì)算出過程系統(tǒng)的自然振動頻率。如果選用自動計(jì)算,則缺省值為 2%。如果過程變量反饋干擾信號較強(qiáng)(噪聲大)自然變化范圍就大,可能需要人為設(shè)置一個較大的值。但這個值的改變要與下面的偏差值保持 1:4 的關(guān)系。c.Deviation(偏差):
偏差值決定了允許過程變量偏離設(shè)定值的峰峰值。如果選擇自動計(jì)算該值,它將是死區(qū)的 4 倍,即 8%。有些非常敏感的系統(tǒng)不允許過程量偏離給定值很多,也可以人工設(shè)置為比較小的值,但是要和上述“死區(qū)”設(shè)置保持比例關(guān)系。這就是說,一個精度要求高的系統(tǒng),其反饋信號必須足夠穩(wěn)定。
d.Initial Output Step(初始步長值):PID 調(diào)節(jié)的初始輸出值 PID 自整定開始后,PID 自整定調(diào)節(jié)器將主動改變 PID 的輸出值,以觀察整個系統(tǒng)的反應(yīng)。初始步長值就是輸出的變動第一步變化值,以占實(shí)際輸出量程的百分比表示。
e.Watchdog Time(看門狗時(shí)間):過程變量必須在此時(shí)間(時(shí)基為秒)內(nèi)達(dá)到或穿越給定值,否則會產(chǎn)生看門狗超時(shí)錯誤。PID 自整定調(diào)節(jié)器在改變輸出后,如果超過此時(shí)間還未觀察到過程反饋(從下至上或從上至下)穿越給定曲線,則超時(shí)。如果能夠事先確定實(shí)際系統(tǒng)響應(yīng)非常慢,可以加長這個時(shí)間。
f.動態(tài)響應(yīng)選項(xiàng):根據(jù)回路過程(工藝)的要求可選擇不同的響應(yīng)類型:快速、中速、慢速、極慢速 o 快速:可能產(chǎn)生超調(diào),屬于欠阻尼響應(yīng) o 中速:在產(chǎn)生超調(diào)的邊緣,屬于臨界阻尼響應(yīng)
o 慢速:不會產(chǎn)生任何超調(diào),屬于過阻尼響應(yīng)
o 極慢速:不會產(chǎn)生任何超調(diào),屬于嚴(yán)重過阻尼響應(yīng)用戶在這里指定需要達(dá)到的系統(tǒng)控制效果,而不是對系統(tǒng)本身響應(yīng)快慢的判斷。g.設(shè)定完參數(shù)點(diǎn)擊 OK 鍵回到 PID 調(diào)節(jié)控制面板的主畫面
第四步:在手動將 PID 調(diào)節(jié)到穩(wěn)定狀態(tài)后,即過程值與設(shè)定值接近,且輸出沒有不規(guī)
律的變化,并最好處于控制范圍中心附近。此時(shí)可點(diǎn)擊 d.區(qū)內(nèi)的 Start Auto Tune 按
鈕啟動 PID 自整定功能,這時(shí)按鈕變?yōu)?Stop Auto Tune。這時(shí)只需耐心等待,系統(tǒng)完
成自整定后會自動將計(jì)算出的 PID 參數(shù)顯示在 d.區(qū)。當(dāng)按鈕再次變?yōu)?Start Auto Tune 時(shí),表示系統(tǒng)已經(jīng)完成了 PID 自整定。
要使用自整定功能,必須保證 PID 回路處于自動模式。開始自整定后,給定值不能再改變。
第五步:如果用戶想將 PID 自整定的參數(shù)應(yīng)用到當(dāng)前 PLC 中,則只需點(diǎn)擊 Update PLC。
完成 PID 調(diào)整后,最好下載一次整個項(xiàng)目(包括數(shù)據(jù)塊),使新參數(shù)保存到 CPU 的 EEPROM 中。
PID 自整定失敗的原因
1.PID 輸出在最大值與最小值之間振蕩(曲線接觸到坐標(biāo)軸)
解決方法:降低 PID 初始輸出步長值(initial output step)
2.經(jīng)過一段時(shí)間后,PID 自整定面板顯示如下信息:“ The Auto Tune algorithm was aborted due to a zero-crossing watchdog timeout.” 即自整定計(jì)算因?yàn)榈却?/p>
反饋穿越給定值的看門狗超時(shí)而失敗。
解決方法: 確定在啟動 PID 自整定前,過程變量和輸出值已經(jīng)穩(wěn)定。并檢查
Watchdog Time 的值,將其適當(dāng)增大。
對于其它錯誤,可參考手冊中表 15-3 中的錯誤代碼的描述。如何獲得一個穩(wěn)定的 PID 回路 在開始 PID 自整定調(diào)整前,整個 PID 控制回路必須工作在相對穩(wěn)定的狀態(tài)。
穩(wěn)定的 PID 是指過程變量接近設(shè)定值,輸出不會不規(guī)則的變化,且回路的輸出值在控制范圍中心附近變化。問題與解決方法:
1.PID 輸出總是輸出很大的值,并在這一區(qū)間內(nèi)調(diào)節(jié)變化
產(chǎn)生原因:
o 增益(Gain)值太高
o PID 掃描時(shí)間(sample time)太長(對于快速響應(yīng) PID 的回路)解決方法:降低增益(Gain)值并且/或選擇短一些的掃描時(shí)間 2.過程變量超過設(shè)定值很多(超調(diào)很大)
產(chǎn)生原因:積分時(shí)間(Integral time)可能太高 解決方法:降低積分時(shí)間 3.得到一個非常不穩(wěn)定的 PID
產(chǎn)生原因: o如果用了微分,可能是微分參數(shù)有問題 o沒有微分,可能是增益(Gain)值太高 解決方法:
o調(diào)整微分參數(shù)到 0-1 的范圍內(nèi)
o根據(jù)回路調(diào)節(jié)特性將增益值降低,最低可從 0.x 開始逐漸增大往上調(diào),直到獲得穩(wěn)定的 PID。
S7-200 PLC在PID閉環(huán)控制系統(tǒng)中的應(yīng)用 引 言
在工業(yè)生產(chǎn)中,常需要用閉環(huán)控制方式來控制溫度、壓力、流量等連續(xù)變化的模擬量,無論是使用模擬量控制器的模擬控制系統(tǒng)還是使用計(jì)算機(jī)(包括PLC)的數(shù)字控制系統(tǒng),PID控制都得到了廣泛應(yīng)用。PID控制器是比例-積分-微分控制(Proportional-Integral-De-rivative)的簡稱,其優(yōu)點(diǎn)是不需要精確的控制系統(tǒng)數(shù)學(xué)模型,有較強(qiáng)的靈活性和適應(yīng)性,而且PID控制器的結(jié)構(gòu)典型、程序設(shè)計(jì)簡單、工程上易于實(shí)現(xiàn)、參數(shù)調(diào)整方便。本文以西門子公司S7-200 PLC為例介紹PLC在PID閉環(huán)控制系統(tǒng)中的應(yīng)用。PLC實(shí)現(xiàn)PID控制的方式
用PLC對模擬量進(jìn)行PID控制大致有如下幾種方法:
(1)使用PID過程控制模塊:這種模塊的PID控制程序是PLC廠家設(shè)計(jì)的,并放在模塊中,用戶使用時(shí)只需要設(shè)置一些參數(shù),使用起來非常方便。
(2)使用PID功能指令:它是用于PID控制的子程序,與模擬量輸入/輸出模塊一起使用,可以得到類似于使用PID過程控制的效果,但價(jià)格便宜得多。如S7-200的PID指令。
(3)用自編的程序?qū)崿F(xiàn)PID閉環(huán)控制:在沒有PID過程控制模塊和功能指令的情況下,仍希望采用某種改進(jìn)的PID控制算法,此時(shí)用戶需要自己編制PID控制程序。
本文以西門子S7-200 PLC為例,說明PID控制的原理及PLC的PID功能指令的使用及控制功能的實(shí)現(xiàn)。PLC PID控制器的實(shí)現(xiàn)
3.1 PID控制器的數(shù)字化
PLC的PID控制器的設(shè)計(jì)是以連續(xù)的PID控制規(guī)律為基礎(chǔ),將其數(shù)字化,寫成離散形式的PID方程,再根據(jù)離散方程進(jìn)行控制程序的設(shè)計(jì)。
在連續(xù)系統(tǒng)中,典型的PID閉環(huán)控制系統(tǒng)如圖1所示。圖1中sp(t)是給定值;pv(t)為反饋量;c(t)為系統(tǒng)的輸出量,PID控制器的輸入/輸出關(guān)系如式(1)所示:
式中:M(t)為控制器輸出;Mo為輸出的初始值;e(t)=sp(t)-pv(t)為誤差信號;Kc為比例系數(shù);T1為積分時(shí)間常數(shù),TD為微分時(shí)間常數(shù)。等號右邊前三項(xiàng)分別是比例、積分、微分部分,它們分別與誤差、誤差的積分和微分成正比。如果取其中的1項(xiàng)或2項(xiàng),可以組成P,PD或PI控制器。
假設(shè)采樣周期為TS,系統(tǒng)開始運(yùn)行的時(shí)刻為t=0,用矩形積分來近似精確積分,用差分近似精確微分,將式1離散化,第n次采樣時(shí)控制器的輸出如式(2)所示:
式中:en-1為第n-1次采樣時(shí)的誤差值;K1為積分系數(shù);KD為微分系數(shù)。
基于PLC的閉環(huán)控制系統(tǒng)如圖2所示,圖中虛線部分在PLC內(nèi),spn,pvn,en,Mn分別為模擬量sp(t),pv(t),e(t),M(t)在第n次采樣的數(shù)字量。在許多控制系統(tǒng)中,可能只需要P,I,D中的1種或者2種控制類型。例如,可能只要求比例控制或比例與積分控制,通過設(shè)置參數(shù)可對回路控制類型進(jìn)行選擇。
3.2 輸入輸出變量的轉(zhuǎn)換
PID控制有輸入量2個:給定值sp和過程變量pv。給定值通常是固定值,過程變量通常是經(jīng)過A/D轉(zhuǎn)換和計(jì)算后得到的被控量的實(shí)測值。給定值和過程變量都是和被控對象有關(guān)的值,對于不同的系統(tǒng),它們的大小、范圍與工程單位有很大的不同。應(yīng)用PLC的PID指令對這些量進(jìn)行運(yùn)算之前,必須將其轉(zhuǎn)換成標(biāo)準(zhǔn)化的浮點(diǎn)數(shù)(實(shí)數(shù))。同樣,對于PID指令的輸出,在將其送給D/A轉(zhuǎn)換器之前,也需要進(jìn)行轉(zhuǎn)換。
3.2.1 回路輸入的轉(zhuǎn)換
首先,將給定值或A/D轉(zhuǎn)換后得到的整數(shù)值由16位整數(shù)轉(zhuǎn)換為浮點(diǎn)數(shù),可以用下面的程序?qū)崿F(xiàn)這種轉(zhuǎn)換:
然后,將實(shí)數(shù)進(jìn)一步轉(zhuǎn)換成0.0~1.0之間的標(biāo)準(zhǔn)數(shù),可用式3對給定值及過程變量進(jìn)行標(biāo)準(zhǔn)化:
式中:RNorm為標(biāo)準(zhǔn)化實(shí)數(shù)值;RRaw為標(biāo)準(zhǔn)化前的值;offset為偏移量,對單極性變量為0.0,對雙極性變量為0.5;Span為取值范圍,等于變量的最大值減去最小值,單極性變量的典型值為32 000,雙極性變量的典型值為64 000。
下面的程序?qū)⑸鲜鲛D(zhuǎn)換后得到的AC0中的雙極性數(shù)(其中span=64 000)轉(zhuǎn)換為0.0~1.0之間的實(shí)數(shù)的轉(zhuǎn)換程序?yàn)椋?/p>
3.2.2 回路輸出的轉(zhuǎn)換
回路輸出即PID控制器的輸出,它是標(biāo)準(zhǔn)化的0.0~1.0之間的實(shí)數(shù)。將回路輸出送給D/A轉(zhuǎn)換器之前,必須轉(zhuǎn)換成16位二進(jìn)制數(shù),這一過程是將pv與sp轉(zhuǎn)換成標(biāo)準(zhǔn)化數(shù)值的逆過程。
用下面的式(4)將回路輸出轉(zhuǎn)換為實(shí)數(shù):
式中,RScal是回路輸出對應(yīng)的實(shí)數(shù)值;Mn是回路輸出標(biāo)準(zhǔn)化的實(shí)數(shù)值。
將回路輸出轉(zhuǎn)換為對應(yīng)的實(shí)數(shù)的程序?yàn)椋?/p>
將代表回路輸出的實(shí)數(shù)轉(zhuǎn)化為16位整數(shù)的指令為: PID指令及其回路表
S7-200的PID指令如圖3所示。
指令中TBL是回路表的起始地址,LOOP是回路編號。編譯時(shí)如果指令指定的回路表起始地址或回路號超出范圍,CPU將生成編譯錯誤(范圍錯誤),引起編譯失敗。PID指令對回路表中的某些輸入值不進(jìn)行范圍檢查,應(yīng)保證過程變量、給定值等不超限。回路表如表1所示:
過程變量與給定值是PID運(yùn)算的輸入值,在回路表中他們只能被PID指令讀取而不能改寫。每次完成PID運(yùn)算后,都要更新回路表內(nèi)的輸入值Mn,它被限制在0.0~1.0之間。
如果PID指令中的算術(shù)運(yùn)算發(fā)生錯誤,特殊存儲器位SM 1.1(溢出或非法數(shù)值)被置為1,并將中止PID指令的執(zhí)行,想要消除這種錯誤,在下一次執(zhí)行PID運(yùn)算之前,應(yīng)改變引起運(yùn)算錯誤的輸入值,而不是更新輸出值。PID指令編程舉例
溫度控制是工業(yè)生產(chǎn)過程中很重要的一種控制。溫度控制系統(tǒng)一般具有大慣性、大延時(shí)的特點(diǎn)。在工業(yè)控制中,難以建立溫度系統(tǒng)的精確數(shù)學(xué)模型,而應(yīng)用模擬或數(shù)字式PID閉環(huán)控制往往能獲得較好的控制精度。
本例采用PID控制器,溫度給定值經(jīng)標(biāo)準(zhǔn)化處理后為0.8,選取控制器參數(shù)初值為:Kc=0.2,Ts=0.05 s,TI=20 min,TD=10 min。控制程序如下:
結(jié) 語
本文針對西門子S7-200 PLC在PID閉環(huán)控制系統(tǒng)中的應(yīng)用,介紹PID數(shù)字控制器的原理、實(shí)現(xiàn)方法和編程實(shí)例。需要指出的是,PID控制算法具有很強(qiáng)的靈活性,根據(jù)被控對象特點(diǎn)的不同,可以使用PI控制、PD控制、PID控制等多種形式,從而達(dá)到更好的控制效果。隨著智能控制技術(shù)的發(fā)展,PID控制與模糊控制、神經(jīng)網(wǎng)絡(luò)控制等現(xiàn)代控制方法的結(jié)合,可以實(shí)現(xiàn)PID控制器的參數(shù)自整定,使PID控制器具有經(jīng)久不衰的生命力。
第二篇:西門子300PLC學(xué)習(xí)心得
【例 2-2】壓力變送器的量程為0~10MPa,輸出信號為4~20mA,模擬量輸入模塊的量程為4~20mA,轉(zhuǎn)換后的數(shù)字量為0~27 648,設(shè)轉(zhuǎn)換后得到的數(shù)字為N,試求以kPa 為單位的壓力值。解:0~10MPa(0~10 000kPa)對應(yīng)于轉(zhuǎn)換后的數(shù)字0~27 648,轉(zhuǎn) 換公式為
P = 10 000 × N / 27 648(kPa)
注意在運(yùn)算時(shí)一定要先乘后除,否則可能會損失原始數(shù)據(jù)的精度。
【例 2-3】某發(fā)電機(jī)的電壓互感器的變比為10kV/100V(線電壓),電流互感器的變比為1000A/5A,功率變送器的額定輸入電壓和額定 輸入電流分別為AC 100V 和5A,額定輸出電壓為 DC ±10V,模擬 量輸入模塊將DC ±10V 輸入信號轉(zhuǎn)換為數(shù)字+27648 和-27649。設(shè)轉(zhuǎn) 換后得到的數(shù)字為N,求以kW 為單位的有功功率值。解:根據(jù)互感器額定值計(jì)算的原邊有功功率額定值為 ×10000 ×1000 = 17321000(W)= 17321(kW)
由以上關(guān)系不難推算出互感器原邊的有功功率與轉(zhuǎn)換后的數(shù)字之 間的關(guān)系為17321/ 27648 = 0.62648 kW / 字。轉(zhuǎn)換后的數(shù)字為N 時(shí),對應(yīng)的有功功率為0.6265 N(kW),如果以kW 為單位顯示功率P,使 用定點(diǎn)數(shù)運(yùn)算時(shí)的計(jì)算公式為
P = N × 6 265 / 10 000(kW)
【例 2-4】用于測量鍋爐爐膛壓力(?60 Pa~60 Pa)的變送器的輸 出信號為4~20mA,模擬量輸入模塊將0~20mA 轉(zhuǎn)換為數(shù)字0~27 648,設(shè)轉(zhuǎn)換后得到的數(shù)字為N,試求以0.1Pa 為單位的壓力值。解:4~20mA 的模擬量對應(yīng)于數(shù)字量5 530~2 7648,即?600~600(0.1Pa)對應(yīng)于數(shù)字量5 530~27 648,
第三篇:軟件編程學(xué)習(xí)心得
軟件編程學(xué)習(xí)心得
隨著計(jì)算機(jī)技術(shù)的發(fā)展和工作的需要,為了能夠更好的維護(hù)公司生產(chǎn)管理系統(tǒng);公司安排我們到北大青鳥APTECH進(jìn)修。我們選擇了時(shí)下最流行、發(fā)展速度較快的語言C#。C#學(xué)習(xí)共分三個階段,目前我只學(xué)習(xí)了第一個階段;現(xiàn)將我在北大青鳥學(xué)習(xí)第一階段為期兩個月的學(xué)習(xí)心得總結(jié)如下:
C#是一種新的面向?qū)ο蟮木幊陶Z言,專門用于.NET運(yùn)行時(shí)。C#編譯器只能生成受管制的代碼,也可以使用.NET基類。C#語言自C/C++演變而來。但是,它具有簡單、現(xiàn)代、完全面向?qū)ο蠛皖愋桶踩戎T多特性。下面就簡單說說簡單和現(xiàn)代其中兩種特性。
1、簡單
C#具有C++所沒有的一個優(yōu)勢就是學(xué)習(xí)簡單。該語言首要的目標(biāo)就是簡單。很多功能(還不如說是缺少了C++的一些功能)有助于C#全方位的簡單。
在C#中,沒有C++中流行的指針。默認(rèn)地,您工作在受管理的代碼中,在那里不允許如直接存取內(nèi)存等不安全的操作。我想沒有C++程序員可以聲稱,從沒有使用指針訪問過不屬于他們的內(nèi)存。
C#棄用其它操作符,名字空間、成員和引用僅使用單個操作符 “.”。現(xiàn)在一個程序員所需要理解的就是嵌套名字的注解了。
C#使用統(tǒng)一的類型系統(tǒng)。這種系統(tǒng)充許您把各種類型作為一個對象查看,它是一個原始類型還是一個full-blown 類。和其它編程語言相比,由于加框(boxing)和消框(unboxing)的機(jī)制,把簡單類型當(dāng)作對象處理并不能獲得性能的改善。稍后將詳細(xì)解釋加框和消框,但基本上僅當(dāng)需要時(shí)才使用對象訪問簡單類型這種技術(shù)。
2、現(xiàn)代
投入學(xué)習(xí)C#的努力是一筆大投資,因?yàn)镃#是為編寫NGWS 應(yīng)用程序的主要語言而設(shè)計(jì)。很多用C++可以實(shí)現(xiàn)或者很費(fèi)力實(shí)現(xiàn)的功能,在C#中不過是一部分基本的功能而已。根據(jù)應(yīng)用程序的特殊需求,可以很容易地創(chuàng)建出新的一種數(shù)據(jù)類型。
指針不再是編程武器的一部分。運(yùn)行時(shí)NGWS提供了一個垃圾收集器,負(fù)責(zé)C#程序中的內(nèi)存管理。因內(nèi)存和應(yīng)用程序都受到管理,所以很必要增強(qiáng)類型安全,以確保應(yīng)用的穩(wěn)定性。
異常處理是C#的主要功能。C#的異常處理與C++的不同點(diǎn)在于它是交叉語言的(運(yùn)行時(shí)的另一個功能)。在沒有C#之前,您必須處理怪異的HRESULTs,但現(xiàn)在由于使用了基于異常的健壯的出錯處理,這一切都結(jié)束了。
對于現(xiàn)代的應(yīng)用程序,安全是首要的,C#也不會例外。它提供了元數(shù)據(jù)語法,用于聲明下述NGWS安全模式的能力和許可。元數(shù)據(jù)是NGWS運(yùn)行時(shí)的一個關(guān)鍵的概念。
通兩個多月學(xué)習(xí),我能夠很好的掌握C#語言的基本語句、語法以及老師補(bǔ)充的一些要點(diǎn);能夠編寫簡單的應(yīng)用程序,例如電子郵件的收發(fā)等,為接下來的第二、第三階段學(xué)習(xí)打下了良好的基礎(chǔ)。
第四篇:編程語言學(xué)習(xí)心得
程序語言學(xué)習(xí)的總結(jié)
通過兩年的學(xué)習(xí),我們基本上掌握了C語言,C++和C#三個編程課程。對于程序設(shè)計(jì)語言的學(xué)習(xí),分為學(xué)習(xí)語法規(guī)定、掌握程序設(shè)計(jì)方法、提高程序開發(fā)能力,這些都必須通過充分的實(shí)際上機(jī)操作才能完成。課程上的安排除了課堂講授以外,學(xué)院設(shè)有專門課堂到實(shí)驗(yàn)室進(jìn)行上機(jī)操作實(shí)驗(yàn)。
要利用c語言學(xué)到的知識編寫c語言程序,即把c語言作為工具,通過上機(jī)才能檢驗(yàn)自己是否掌握c語言、自己編寫的程序是否能夠正確地解題。通過上機(jī)實(shí)驗(yàn)來驗(yàn)證自己編制的程序是否正確。在這種思想支配下,可能你會想辦法去“掩蓋”程序中的錯誤,而不是盡可能多地發(fā)現(xiàn)程序中存在的問題。自己編好程序上機(jī)調(diào)試運(yùn)行時(shí),可能有很多你想不到的情況發(fā)生,通過解決這些問題,可以逐步提高自己對c語言的理解和程序開發(fā)能力。
在原有的C語言的基礎(chǔ)知識之上,初步接觸C++時(shí)感到比較簡單易懂。但隨著之后的步步深入學(xué)習(xí),C++的不同之處以及其優(yōu)勢逐。從第二章引入了C++簡單程序的設(shè)計(jì)。包括一些C++語言的概述,基本數(shù)據(jù)類型和表達(dá)式,數(shù)據(jù)的輸入與輸出,算法的基本東芝結(jié)構(gòu),以及自定義類型數(shù)據(jù)等知識。此部分多與C語言相似。之后又學(xué)習(xí)了函數(shù)的相關(guān)內(nèi)容,這里學(xué)到了新的知識要點(diǎn)----函數(shù)重載。該內(nèi)容尤其在現(xiàn)在做課程設(shè)計(jì)的時(shí)候尤為重要。類是C++語言的精華之所在,在學(xué)習(xí)中,我感覺到類和C語言中的結(jié)構(gòu)體有很大的相似之處,但在類中的構(gòu)造函數(shù)、拷貝構(gòu)造函數(shù)以及類的組合,經(jīng)常弄混淆一些概念。在這之后又學(xué)習(xí)了類的繼承與派生。這使得類與類之間形成了樹狀圖的模型,各子類可以訪問到父類的一些數(shù)據(jù)成員,同樣也實(shí)現(xiàn)了數(shù)據(jù)的之間的“共享”。我個人在編寫派生類的構(gòu)造函數(shù)和拷貝構(gòu)造函數(shù)時(shí),感覺很不熟練,后面章節(jié)的多態(tài)性主要學(xué)習(xí)了運(yùn)算符的重載,其本質(zhì)就是函數(shù)的重載。
在學(xué)習(xí)C#中,類是具有相同特性和行為的對象的抽象。它使用關(guān)鍵字class聲明的。在c#中僅允許單個繼承,類只能從一個基類繼承實(shí)現(xiàn)。但是一個類可以實(shí)現(xiàn)一個以上的接口。對象是人們要進(jìn)行研究的任何事物,從最簡單的整數(shù)到復(fù)雜的飛機(jī)等局可以看對象,它不僅表示具體的事物,還能表示抽象的規(guī)則、計(jì)劃或者事件。接口只是包含方法、委托或事件的簽名。方法的實(shí)現(xiàn)是在實(shí)現(xiàn)接口的類中完成的。接口可以是命名空間或類的成員,并可以包含下列成員:每個C#可執(zhí)行文件都有一個入口—Main方法:static void Main()修飾符public表示可以在任何地方訪問該方法。所以可以在類的外部調(diào)用它。修飾符static表示方法不能在類的實(shí)例上執(zhí)行,因此不必先實(shí)例化類在調(diào)用。在變量聲明時(shí):變量是類或者結(jié)構(gòu)中的字段,如果沒有顯示初始化,創(chuàng)建這些變量時(shí),其值就是默認(rèn)的0。變量是方法的局部變量就必須在代碼中顯示初始化,之后才能在語句中使用它們的值。
課堂上要講授許多關(guān)于語法規(guī)則,要使用這些工具解決問題,通過多次上機(jī)練習(xí),對于語法知識有了更深刻的認(rèn)識,在理解的基礎(chǔ)上就會自然而然地掌握。一個程序從編輯、編譯、連接到運(yùn)行,都要在一定的外部操作環(huán)境下才能進(jìn)行。通過上機(jī)實(shí)驗(yàn),熟練地掌握開發(fā)環(huán)境,為以后真正編寫計(jì)算機(jī)程序解決實(shí)際問題打下基礎(chǔ)。
第五篇:編程學(xué)習(xí)心得和方法
雪中悍刀行 http://bmdqw.com/
編程學(xué)習(xí)心得和方法
說到編程,很多人首先會想到C、C++,JAVA,DELPHI。沒錯,這些都是現(xiàn)今最流行的計(jì)算機(jī)程序語言,它們各有特色。然而事實(shí)上是,不為人知而且比它們更好更出色的語言有很多。它們得以流行的原因有很多,其中最重要的一點(diǎn)是,它們在計(jì)算機(jī)語言的發(fā)展歷史上有重要的劃時(shí)代意義。特別是C的出現(xiàn),將軟件編程引入了真正的可視化編程。很多新語言的出現(xiàn),解決了當(dāng)時(shí)不能解決又不得不解決的問題。
另外,這些語言的確是出色的,它們不但易學(xué),更是易用,這也是它們得以流行的一大原因。大家的支持,和個別系統(tǒng)和開發(fā)公司對它們的支持,以及它們的開發(fā)組件和類庫眾多和廣大推廣的原因,也使得它們當(dāng)今數(shù)一數(shù)二的計(jì)算機(jī)語言。
編程語言不只有這些,計(jì)算機(jī)語言還有很多分類,其中,網(wǎng)絡(luò)編程也屬于其一。廣為人知的編程語言有ASP,JSP,還有PHP。當(dāng)然,還有腳本語言,比如ASP用的VBscript,還有在客戶端流行的Javascript。其中,ASP(asp.net)基于VB(vb.net),JSP基于JAVA。現(xiàn)今已經(jīng)發(fā)展出各種各樣的編程語言,并且,它們大多采用了英文編寫,單是關(guān)鍵字和標(biāo)準(zhǔn)類庫就要我們花時(shí)間去記憶和識別,最后,還得去靈活運(yùn)用更多的東西。所以,我們想一次性學(xué)習(xí)它們,這是不可能的事情,盡管大多語言很相似,你也不可能做到的。事實(shí)上,很少有人能夠?qū)W習(xí)全部,大多都只能擅長某一種。
即便是高級編程人員,像那些為開發(fā)軟件工作的類庫和組件高手,他們也不敢說自己精通每一種語言。事實(shí)就是這樣,每一種語言有著它們相似而又不同的語法,它們有著不同的關(guān)鍵字,發(fā)展出了各種各樣的類庫,它們的函數(shù)或者方法的聲明定義都有不同,更多的差異不為我們所知。
每一種語言,它都有著太多的東西需要我們?nèi)ダ斫夂陀洃洠覀儧]有時(shí)間和精力做得太多。對于初學(xué)者,我們最不應(yīng)該急于求成,更不要試圖一次性學(xué)習(xí)所有語言。事實(shí)上,我們可以選取某種語言學(xué)習(xí)。每一種語言都有著自己的強(qiáng)大功能,好的語言能夠完成所有事情,所以,你不要擔(dān)心學(xué)習(xí)一種語言不夠全面這樣的問題。
當(dāng)你能夠得心應(yīng)手掌控你學(xué)習(xí)的一種語言后,你回過頭來再去學(xué)習(xí)其他語言時(shí),你可能會發(fā)現(xiàn),原來,這些語言是那么的相近。這個時(shí)候,你再去學(xué)習(xí)它們,我想,那真是很愉快的事情,大概,那個時(shí)候,你會笑出聲來。
我們知道,從某種意義來說,各種語言都有很多類似的地方,這大概是因?yàn)樗械恼Z言開發(fā)都是基于已有語言創(chuàng)造的,開發(fā)者也出于對大家的尊重,考慮到易于學(xué)習(xí)等等原因,他們選擇了幾乎是相同的語法來定義這些新語言。可以說,所有語言都是基于已有語言開發(fā)的,沒有人能夠聰明到突發(fā)其想,更不可能一夜之間發(fā)明出一種完全不同的外星語。
基于語言再開發(fā)語言,這么做能給使用者帶來了一次學(xué)習(xí),全部學(xué)會的好處。當(dāng)然,最
大的好處莫過于新的語言肯定比之前的語言更加好用簡單,功能也更全面強(qiáng)大。某種意義上講,開發(fā)新的語言就是在更新舊語言的錯誤和不足,最后發(fā)展出新語言。
其實(shí),每一種語言的區(qū)別大多只在于關(guān)鍵字的區(qū)別,還有一些語法上的區(qū)別。事實(shí)就是這樣,很多語言之所以不同,就因?yàn)樗鼈兊年P(guān)鍵字不同。就像你吃飯一樣,中國人用筷子,外國人卻不是。這些都沒有改變吃飯的實(shí)質(zhì),我們都能完成一樣的事情,那就是吃飯。說了這么多,話題也扯得太遠(yuǎn)了,回過頭來吧。說了這么多,我無非是想說,所有的計(jì)算機(jī)語言都是相通的,你只要學(xué)會一種,學(xué)習(xí)其他的就是輕易而舉的事情。所以,你用不著同時(shí)學(xué)習(xí)幾種語言。
如果你不按照我的建議這么做,我想勸告你,你將會一樣也學(xué)不會,至少,你永遠(yuǎn)不能擅長于編程,更別說精通。每一種語言都是經(jīng)歷了無數(shù)年代,最后由開發(fā)者總結(jié)而來,不是一個人能夠輕易學(xué)完的,事實(shí)上,每一種語言都有開發(fā)和支持它們的公司和軟件,每一天都有更多的新東西出現(xiàn),你的時(shí)間不應(yīng)該花在學(xué)更多的語言,應(yīng)該是學(xué)習(xí)它們的變化。
現(xiàn)在的軟件開發(fā)早已經(jīng)不再是手工編程那么復(fù)雜化了,大多情況下,我們只要會語法,只要知道類庫和開發(fā)軟件支持的類庫和組件,我們就能夠編程,但這都只是開發(fā),說不上什么精通不精通。用軟件開發(fā)軟件做軟件,很像拼圖和畫畫,你只要學(xué)會畫就行。
你如果只想開發(fā)軟件,忽略了語言的基礎(chǔ),我想說的是,你的軟件永遠(yuǎn)不會更好更快。即便如此,你也得花時(shí)間去學(xué)習(xí)你所要用的開發(fā)軟件的一切,包括那些擴(kuò)展的組件和類庫。另外,請不要忘了,軟件開發(fā)出來后,還得改進(jìn),你是否能夠讓軟件更自動化,能夠自己檢查錯誤,也或者,你能讓它多線程工作呢?
其實(shí),我們很難在不同的語言相似中區(qū)分它們的異同,也不可能同時(shí)掌握相同功能下,卻有著不同的類庫和不同的實(shí)現(xiàn)方法中去運(yùn)用自如。
好了,我現(xiàn)在要說說學(xué)習(xí)編程的一些簡單方法和步驟,今天將是第一章,也是一個開始。大概,你可能會用上小半年的時(shí)間去學(xué)習(xí)它,也或者更久,我希望是這樣。
首先,我們應(yīng)該學(xué)習(xí)一下計(jì)算機(jī)的基礎(chǔ),包括硬件基礎(chǔ),特別是計(jì)算機(jī)的各種發(fā)展史。之后,我們要理解計(jì)算機(jī)的工作原理,我們得知道,計(jì)算機(jī)依靠什么方法進(jìn)行運(yùn)算。
如果一個軟件開發(fā)者,他開發(fā)了眾多軟件后,回過頭還不知道計(jì)算機(jī)原理,那真好笑的事情,真不知道,他是怎么做軟件的。當(dāng)然,這樣的人或許比我們聰明多了,因?yàn)樗朗裁粗匾裁创我.?dāng)今的社會,專業(yè)才是真,每個行業(yè)都有無數(shù)學(xué)習(xí)對象,你能全部學(xué)會嗎?
其次,你應(yīng)該著手學(xué)習(xí)匯編。或許,有人認(rèn)為這是乎過早了一點(diǎn)。的確,你很有可能會無從下手,這個時(shí)候,你可以先大致了解一下,跳過這一步,往后再來學(xué)習(xí)。
之后,你應(yīng)該做的是,選擇自己想學(xué)的語言,或許,應(yīng)該在C(c++)或者JAVA之間選擇一種。當(dāng)然,你要是只學(xué)習(xí)網(wǎng)絡(luò)編程,可以在ASP和PHP之間選擇,至于Javascript之類的腳本,你可以最后來學(xué)習(xí)。
你已經(jīng)選好要學(xué)習(xí)的語言了吧?現(xiàn)在,就去選擇幾本上好的相關(guān)基礎(chǔ)書籍吧。照我說的去做,你只能選擇最為基礎(chǔ)的只介紹語法的書,這個時(shí)候,你可千萬別去看軟件設(shè)計(jì)的書,也別去動那些設(shè)計(jì)軟件。這一點(diǎn),你千萬要做到,朋友,不要急于求成。
好了,選好了書籍了嗎?你的書籍一定是最為基礎(chǔ)的才行,確定這些后,你應(yīng)該看書了,對了,看的時(shí)候還得記下筆記,最好能夠把每一個知識點(diǎn)記下,特別是關(guān)鍵的東西。這個過程是很難熬的,你千萬不要急躁,另外,你如果從來沒有接觸過編程語言,你就更應(yīng)該慢慢來,你應(yīng)該花上半天時(shí)間學(xué)習(xí)一個章節(jié)。或者,之后的幾個章節(jié),你得花上更多時(shí)間。我想告訴你,朋友,越到后面越難,編程可不是吃飯那么簡單,每個人都得花上很多年的時(shí)間學(xué)習(xí)它。
這個過程中,你還得注意,千萬不能跳過看不懂的東西,是的,你可以到網(wǎng)上也或者是找朋友請教,這是很好的辦法。只有當(dāng)你弄明白了一個知識點(diǎn)后,你才能繼續(xù)學(xué)習(xí)。也不要急著就學(xué)習(xí)用開發(fā)軟件做軟件,千萬記住這一點(diǎn)。你現(xiàn)在是在學(xué)習(xí)語法。是的,語法這一關(guān),你得用心,而且得認(rèn)真對待,還得過關(guān)。你想不種豆就有豆子收,世上可沒這種好事情,除非你偷別人的,那還是自己的嗎?更何況,你是要為自己學(xué)習(xí)。收獲都是要時(shí)間的,成熟都需要時(shí)間。現(xiàn)在,趁你還在學(xué)習(xí)語法的時(shí)間,你們來簡單提一下語法吧。
關(guān)于基礎(chǔ)語法,大概有幾個方面,當(dāng)然了,每種語言各有不同,不過,大體都一樣。
一、語言本身的發(fā)展史和特點(diǎn)
其實(shí),這一點(diǎn),在我們選擇某種語言的時(shí)候就應(yīng)該提前了解。我在這里只想給大家說說自己的心得。
其中,JAVA的好處,一次編寫,永遠(yuǎn)運(yùn)行。它的最大好處不只這些,大家最喜歡的是,它可以在不同的環(huán)境下工作。是的,它不只是在計(jì)算機(jī)上能夠運(yùn)行,它同樣能夠在數(shù)碼產(chǎn)品上運(yùn)行,只要相應(yīng)的機(jī)器上有JAVA虛擬機(jī),JAVA軟件就能運(yùn)行,而且我們不必為不同的機(jī)器而修改我們的軟件源碼。
JAVA這個語言是九十年代才出現(xiàn)的,它由SUN公司開發(fā),它的發(fā)展也算是飛快的。它的設(shè)計(jì)初衷是要在網(wǎng)絡(luò)上應(yīng)用。然而,它卻不巧的成為了能夠運(yùn)行在更多環(huán)境下的語言,可以說,也正因?yàn)檫@一點(diǎn),它才得以流行。當(dāng)然,它的確也成就了網(wǎng)絡(luò),它的出現(xiàn)為網(wǎng)絡(luò)編程帶來了更多的功能和應(yīng)用。
事實(shí)上,當(dāng)今的網(wǎng)絡(luò)應(yīng)用中,JAVA、FALSH、JS、ActiveX這些小程序或者說是腳本插件,它們真是功不可沒。另外,JAVA小程序比其他腳本或者插件都要安全,因?yàn)樗倪\(yùn)行都在虛擬機(jī)下完成,不允許超越出去操控機(jī)器本身。
JAVA已經(jīng)發(fā)展到了JAVA2,它已經(jīng)深入計(jì)算機(jī)編程,特別是同時(shí)應(yīng)用在網(wǎng)絡(luò)和數(shù)碼產(chǎn)品上。沒什么好說的,它和C很相似,事實(shí)就是,它是基于幾大語言開發(fā)的,它去除了許多語
言中難懂的語法。特別是,它沒有了指針,它還能自己檢測錯誤。
如果你覺得C太難,又想制作可以在數(shù)碼產(chǎn)品上運(yùn)行使用的軟件,比如NOKIA手機(jī)的S60系統(tǒng)下的軟件什么的,可以學(xué)習(xí)JAVA。
至于C語言,現(xiàn)在已經(jīng)有三個版本,C、C++、C#。多的不說,這個語言是現(xiàn)在的主流,大多軟件都靠它。三種版本的區(qū)別在于,第一個主要是采用舊式的結(jié)構(gòu)化模式編寫,C++最大特色是面向?qū)ο螅劣谧詈蟮腃#,它基于.net。
C語言成功之處在于,它的出現(xiàn),簡化了軟件開發(fā)流程,易于學(xué)習(xí)和編寫,另外,它最大的特點(diǎn)在于,它既是基礎(chǔ)語言,又是高級語言,或者說,它就是中級語言。作為基礎(chǔ),它能夠操控基層的東西,比如內(nèi)存、計(jì)算機(jī)硬件本身。事實(shí)上,很多硬件驅(qū)動都由它制作而成。另外,UNIX的內(nèi)核曾經(jīng)都是用它做的,可見它非同一般。可以說,C幾乎能夠完成所有的計(jì)算機(jī)功能,當(dāng)然,不是太絕對。對于一些更基礎(chǔ)的東西,大多用匯編搞定。另外,你還得明白這么一點(diǎn),越是基礎(chǔ)的東西,要用更加基礎(chǔ)的語言去實(shí)現(xiàn)。各種數(shù)碼電器包括電腦系統(tǒng)都不會用這些高級語言編寫,有著更深的東西不為人知,我們只有繼續(xù)學(xué)習(xí)才能搞精這一切。現(xiàn)在,我們只要學(xué)習(xí)自己的語言就行。
以這里,我還得說說VC,當(dāng)然,還有VB。事實(shí)上VC和VB是微軟公司的產(chǎn)品,我個人認(rèn)為,VB就是在C的基礎(chǔ)上產(chǎn)生的。C語言可以輕松更改成其它語言,這也是它很厲害的一個地方。事實(shí)上,像大多的基礎(chǔ)語言一樣,C的本身語言特點(diǎn)讓它有這樣的能力這么做。我們能夠用C的一些關(guān)鍵字設(shè)計(jì)出各種函數(shù)和庫,它們當(dāng)然可以和VB和其他語言的函數(shù)和類庫同名,某種意義上說,就因?yàn)檎Z言之間的類似造就了它們之間的相互轉(zhuǎn)化。
同樣的,它也能像高級語言一樣工作,前提就是,你要自定義自己的函數(shù)庫和類庫。這一點(diǎn),就是學(xué)習(xí)編程語言的難點(diǎn)之一。
VC和VB已經(jīng)發(fā)展成了.net版本,ASP就是從VB而來,如今,也有了ASP.net。
很多初學(xué)者大概不知道VC和VB是什么,事實(shí)就是,它們是微軟的軟件,很簡單,它們只是軟件。這么理解大概會好一些,是這樣吧。
C語言的開發(fā)軟件有很多,最著名的莫過于VC++_NET和C++BUILDER,是的,C語言并非某個公司和個人的專屬產(chǎn)品。
DELPHI,這個語言可能沒有C和JAVA出名,但事實(shí)上,它是一種很不錯的高級語言,能夠制作各種軟件,而且它比我們想象中更加簡單。DELPHI屬于BOLAND公司的產(chǎn)品,開發(fā)軟件是DELPHI BUILDER,是的,BOLAND公司的開發(fā)軟件一直被人們稱道,這是因?yàn)椋鼮槲覀兲峁┝烁鞣N各樣的組件,可以說,我們只要半天時(shí)間就可以用BOLAND公司的軟件輕松做出功能強(qiáng)大的軟件。包括C和JAVA BUILDER。
VB并不是語言,我把它單獨(dú)列出來,只是說,我們可以單獨(dú)學(xué)習(xí)它來制作軟件。事實(shí)上,不少的游戲都由它開發(fā),可見它的功能比想象中強(qiáng)大。還有一點(diǎn),它和BORLAND公司的開發(fā)軟件真是太像了,它給大家提供了很多基于WINDOWS的組件,可以超快開發(fā)軟件。如果是學(xué)習(xí)網(wǎng)絡(luò)編程,你可以選擇ASP或者PHP,也或者JSP。ASP(NET)的特點(diǎn)是,它出自微軟的VB,用VBscript腳本以及VB(DLL)的ActiveX組件構(gòu)成。它需要運(yùn)行在安裝了IIS的WINDOWS服務(wù)器上。ASP(NET)站點(diǎn)的最大好處在于,可以在任何可以顯示的瀏覽器上正常動作,所有的腳本代碼運(yùn)行和數(shù)據(jù)處理都在IIS服務(wù)器上完成,我們不必?fù)?dān)心客戶端是否支持的問題。另外,ASP源碼不會傳到客戶端,某種意義上可以防止別人看到你的代碼。學(xué)習(xí)ASP,你還得慢慢學(xué)習(xí)ActiveX組件,有的人可能會感到驚訝,比如數(shù)據(jù)庫連接或者分頁功能,在ASP看來,實(shí)現(xiàn)這些東西真是太過簡單了。也有的人會搞不明白,為什么語法里沒有這些東西,ASP上卻有這些,事實(shí)上,朋友,ASP支持DLL組件,也就是說,只要你是編程高手,你可以用其他的開發(fā)軟件,比如VB,為你的ASP自創(chuàng)組件。
組件很像編程中的類庫,一般來說,我們不必去細(xì)驗(yàn)它們是什么,又怎么工作,我們只要去運(yùn)用它就行。現(xiàn)在的情況就是,各種語言都有第三方的支持,也就是組件和插件,你可以從別的公司或者網(wǎng)上獲取,這樣的好處在于,你不必自己編寫更多的東西,卻能夠用別人的成就完成各種工作。比如上傳文件和下載等等。
好了,關(guān)于怎么做組件什么的,你可以學(xué)習(xí)編程。但如果是聰明人,你不會這么做,因?yàn)槟銢]有時(shí)間和精力學(xué)太多。要知道,你要吃飯,最多是自己種地買碗筷,你用不著自己造碗筷,更用不著去管什么桌子凳子。只要你會工作,用錢就能搞定一切。編程也是這樣,你只要會用就行,除非你真把自己當(dāng)博士,也或者,你還真想什么都弄精,那不成了神精,或者當(dāng)神仙或者機(jī)器去吧,凡人是沒那本事了,你不過幾十年的光陰可以用耶。
學(xué)習(xí)就是學(xué)習(xí)精要,而不是概要;學(xué)習(xí)更不是全面,而是專業(yè)。八十年代出生的人大多受了蒙蔽,人人只知道當(dāng)科學(xué)家或者天才,也或者都想做事完美。告訴你,完美過氣,要完美的,回家種地去吧。
關(guān)于PHP和JSP,我個人不是很懂,所以,我不會過多提及。
另外,學(xué)習(xí)網(wǎng)絡(luò)編程的朋友,你得選去學(xué)習(xí)一下XHTML標(biāo)準(zhǔn),你也要按照這個標(biāo)準(zhǔn)行事。你也不要只學(xué)會用網(wǎng)格做網(wǎng)頁,要知道,現(xiàn)在大多數(shù)情況下在拋棄它了,我們用CSS實(shí)現(xiàn)更多功能。
學(xué)習(xí)是一步步來的,現(xiàn)在,你只管學(xué)習(xí)語法,在后面,我會提示你怎么做的,每一步,我都有介紹。
另外,不知道有人是不是誤會我的意思了,網(wǎng)絡(luò)編程,可從來沒有說,像HTML或者網(wǎng)頁設(shè)計(jì)屬于這個范疇。所以,連HTML都不懂的,先回去學(xué)習(xí)網(wǎng)頁制作和設(shè)計(jì)吧。當(dāng)然,沒必要還學(xué)什么FLASH,你又不當(dāng)美工。當(dāng)美工的,還是不要學(xué)網(wǎng)編的好,學(xué)得多了,小心你什么都不精。告訴你,專一才能研究直到精通。
二、數(shù)據(jù)類型,變量,常量,數(shù)組
數(shù)據(jù)類型是最為基礎(chǔ)的語法,每種語言都有相似或者相同的數(shù)據(jù)類型。我們應(yīng)該理解什么是數(shù)據(jù)類型,也就是學(xué)習(xí)和記住所學(xué)的語言里包含哪些數(shù)據(jù)類型。從某種意義上說,數(shù)據(jù)類型屬于簡單的類。
每種語言的數(shù)據(jù)類型有所不同,你只需記住自己學(xué)習(xí)的語言的類型定義就行了。通用的基礎(chǔ)常用數(shù)據(jù)類型有字節(jié)型、整型、字符型、浮點(diǎn)型、雙精度型、布爾型。當(dāng)然,數(shù)據(jù)類型還有更多。
其中的C、C++里面,有些類型在不同的系統(tǒng)里有不同的范圍,比如在32位和64位系統(tǒng)里,有2字節(jié)和4字節(jié)長度范圍區(qū)分。
變量和常量,還有數(shù)組,各種語言都基本相同,你只用記住如何聲明和初始化。另外,你得養(yǎng)成先聲明再初始化的習(xí)慣,這符合更多語言的變量聲明語法,也更為標(biāo)準(zhǔn),不易出錯。另外,變量的聲明要符合標(biāo)準(zhǔn),不能用關(guān)鍵字做變量名,一般來講,變量只能以字母開頭,還只能是字母、數(shù)字和下劃線構(gòu)成。有的語言區(qū)分大小寫,千萬注意這個問題。
另外,變量還有局部和全局之分,你得搞清楚什么時(shí)候?qū)儆谑裁搭愋汀>植孔兞恐粫植看嬖冢械恼Z言在某些范圍內(nèi)不能有重復(fù)相同的變量和局部變量,但有的語言卻可以。我們要理解什么是數(shù)組,特別是多維數(shù)組。還有一點(diǎn),數(shù)組的超始是零,認(rèn)識到這一點(diǎn)是非常重要的。最后,字符串屬于特殊的數(shù)組。
三、運(yùn)算符
計(jì)算機(jī)語言的初衷就是用來計(jì)算,自然要有運(yùn)算符。
最常見常用的自然是算術(shù)運(yùn)算符,加減乘除。在這里,我們要記住遞增遞減,賦值運(yùn)算,還有模運(yùn)算。
位運(yùn)算符:或,與,非,異或,各種位移。
位邏輯運(yùn)算符:按位或,按位與,按位非,按位異或,關(guān)系運(yùn)算符:大于,小于,等于,不等于,大于等于,小于等于
布爾邏輯運(yùn)算符:邏輯或,邏輯非,異或,相等,不相等,三元運(yùn)算符
賦值運(yùn)算符:注意有的語言= 和==的區(qū)別
之后是運(yùn)算符的優(yōu)先級,我們可以用各種括號控制優(yōu)先級,其實(shí)這和數(shù)字上的運(yùn)算很相似。
四、程序控制語句
程序控制語句用于判斷和跳轉(zhuǎn),其中最常見的有以下幾種。
條件語句:if-else-if 在這里,有幾種不同變化,大體相同
Switch(){case…break….default}
循環(huán)語句:do...while while {} for(;;)
跳轉(zhuǎn)語句:Goto break continue return
五、其他。
在這里,我不再過多舉例,其實(shí),這里有最重要的東西沒有講,比如類,函數(shù),繼承,指針,異常處理,多態(tài),多線程。這中間還有構(gòu)造函數(shù),解析函數(shù)等等。這些可以說是語法中的重點(diǎn)和難點(diǎn),所有語言之所以成語言,也就是它們有著這些特性。
大概,你已經(jīng)看完了幾個章節(jié)內(nèi)容。現(xiàn)在,你已經(jīng)對編程有了基礎(chǔ)認(rèn)識。好了,你在這個時(shí)候,可以找兩本簡單事例的書籍了,你可以一邊學(xué)習(xí)一邊寫程序。
是的,如果可以,你應(yīng)該用記事本這樣的工具來編程。當(dāng)然,要在自己的電腦上運(yùn)行你的程序還得安裝好相應(yīng)的軟件,比如ASP(NET)的IIS,ASP.net 還得安裝.net,JAVA的JDK,至于C語言,你可以安裝VC,也或者C++BUILDER,這個時(shí)候,你就要學(xué)習(xí)如何配置自己的電腦并且如何運(yùn)行這些程序。
千萬不要被相應(yīng)的軟件嚇住,是的,每種軟件開發(fā)工具比你想象中還要復(fù)雜,告訴你,它們比看起來還可怕。不過,那只是現(xiàn)在的情況下,不用擔(dān)心,總有一天,你能夠輕易運(yùn)用它們,到時(shí)候,不是它嚇你,而是你嚇?biāo)恕?/p>
你應(yīng)該做的范例只是用來顯示或者計(jì)算,如果是網(wǎng)絡(luò)編程,你應(yīng)該提前學(xué)習(xí)一下網(wǎng)絡(luò)設(shè)計(jì)軟件,像Dreamweaver。
(好了,今天就到這里,我想,下次再繼續(xù)吧。歡迎到我的網(wǎng)站交流)
本文由整理。