我并非专业出身,学电气才1年,后由于兴趣和形势逼迫才啃PLC,到现在总共才三年,虽然底子薄点,但一个月有三四个工程的工作量,实践机会很多. 在这里我不敢谈经验, 只是就我个人在这段时间走的弯路与大家分享.新人以为鉴:# |5 N4 u7 A' [9 T+ i Q+ e
: {8 D4 P+ U3 [4 u& z' O- [0 u7 w6 P$ j' i) p4 N5 L' a' \& m/ c \/ w
1 接到工程的开始不要忙于设计图纸,应该多和机械设计人员多交流,还有设备调试人员,拿到设备运行的第一手资料,记住,你要最了解设备,包括生产出产品的工艺.: g6 H* q4 z: p; D: s
) ~( R2 [, R% J: u$ s. z: w, u
8 x `* {4 O8 \: L, A0 Q5 B5 S2 绘制流程图,这个图纸只为自己使用,所以不用太规范,图中应包括设备的运行过程,标注注意事项,对设备应有总体规划.. Y8 R2 p" ~# M/ N* y
5 d; S. ]. p% A2 N& ^* [ R$ r7 f2 w
3 用IO表格定义输入输出.
1 ^# g7 N; c8 p# {2 `+ E: k
5 W# H5 H7 V/ A: [1 c" m
a$ N1 G3 t5 v输出:a.同一电压等级的尽量靠近 b.不同频率的应单独划分.以上两点便于配盘和现场抗干扰的方便. c.程序上顺承关系的输出应尽量靠近以方便编程 d.留出10%的空点做备用(我是做非标产品的,临时该设备是常事,定型产品则不用)( a; O+ C1 {4 |
+ ~: j3 I E) |& W& [/ A
输入:a.根据设备程序工艺分配触摸屏输入和控制板输入,控制板输入点定义时应注意预留一个备用按钮.
7 s+ G+ _2 `( N9 ]4 r; Y& u/ q* S5 v4 V1 Q
编制变量表:变量表的编制应合理规划:最失败的程序往往用到一个变量就随便用.对于与外设有关联的变量应保持连续并把只读,只写,读写型的合理分开,同一类型的变量靠近.这样有利于通讯的速度和程序的阅读.' O4 X' d Q; y4 ~ o
6 C% m6 T0 y% @& o6 x; |
6 A/ l8 K# ]- _; n, Q% H. |
4 出图:这个比较烦琐.除了电气图,还应有安装图.一定要规范配盘.不然将来等你拿到控制盘时发现要改的太多.基础图,将基础图中附加电气要求(其实主要是接地要求)0 ^$ u( i" ^: h `% h8 o( K+ v
2 d( |7 t- q. a! j9 L& x! W: c( \3 u* B
/ _- E8 \8 F& j5 z9 k) Q8 g) ]5 编程:我建议主程序不要写控制,而只有子程序的调用.子程序应分类,初始化\手动\单循环\自动多循环\全局中间控制的\运算的\报警的\复位程序,注意控制类程序转换时的复位.尽量的简化.+ a' \/ } s0 L' _6 z, ?
3 b5 C8 o6 _! f6 o8 F! M% s2 ~$ p \
6 y5 q. ?! S. F8 S4 n+ P1 g
0 t- | j# N* T% i6 d- f7 D" A% N. O就编程而言,其实是整个系统的实现部分。- P; K" j( v: I6 J4 B
6 g. b4 s8 d4 F% p9 _
5 X7 S% P9 v) U" I到此时,工程已经完成70%了,所以程序只占系统的20%(其余10%是编制使用说明书、验收材料等用户文件),但也是最费我们氧气的环节,说到缺氧说点题外的,最近我正在编一台设备其中包括4模入、1模出、变频、3个HSC,定完程序框架一看,共用了10个子程序、11个中断,呵呵。回来说程序,我发现本必威APP精装版下载大多提到的是指令的应用,其实程序的定义很广,不是语句严谨就是好程序,还要结构合理、系统化、易移植性、易扩展性、安全性及冗余等等。
: {9 a! B0 y( Q& ?0 q* L9 u6 y1 Z$ M0 _$ i4 |$ n. I6 F2 {8 l0 A' R
# U6 p7 v2 Q4 C/ ^4 q# [1、 程序结构很重要,便于别人阅读,把程序开发人员的思路清楚的展现给他人,编程中避免数据的交叉、语句的跳转,此处并不是说JUMP语句,而是顺序分布,不要编程序网,很多人(包括自己)会被网套住,要编成程序链,让别人读程序时有如扶着钢锁过桥的感觉。这也是我为什么喜欢用T型图而不喜欢用语句,实践证明用语句比T型图出逻辑错误的几率高。& Z& }2 a8 d/ r0 S: l6 O
0 P1 g% F v' o: S8 Q0 Q) K# a8 K3 P1 a5 G' A8 J: L
2 h- P1 W# z- y2 Q* U9 F2、 程序的系统化,把程序按功能划分,即“块”的理念,把一台复杂的设备分成若干个块,每个块独立实现其功能,孙子说过,敌人强大,我设法把他分散开,再逐一击破。我从来不在主程序里写指令,全是调用,程序的树型结构在很多年前就被人认可,树干有若干分枝,枝上再分杈,如果你看见主树干上长满树叶和果实会不会觉得心堵?$ `* u! u$ @& ~, @# p
0 |4 U; y t2 T& x- ~
/ }3 o, \2 X) j, z' l% j) O, v2 N( P+ Z+ ]
5 s# \# D6 L; t3 N9 O
3、 移植和扩展,如果你搞过PC编程,这两个词肯定不生,移植是为了其它相同功能程序的调用,建议大家多做点库,扩展性是为了设备有可能发生的二次改造或与其它设备的合作(并非通讯)而预先考虑的预留,当然扩展性更适合我们这些做非标产品的,手指有点麻了。+ d3 t4 d5 A$ N1 T; C1 z
9 q+ G9 r0 S2 ?( R( d6 k+ q/ P; L+ _$ Y3 w
$ x9 a+ _ z/ x. T; F: g
4、 安全性和冗余应该放在一起说,安全性即稳定性,好的系统不仅仅是处理复杂的运行和运算,首要是安全稳定,能处理突发事故,和避免事故扩大,这里我说说“千万不要用STOP指令”,停机后,你连事故都处理不了了,再上电可能就会扩大事故。当然小设备除外,我知道STOP的唯一用途就是,别人不给你设备款,就在他用了一段时间后STOP他的设备,呵呵。冗余,好象300或400有,我没用过,我这里说的冗余是指软件冗余程序,并不是硬件的,在不影响系统性能的情况下,系统中的冗余程序应占总程序的50%~75%左右,当然这也和系统的复杂程度有关,我个人认为冗余程序的定义是:在非正常工作情况下运行,旨在发现处理故障及其它非正常状况或数据的程序。没有冗余就谈不到完整。0 c Y- C- |; b3 Y9 y8 @* E
/ `* B& Q+ j, r$ x# W, F5 W3 V* S1 c
0 T4 k4 j* j' \" e' ?- S6 a
再深白话就是系统的自检测、自诊断、容错性和拟人模仿性了,下回和大家白话。; p4 X) h* M0 [7 m1 Y# }' F
( c& _' z2 ~3 Z/ r6 O
; N2 \2 R7 B! Z F
总之,如果你把面前的一堆废铁变成一个机器人,赋予他眼耳鼻舌口手及思想和灵魂,你会发现你就是造物主,生命在你指尖诞生。
6 ]' n8 }8 I8 \& e: N |