我并非專業(yè)出身,學電氣才1年,后由于興趣和形勢逼迫才啃PLC,到現(xiàn)在總共才三年,雖然底子薄點,但一個月有三四個工程的工作量,實踐機會很多. 在這里我不敢談經驗, 只是就我個人在這段時間走的彎路與大家分享.新人以為鑒:- ]" b' h; Y: m5 T
7 k' ]% h" B% q+ G4 L
% R+ t# c1 {* T1 接到工程的開始不要忙于設計圖紙,應該多和機械設計人員多交流,還有設備調試人員,拿到設備運行的第一手資料,記住,你要最了解設備,包括生產出產品的工藝.- c0 K* x2 ~$ b$ |, ?2 L' E# q# O2 M
d) {4 ~/ Q9 d2 ^
5 B' W1 f/ M P
2 繪制流程圖,這個圖紙只為自己使用,所以不用太規(guī)范,圖中應包括設備的運行過程,標注注意事項,對設備應有總體規(guī)劃." Y* p* c3 z- a+ J' j2 z
$ G4 p% {5 r) a1 p0 P% E$ }7 |
9 d4 a$ X) g# ^. D: P3 用IO表格定義輸入輸出.+ w* }( f8 z# i& ^. R6 ?. f" m
; R: }) g: o) }) m# a2 [6 a2 ]1 `3 s9 J* j# G7 L
輸出:a.同一電壓等級的盡量靠近 b.不同頻率的應單獨劃分.以上兩點便于配盤和現(xiàn)場抗干擾的方便. c.程序上順承關系的輸出應盡量靠近以方便編程 d.留出10%的空點做備用(我是做非標產品的,臨時該設備是常事,定型產品則不用)
0 F* }1 N. h$ |! g; o* Z! Z1 [" }3 `5 H& _3 B' l; B( e
輸入:a.根據設備程序工藝分配觸摸屏輸入和控制板輸入,控制板輸入點定義時應注意預留一個備用按鈕.7 c9 ?5 f' @6 Z: q& F$ ?% o
3 [9 I& G0 P" h
編制變量表:變量表的編制應合理規(guī)劃:最失敗的程序往往用到一個變量就隨便用.對于與外設有關聯(lián)的變量應保持連續(xù)并把只讀,只寫,讀寫型的合理分開,同一類型的變量靠近.這樣有利于通訊的速度和程序的閱讀.
! a6 T. T. G; Q- t1 ]
- C2 p. H/ m( q J3 V8 O+ d$ M* ^ ~2 }2 h# C# i
4 出圖:這個比較煩瑣.除了電氣圖,還應有安裝圖.一定要規(guī)范配盤.不然將來等你拿到控制盤時發(fā)現(xiàn)要改的太多.基礎圖,將基礎圖中附加電氣要求(其實主要是接地要求)1 d5 a9 _; J/ ^) p$ d1 J! b! `# c
* W8 C1 z- C% w8 V& g" Q
z7 D- S+ m5 _# |
5 編程:我建議主程序不要寫控制,而只有子程序的調用.子程序應分類,初始化\手動\單循環(huán)\自動多循環(huán)\全局中間控制的\運算的\報警的\復位程序,注意控制類程序轉換時的復位.盡量的簡化.
" T' Y' H9 Y( A- H
4 N& I- W6 o' v1 K8 P. \. g
& `/ x7 a; U3 Q8 l6 h2 P" b! h+ X( O1 ]3 O: N7 z% w
就編程而言,其實是整個系統(tǒng)的實現(xiàn)部分。
( R6 e# J# X0 a! _7 j
2 d: [/ x6 R7 ~8 s& E" L% w+ |( C3 R$ a! f, \' ^
到此時,工程已經完成70%了,所以程序只占系統(tǒng)的20%(其余10%是編制使用說明書、驗收材料等用戶文件),但也是最費我們氧氣的環(huán)節(jié),說到缺氧說點題外的,最近我正在編一臺設備其中包括4模入、1模出、變頻、3個HSC,定完程序框架一看,共用了10個子程序、11個中斷,呵呵。回來說程序,我發(fā)現(xiàn)本論壇大多提到的是指令的應用,其實程序的定義很廣,不是語句嚴謹就是好程序,還要結構合理、系統(tǒng)化、易移植性、易擴展性、安全性及冗余等等。, `9 H6 r% O. P- S+ }6 {, x$ k" d
5 s! z! _: j0 Y v5 Y1 A8 `0 E. n9 K- q* Q" j
1、 程序結構很重要,便于別人閱讀,把程序開發(fā)人員的思路清楚的展現(xiàn)給他人,編程中避免數(shù)據的交叉、語句的跳轉,此處并不是說JUMP語句,而是順序分布,不要編程序網,很多人(包括自己)會被網套住,要編成程序鏈,讓別人讀程序時有如扶著鋼鎖過橋的感覺。這也是我為什么喜歡用T型圖而不喜歡用語句,實踐證明用語句比T型圖出邏輯錯誤的幾率高。
: n. ^$ T7 o3 I2 C$ @+ N8 L9 M9 g4 g' {
$ E* s# U+ j# F2 h" x1 B; U, |& G9 q0 }. w0 N
2、 程序的系統(tǒng)化,把程序按功能劃分,即“塊”的理念,把一臺復雜的設備分成若干個塊,每個塊獨立實現(xiàn)其功能,孫子說過,敵人強大,我設法把他分散開,再逐一擊破。我從來不在主程序里寫指令,全是調用,程序的樹型結構在很多年前就被人認可,樹干有若干分枝,枝上再分杈,如果你看見主樹干上長滿樹葉和果實會不會覺得心堵?4 d8 l# w/ P6 H7 o2 [
, h5 f7 K: {( f, ?" Y1 Y, b( d
4 I' V8 Z! d; s# P6 D! y
4 D" M# M4 \& _! ^3 B. E* L3 [4 d9 y
3、 移植和擴展,如果你搞過PC編程,這兩個詞肯定不生,移植是為了其它相同功能程序的調用,建議大家多做點庫,擴展性是為了設備有可能發(fā)生的二次改造或與其它設備的合作(并非通訊)而預先考慮的預留,當然擴展性更適合我們這些做非標產品的,手指有點麻了。
- W( Q. }7 B. [# F, j) H2 X5 Q: N! C2 r2 U; o- N0 x/ K
c7 o2 I4 a4 `8 u
* c1 R3 W1 M. J5 K. X4、 安全性和冗余應該放在一起說,安全性即穩(wěn)定性,好的系統(tǒng)不僅僅是處理復雜的運行和運算,首要是安全穩(wěn)定,能處理突發(fā)事故,和避免事故擴大,這里我說說“千萬不要用STOP指令”,停機后,你連事故都處理不了了,再上電可能就會擴大事故。當然小設備除外,我知道STOP的唯一用途就是,別人不給你設備款,就在他用了一段時間后STOP他的設備,呵呵。冗余,好象300或400有,我沒用過,我這里說的冗余是指軟件冗余程序,并不是硬件的,在不影響系統(tǒng)性能的情況下,系統(tǒng)中的冗余程序應占總程序的50%~75%左右,當然這也和系統(tǒng)的復雜程度有關,我個人認為冗余程序的定義是:在非正常工作情況下運行,旨在發(fā)現(xiàn)處理故障及其它非正常狀況或數(shù)據的程序。沒有冗余就談不到完整。 k& J$ K/ ^" o/ q7 R, q
2 \$ o/ y2 Q7 m5 p# [! c
% x& K# A: h7 v5 w4 C+ k
再深白話就是系統(tǒng)的自檢測、自診斷、容錯性和擬人模仿性了,下回和大家白話。
) W8 }# N6 ?1 Z) j3 [4 G% j
! `* U5 n. c/ X5 S; G" z9 h2 e1 O
6 x8 D& U: k; E7 e總之,如果你把面前的一堆廢鐵變成一個機器人,賦予他眼耳鼻舌口手及思想和靈魂,你會發(fā)現(xiàn)你就是造物主,生命在你指尖誕生。! m* Q+ K. q) Y p3 @; L5 _
|