|
我并非專業(yè)出身,學(xué)電氣才1年,后由于興趣和形勢(shì)逼迫才啃PLC,到現(xiàn)在總共才三年,雖然底子薄點(diǎn),但一個(gè)月有三四個(gè)工程的工作量,實(shí)踐機(jī)會(huì)很多. 在這里我不敢談經(jīng)驗(yàn), 只是就我個(gè)人在這段時(shí)間走的彎路與大家分享.新人以為鑒:
+ C _8 c: z$ V4 a" P+ ~5 {6 Z) {2 [ x: o
7 T# s1 b! D, d z4 c" c. V! s' {! `2 {0 k
1 接到工程的開始不要忙于設(shè)計(jì)圖紙,應(yīng)該多和機(jī)械設(shè)計(jì)人員多交流,還有設(shè)備調(diào)試人員,拿到設(shè)備運(yùn)行的第一手資料,記住,你要最了解設(shè)備,包括生產(chǎn)出產(chǎn)品的工藝.& g8 J$ }3 R+ q3 H! q& Z
% H4 d4 @# m% p2 z5 P' j1 S
$ b( i: Q4 N* [. b: v1 r5 U: ?2 繪制流程圖,這個(gè)圖紙只為自己使用,所以不用太規(guī)范,圖中應(yīng)包括設(shè)備的運(yùn)行過程,標(biāo)注注意事項(xiàng),對(duì)設(shè)備應(yīng)有總體規(guī)劃.- x" Z% Z0 E5 l
0 C- j) l- y6 C. b: c% ~
: G" q( i8 f! f( N# g8 y
3 用IO表格定義輸入輸出., }- @( N! r, F( U
* f2 _, ] m4 n3 |+ X3 T
* o7 T" @( V8 v" e/ b輸出:a.同一電壓等級(jí)的盡量靠近 b.不同頻率的應(yīng)單獨(dú)劃分.以上兩點(diǎn)便于配盤和現(xiàn)場(chǎng)抗干擾的方便. c.程序上順承關(guān)系的輸出應(yīng)盡量靠近以方便編程 d.留出10%的空點(diǎn)做備用(我是做非標(biāo)產(chǎn)品的,臨時(shí)該設(shè)備是常事,定型產(chǎn)品則不用)2 p) E+ V1 |, u& `1 ^ z
* ?7 V2 o& S" R; m3 L: D) C& _
輸入:a.根據(jù)設(shè)備程序工藝分配觸摸屏輸入和控制板輸入,控制板輸入點(diǎn)定義時(shí)應(yīng)注意預(yù)留一個(gè)備用按鈕.5 a# D0 V) p' h- ]3 i$ W" d
# D! m0 o ]2 }7 t6 I6 q' k7 j編制變量表:變量表的編制應(yīng)合理規(guī)劃:最失敗的程序往往用到一個(gè)變量就隨便用.對(duì)于與外設(shè)有關(guān)聯(lián)的變量應(yīng)保持連續(xù)并把只讀,只寫,讀寫型的合理分開,同一類型的變量靠近.這樣有利于通訊的速度和程序的閱讀.7 A3 W1 P' T' o3 }
: F9 S3 H* |% v* G) H& _* c7 W' i0 P2 i: X* W0 _
4 出圖:這個(gè)比較煩瑣.除了電氣圖,還應(yīng)有安裝圖.一定要規(guī)范配盤.不然將來等你拿到控制盤時(shí)發(fā)現(xiàn)要改的太多.基礎(chǔ)圖,將基礎(chǔ)圖中附加電氣要求(其實(shí)主要是接地要求)6 M# M5 d# V3 ^* v5 v; L; f
: _+ V3 y0 T% e2 L/ L5 R: {; [. r6 D; K
) e: a% d- }$ W; S4 B) y3 n! l5 編程:我建議主程序不要寫控制,而只有子程序的調(diào)用.子程序應(yīng)分類,初始化\手動(dòng)\單循環(huán)\自動(dòng)多循環(huán)\全局中間控制的\運(yùn)算的\報(bào)警的\復(fù)位程序,注意控制類程序轉(zhuǎn)換時(shí)的復(fù)位.盡量的簡(jiǎn)化.' U, P9 m) H- t+ v* S
, u9 ?6 i* u" D! G$ C. b
' C7 {. x2 q2 o# x$ v. B% G1 R$ q! U" A( l' w o
就編程而言,其實(shí)是整個(gè)系統(tǒng)的實(shí)現(xiàn)部分。
- N1 p: |. d @* Y' Y' x. K6 ~$ b
3 ~1 X* _" \# f4 p6 t( e) Y& H2 x6 n/ \8 M) [
到此時(shí),工程已經(jīng)完成70%了,所以程序只占系統(tǒng)的20%(其余10%是編制使用說明書、驗(yàn)收材料等用戶文件),但也是最費(fèi)我們氧氣的環(huán)節(jié),說到缺氧說點(diǎn)題外的,最近我正在編一臺(tái)設(shè)備其中包括4模入、1模出、變頻、3個(gè)HSC,定完程序框架一看,共用了10個(gè)子程序、11個(gè)中斷,呵呵;貋碚f程序,我發(fā)現(xiàn)本論壇大多提到的是指令的應(yīng)用,其實(shí)程序的定義很廣,不是語句嚴(yán)謹(jǐn)就是好程序,還要結(jié)構(gòu)合理、系統(tǒng)化、易移植性、易擴(kuò)展性、安全性及冗余等等。
6 H, @+ X( k6 ?6 `, o6 g% _2 U" m* Y! |. Y
7 k, B0 ^: D9 l2 S1、 程序結(jié)構(gòu)很重要,便于別人閱讀,把程序開發(fā)人員的思路清楚的展現(xiàn)給他人,編程中避免數(shù)據(jù)的交叉、語句的跳轉(zhuǎn),此處并不是說JUMP語句,而是順序分布,不要編程序網(wǎng),很多人(包括自己)會(huì)被網(wǎng)套住,要編成程序鏈,讓別人讀程序時(shí)有如扶著鋼鎖過橋的感覺。這也是我為什么喜歡用T型圖而不喜歡用語句,實(shí)踐證明用語句比T型圖出邏輯錯(cuò)誤的幾率高。( z+ d% h/ Z M5 [
! F% ~" X8 E8 e. t( C3 M
0 X' l$ r& s: D/ I" ]( k! W: B3 @! R- x6 g; O
2、 程序的系統(tǒng)化,把程序按功能劃分,即“塊”的理念,把一臺(tái)復(fù)雜的設(shè)備分成若干個(gè)塊,每個(gè)塊獨(dú)立實(shí)現(xiàn)其功能,孫子說過,敵人強(qiáng)大,我設(shè)法把他分散開,再逐一擊破。我從來不在主程序里寫指令,全是調(diào)用,程序的樹型結(jié)構(gòu)在很多年前就被人認(rèn)可,樹干有若干分枝,枝上再分杈,如果你看見主樹干上長(zhǎng)滿樹葉和果實(shí)會(huì)不會(huì)覺得心堵?
1 F- Q8 n0 m8 K6 g+ _# p) T/ q; _
) T$ F1 ? ]% n- |$ p
) W( T+ z1 p. j+ r0 Y% [' u' \
6 |* _$ z* j; b! y1 T B3、 移植和擴(kuò)展,如果你搞過PC編程,這兩個(gè)詞肯定不生,移植是為了其它相同功能程序的調(diào)用,建議大家多做點(diǎn)庫,擴(kuò)展性是為了設(shè)備有可能發(fā)生的二次改造或與其它設(shè)備的合作(并非通訊)而預(yù)先考慮的預(yù)留,當(dāng)然擴(kuò)展性更適合我們這些做非標(biāo)產(chǎn)品的,手指有點(diǎn)麻了。- [( U5 D+ `: y, q+ b4 Y
, y1 D1 j2 E: O/ e) J% z- B
4 Z/ J7 ?# }* h, M7 g
- S5 U8 }! M7 q ]
4、 安全性和冗余應(yīng)該放在一起說,安全性即穩(wěn)定性,好的系統(tǒng)不僅僅是處理復(fù)雜的運(yùn)行和運(yùn)算,首要是安全穩(wěn)定,能處理突發(fā)事故,和避免事故擴(kuò)大,這里我說說“千萬不要用STOP指令”,停機(jī)后,你連事故都處理不了了,再上電可能就會(huì)擴(kuò)大事故。當(dāng)然小設(shè)備除外,我知道STOP的唯一用途就是,別人不給你設(shè)備款,就在他用了一段時(shí)間后STOP他的設(shè)備,呵呵。冗余,好象300或400有,我沒用過,我這里說的冗余是指軟件冗余程序,并不是硬件的,在不影響系統(tǒng)性能的情況下,系統(tǒng)中的冗余程序應(yīng)占總程序的50%~75%左右,當(dāng)然這也和系統(tǒng)的復(fù)雜程度有關(guān),我個(gè)人認(rèn)為冗余程序的定義是:在非正常工作情況下運(yùn)行,旨在發(fā)現(xiàn)處理故障及其它非正常狀況或數(shù)據(jù)的程序。沒有冗余就談不到完整。" ]9 p( a. A# L" J
1 }+ D+ E9 m$ a+ O% R! M: g
. `( _ W% s7 n3 w9 c再深白話就是系統(tǒng)的自檢測(cè)、自診斷、容錯(cuò)性和擬人模仿性了,下回和大家白話。
$ w" B7 W- x& r- e3 ^3 F' g8 D' g3 z- t0 ~
' {' g% |/ I( v# q總之,如果你把面前的一堆廢鐵變成一個(gè)機(jī)器人,賦予他眼耳鼻舌口手及思想和靈魂,你會(huì)發(fā)現(xiàn)你就是造物主,生命在你指尖誕生。
M2 j& I1 U* t( W ] |
|