|
我并非專業(yè)出身,學(xué)電氣才1年,后由于興趣和形勢逼迫才啃PLC,到現(xiàn)在總共才三年,雖然底子薄點,但一個月有三四個工程的工作量,實踐機會很多. 在這里我不敢談經(jīng)驗, 只是就我個人在這段時間走的彎路與大家分享.新人以為鑒:( E2 g7 _) \# Y, L
; d4 n% |1 l8 Y8 s0 B8 \
9 J& v2 [% W& {
1 接到工程的開始不要忙于設(shè)計圖紙,應(yīng)該多和機械設(shè)計人員多交流,還有設(shè)備調(diào)試人員,拿到設(shè)備運行的第一手資料,記住,你要最了解設(shè)備,包括生產(chǎn)出產(chǎn)品的工藝.
1 ~3 Z) S2 G! @
, O3 o7 u ]: {8 M6 e: ~7 l
! D8 `! J. |& M# [4 b, w( Q6 R+ y2 繪制流程圖,這個圖紙只為自己使用,所以不用太規(guī)范,圖中應(yīng)包括設(shè)備的運行過程,標(biāo)注注意事項,對設(shè)備應(yīng)有總體規(guī)劃.; e* t" P" u" m4 d9 r( \; M
! x& Q& d: l5 K8 h$ m
6 w6 j' u1 A; M* w# G
3 用IO表格定義輸入輸出.
/ a, C' Z$ a8 T, h3 C. a% L9 w6 L
8 e: `' `. ]! I/ x' K/ m$ q8 ?8 n+ \7 |8 R; j
輸出:a.同一電壓等級的盡量靠近 b.不同頻率的應(yīng)單獨劃分.以上兩點便于配盤和現(xiàn)場抗干擾的方便. c.程序上順承關(guān)系的輸出應(yīng)盡量靠近以方便編程 d.留出10%的空點做備用(我是做非標(biāo)產(chǎn)品的,臨時該設(shè)備是常事,定型產(chǎn)品則不用)
5 T7 L T# A/ R% b2 A# h6 b% @
輸入:a.根據(jù)設(shè)備程序工藝分配觸摸屏輸入和控制板輸入,控制板輸入點定義時應(yīng)注意預(yù)留一個備用按鈕./ s2 H1 _0 {/ \7 I
7 H2 A3 M! O* y/ Q+ m0 X編制變量表:變量表的編制應(yīng)合理規(guī)劃:最失敗的程序往往用到一個變量就隨便用.對于與外設(shè)有關(guān)聯(lián)的變量應(yīng)保持連續(xù)并把只讀,只寫,讀寫型的合理分開,同一類型的變量靠近.這樣有利于通訊的速度和程序的閱讀.6 x8 P; D1 D- o- H- u& g! |' j
% y2 B/ m: N2 R3 H! Q, Z; ]
( a& o# C/ W9 a! Y7 m+ N! f
4 出圖:這個比較煩瑣.除了電氣圖,還應(yīng)有安裝圖.一定要規(guī)范配盤.不然將來等你拿到控制盤時發(fā)現(xiàn)要改的太多.基礎(chǔ)圖,將基礎(chǔ)圖中附加電氣要求(其實主要是接地要求)
# x9 I3 {4 V& D/ {9 V. ?$ T% S; z f- K+ L0 | p+ |; Q" ^
, }7 q$ ?$ w# R3 h$ u( C
5 編程:我建議主程序不要寫控制,而只有子程序的調(diào)用.子程序應(yīng)分類,初始化\手動\單循環(huán)\自動多循環(huán)\全局中間控制的\運算的\報警的\復(fù)位程序,注意控制類程序轉(zhuǎn)換時的復(fù)位.盡量的簡化.
, P8 r, X9 w* x, e+ O7 H# r q5 X! b, o$ x" {& l- S6 j; ]) ^
( X( t J0 v* e5 a
! n2 B$ ~- h' P1 n {8 p* [0 D$ v就編程而言,其實是整個系統(tǒng)的實現(xiàn)部分,。+ }& M5 t8 A9 h- P1 d- i8 ^
& e5 y9 C1 K% F3 P
( z" J0 V7 _. Z' [; `; y" V到此時,,工程已經(jīng)完成70%了,所以程序只占系統(tǒng)的20%(其余10%是編制使用說明書,、驗收材料等用戶文件),,但也是最費我們氧氣的環(huán)節(jié),,說到缺氧說點題外的,最近我正在編一臺設(shè)備其中包括4模入,、1模出,、變頻、3個HSC,,定完程序框架一看,,共用了10個子程序、11個中斷,,呵呵,。回來說程序,,我發(fā)現(xiàn)本論壇大多提到的是指令的應(yīng)用,,其實程序的定義很廣,不是語句嚴(yán)謹(jǐn)就是好程序,,還要結(jié)構(gòu)合理,、系統(tǒng)化、易移植性,、易擴展性,、安全性及冗余等等。
# ] N r. m7 |
( \0 A) I, ?- L5 C3 }. k
, C) K7 j W5 B* b8 _5 J1,、 程序結(jié)構(gòu)很重要,,便于別人閱讀,把程序開發(fā)人員的思路清楚的展現(xiàn)給他人,,編程中避免數(shù)據(jù)的交叉,、語句的跳轉(zhuǎn),此處并不是說JUMP語句,,而是順序分布,不要編程序網(wǎng),,很多人(包括自己)會被網(wǎng)套住,,要編成程序鏈,讓別人讀程序時有如扶著鋼鎖過橋的感覺,。這也是我為什么喜歡用T型圖而不喜歡用語句,,實踐證明用語句比T型圖出邏輯錯誤的幾率高。$ h& x' x6 Q# ?$ `( \
U+ k3 a8 p! w
. T$ d9 G6 \: u1 ^# p
0 q1 U; ?. t% Z! A$ ]& {& C0 G1 P2,、 程序的系統(tǒng)化,,把程序按功能劃分,即“塊”的理念,,把一臺復(fù)雜的設(shè)備分成若干個塊,,每個塊獨立實現(xiàn)其功能,,孫子說過,敵人強大,,我設(shè)法把他分散開,,再逐一擊破。我從來不在主程序里寫指令,,全是調(diào)用,,程序的樹型結(jié)構(gòu)在很多年前就被人認(rèn)可,樹干有若干分枝,,枝上再分杈,,如果你看見主樹干上長滿樹葉和果實會不會覺得心堵?2 o: J9 A2 g M$ N7 j* X9 m3 T
0 F6 F: H6 i$ k$ b
* k6 _) F6 R3 ^& w9 ]# L4 O$ ~" ~ _7 o/ [% q
6 w# T' Y) G: e& H0 a3 K' Q
3,、 移植和擴展,,如果你搞過PC編程,這兩個詞肯定不生,,移植是為了其它相同功能程序的調(diào)用,,建議大家多做點庫,擴展性是為了設(shè)備有可能發(fā)生的二次改造或與其它設(shè)備的合作(并非通訊)而預(yù)先考慮的預(yù)留,,當(dāng)然擴展性更適合我們這些做非標(biāo)產(chǎn)品的,,手指有點麻了。8 e9 s$ X9 a) y' k( [# v
; E+ h- q0 K& f0 y( j: F: }" d0 K& N0 I
8 z5 J0 D% y* C+ M- Y8 O+ p
4,、 安全性和冗余應(yīng)該放在一起說,,安全性即穩(wěn)定性,好的系統(tǒng)不僅僅是處理復(fù)雜的運行和運算,,首要是安全穩(wěn)定,,能處理突發(fā)事故,和避免事故擴大,,這里我說說“千萬不要用STOP指令”,,停機后,你連事故都處理不了了,,再上電可能就會擴大事故,。當(dāng)然小設(shè)備除外,我知道STOP的唯一用途就是,,別人不給你設(shè)備款,,就在他用了一段時間后STOP他的設(shè)備,呵呵,。冗余,,好象300或400有,我沒用過,,我這里說的冗余是指軟件冗余程序,,并不是硬件的,,在不影響系統(tǒng)性能的情況下,系統(tǒng)中的冗余程序應(yīng)占總程序的50%~75%左右,,當(dāng)然這也和系統(tǒng)的復(fù)雜程度有關(guān),,我個人認(rèn)為冗余程序的定義是:在非正常工作情況下運行,旨在發(fā)現(xiàn)處理故障及其它非正常狀況或數(shù)據(jù)的程序,。沒有冗余就談不到完整,。
$ C; ^- y/ {8 H/ a" w: H( \; U$ F4 F# R% k; E# m
5 L& I. v2 J9 [( h; b+ G再深白話就是系統(tǒng)的自檢測、自診斷,、容錯性和擬人模仿性了,,下回和大家白話。4 b: R1 P) I q: ]4 L) c
9 W9 U# G: F4 v5 U! [7 U9 q
; J' d8 Z# }7 X
總之,,如果你把面前的一堆廢鐵變成一個機器人,,賦予他眼耳鼻舌口手及思想和靈魂,你會發(fā)現(xiàn)你就是造物主,,生命在你指尖誕生,。/ C, D- ?; y y: \2 M! @" w
|
|