一、必备的前提条件
1、编程需要坚强的毅力和足够的耐心
人各有所长,
。有些人把编程看作一项冗长而枯燥的工作;有些人把编程看作一项趣味的智力游戏。如果你是前者,强烈建议你远离这份工作。毕竟编程工作是对人的毅力和耐心的挑战。我所在实验室中,很多学生看到我编程序就会惊讶于我面对这一堆堆符号所表现出的专注。其实,这是兴趣使然。兴趣使我具备了足够的毅力和耐心。经过无数次失败后,当看到一个个符号按我的思路整齐的排列,PLC按我的要求有条不紊的运行时,兴趣得到了极大的满足,如同打通了一个游戏的关口。所以,我告诉这些学生:你们看到的是一堆枯燥怪异的符号,我看到的却是一群热情奔放的舞者,而我则是她们的导演。
2、编程需要敢于实践的信心
我曾经教过一个学生学AutoCAD,我对她的唯一要求就是实践。我告诉她:你随便怎么操作,大不了一张图重画;最坏的结果是系统崩溃,没关系,系统重做,再来;只要电脑没被砸了,怎么都行。两年后,我再看到她做的CAD图纸,也自叹不如。
同样道理,只有不断地在PLC上运行这些指令,观察运行的结果,才能弄清PLC指令的作用。很多初学者对PLC一脸的迷茫,往往是出于一种畏惧,担心损坏设备。而这些畏惧是没有任何道理的。仔细的阅读手册是非常重要的,但是仅靠读书是成不了一个工程师的。更何况手册上的内容并非面面俱到。我在接触到那些不熟悉的指令时,喜欢单独编一个小程序,让PLC运行。然后逐个修改条件,观察运行的结果(MicroWin为用户提供了非常好的监控手段),反过来再重新理解手册的描述,这样就可以非常直观的理解这些指令的作用和使用方法。不必担心自己写的程序会有什么问题,会影响PLC的正常工作。程序有没有问题,只有让PLC运行了才能发现。而发现问题并解决问题就是对自己能力的提高。撇开硬件操作不谈,单就软件来说,我还真没有遇到过由于软件问题而损坏PLC的事。在这里不必担心继电器电路接错线可能造成的后果。所以,大胆的实践是PLC编程的必由之路。
当然,大胆实践并不是野蛮操作,而是必须遵循必要的规范。还有一个要注意的,在程序未经可靠性证实之前,千万不要挂接负载,以免造成不必要的损失。数字量的输出有LED显示;而模拟量处理可以采用一些硬件或软件模拟手段来解决。
3、编程需要有缜密的逻辑思维
编程本身就是一种逻辑思维过程。在高级语言中,使用最多的是if then else、select这些条件判别语句,这就是逻辑中的因果关系。PLC程序就是由这些因果关系组成的:判别条件是否成立,进而决定执行相应的指令。最初的PLC是用来替代继电器逻辑电路的,所以继承了继电器电路以触点作为触发条件的描述方式。在PLC中,以虚拟触点代替了继电器的金属触点,而继电器电路所表达的逻辑关系还是被完整的保留下来。即使引入了继电器电路难以胜任的数值处理过程,PLC从根本上还是在执行一个个因果关系。所以,理顺对象的各个事件之间的逻辑关系,是编程之前必须精心做好的准备工作。我在接到一项任务后,第一件事就是整理出一份逻辑关系图,与用户反复商讨,取得用户的认可,然后才真正进入程序的编写过程。
4、不可或缺的相关知识
PLC的程序是直接作用于对象的具体工艺过程,那么对对象具体工艺过程的理解是非常重要的的。我在与用户的交流过程中,会用我所掌握的Unit Operation的知识分析用户的工艺过程,协助用户整理过程控制中的各个逻辑关系,甚至包括各种仪表、硬件的配置。这得益于我原本所学的专业。当然,不能要求所有搞PLC程序的工程师都有我这样的经历。但是有两门知识却是不可或缺的:一是过程仪表的硬件知识,包括传感器、变送器(二次仪表)和PLC本身,这是构建控制系统的基础;二是过程控制理论,包括各种控制模型的原理和应用,其中最重要的是二位调节和PID调节模型。PID调节是目前用得最广泛的过程控制手段,且变化多端。学习PID最好的方法就是读书。几乎所有讲解过程控制的书籍都有关于PID的内容,多读基本相关的书籍对理解PID是很有益处的。我发现不少网友在进入PLC领域时,缺乏这些相关知识。这并不可怕;可怕的是当事者不能静下心来弥补知识的缺陷。我们不要怪罪学校没有教授这些内容,而是要注重自己如何去学习这些知识。工作中遇到的许多问题是学校里没讲过的,这不能成为我们拒绝工作的理由,而应该以积极的态度去应对这些问题。我的体会是,为了解决工作中的问题而学习的知识,比课堂上学的东西更容易记住。
5、养成良好的编程习惯
每个人编程都会有不同的习惯和特点,不能强求一致。但是一些好的习惯还是应该为大多数人所遵循。一是理顺逻辑关系、时序关系,编制程序框图;二是合理分配主程序、子程序和中断程序;三是合理分配寄存器,编制寄存器符号表。
PLC编程更接近于单片机,或者说PLC就是模块化的单片机。因此PLC的很多操作都是直接针对寄存器的,如果在程序中出现不合理的寄存器地址重叠,一定会出现不可预想的后果。编制寄存器符号表不仅可以避免上述问题(MicroWin会有问题提示),而且可以使程序具备更好的可读性。这和VB中定义变量有异曲同工之处。
VB编程中关注的是事件,不强调主程序和子程序的观念,因为VB主程序的工作是由PC的操作系统完成的。PLC则不然。PLC程序是以主程序为主干的,CPU不断的循环执行主程序,只有触发条件成立时才会调用子程序或中断程序。即子程序和中断程序所执行的任务不是全时需要的。如果把这些任务都放在主程序中会无端增加主程序的工作量,降低程序的效率。这点和单片机的编程思路是一致的。子程序的使用可以使整个程序的逻辑更清晰。而且子程序可以分开编写、调试,最后“安装”到主程序上。这样你可以一个一个解决问题。
PLC编程,无论是LAD,抑或STL,都不如VB那么直观、有趣,更不如CAD那么形象。但比单片机的汇编语言的可视性强多了。对于初学者,LAD(梯形图)的编程相对直观,更容易上手。
最后,PLC提供了丰富的指令、模块,比单片机方便了很多。但是初学者编程时应尽量先使用简单的指令达到目的。尽管看上去有点土,却不失为一个入门的好途径,且对你理解那些较为复杂的指令会有帮助。具备了一定经验后,应该考虑掌握复杂指令的应用,以及程序的优化。
楼主最近还看过
二、学习PLC密决
1.不要看到别人的回复第一句话就说:给个代码吧!你应该想想为什么。当你自己想出来再参考别人的提示,你就知道自己和别人思路的差异。
2.别小家子气,买本书几十块都舍不得,你还学个P。为了省钱看电子书,浪费的时间绝对超过书的价值。当然如果查资料,只能看PDF。
3.学习新的开发软件时,一定要看帮助手册。买的书不够全面。刚接触一个软件,什么都不懂,就盲目的问东问西,让人看起来很幼稚。
4.不要蜻蜓点水,得过且过,细微之处往往体现实力。
5.把时髦的技术挂在嘴边,还不如把过时的技术记在心里。
6.看得懂的书,请仔细看;看不懂的书,请硬着头皮看。别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍。
7.多实践,调试,去写去调,只用软件模拟,是永远成不了高手的。8.保存好你做过的所有的源程序、原理图等----那是你最好的积累之一。
9.对于网络,还是希望大家能多利用一下,很多问题不是非要到论坛来问的,首先你要学会自己找答案,比如google、百度都是很好的搜索引擎,你只要输入关键字就能找到很多相关资料,别老是等待别人给你希望,的出你平时一定也很懒!
10 到一个论坛,你学会去看以前的帖子,不要什么都不看就发帖子问,也许你的问题早就有人问过了,你再问,别人已经不想再重复了,做为初学者,谁也不希望自己的帖子没人回的。
11,论坛论坛,就是大家讨论的地方,总期望有高手总无偿指点你,除非他是你亲戚!!讨论者,起码是水平相当的才有讨论的说法,如果水平真差距太远了,连基本操作都需要别人给解答,谁还跟你讨论呢。
三、如何学习PLC
弄通有关PLC程序设计理论是重要的。没有这方面的理论准备或指导,仅靠在实践中摸索,简单的问题还好办。复杂的就不好办了。不仅无从下手,而且花了很多时间与精力,也难编出效率较高、质量也较高的程序,常常是事倍功半。
但是,编程的具体实践,以及在这个实践中得来的知识或技能,即经验,也是重要的。没有经验,仅有理论,既无法深刻理解理论,又无法灵活应用理论。这正如学数学,如仅了解一些定理或记住一些公式,没有作相应的练习,肯定是学不好的。更不用说,任何理论也都只是经验的总结,归根到底也都有是来自实践。
1、经验积累
经验有别人的,也有自己的,都很重要。前者要靠细心学习,后者要靠用心积累,都要在一定的时间与必要的精力。
别人的经验有上了书的或登载在杂志上的。有的是细心学习别人的,但多数是我自己的经验。所有的例子都经我测试过,都经实践证明是可行的。我想,别的书本或杂志上介绍的也会是这样的。所以学习这样杨功的经验是必要的。
还有就是你同事的经验,也是值得学习。这种经验离你很“近”,很易借鉴。
自己的经验则是最重要的。要在自己的实践中,积累自己的经验。同时,最好在学别人的经验时,也能亲自作些测试,能使自己也有类似的经历,进而把这些经验变成自己的。这也是自己经验的重要积累。
还有一些失败的经验,这往往是不会公开的,但这些经验也要学习,也要积累。
经验的积累要用自己的脑记,更要用电脑记。最好作些分类,建立一个自用的程序库,以便于随时引用。
2、经验升华
经验还有待升华。升华有三个层次:
最低的层次就是建立一个典型的程序库,供今后再用。若程序复杂,还可建一些功能块,或子程序,以便以后引用。
其次,要总结出有效算法。如单按钮起停程序库等。
最高层次的升华是把经验上升到理论的高度,为丰富PLC程序设计理论作贡献。我想,随着PLC使用的普及与提高,是会有越来越多从经验中升华出来的,而又能用以指导实践的PLC编程理论的。
3、经验应用
经验积累、经验升华都是为了应用。经验应用有三方面:
1)用作工程设计模板。设计新系统时,选用一个或几个与现设计工程类似的,已取得成功的工程,作样板进行设计。这既可减轻设计的工作量,又增加设计的成功率。这也是信息可重用的一大好处。
2)用作程序设计参考。在无成功的工程可作样板时,在新设计的逻辑中,仍有相当一部分控制逻辑,可采用或借用已有典型逻辑,这也可减少设计的工作量,增加设计的成功率。
3)用作算法设计参考。在既无样板可参照,又无典型可采用时,还可运用过去的一些成功的算法。
经验是宝贵的,但是经验特别是个人经验,总是有限的。所以,经验的应用也还要与编程理论相结合。
四、如何学习别人的PLC程序
1 收集资料,
《新人学PLC编程的心得体会》(http://www.unjs.com)。在收集资料时不仅要收集程序还要收集程序所附带的工艺流程及I/O分配表。
2 程序分类。在收集到前人的程序后,首先加以分类。以不同品牌的程序分类——再以不同功能细分。
3 选择程序加以理解。分类完成后就是慢慢的“消化”程序了。首先选择自己熟悉的PLC程序或是自己将要用到的程序样例下手,这样理解起来比较容易。
4 对于有工艺流程及I/O分配表的程序进行理解。
1) 了解程序的工艺流程。
2) I/O分配。把I/O分配表中的说明加在程序的注释中。
3) 理解中间位。在程序设计时肯定会用到诸多的中间位做转接,然后搞清楚每一步或每一网络所对应的中间位的功能,在程序中加以注释。
4) 理解定时器。程序中定时器的功能要清楚,特别是有时间日期控制的,定时器的功能是比较重要的。其意义也要记录下来。
5) 理解计数器。
6) 理解陌生指令。在“消化”别人程序的过程中,不勉会看到一些自己没用过或不熟悉的指令,这也是自己要重点理解的对象,要准备一份电子指令手册随时查找,并在程序中记录。这才是自己要学习与进步的地方。
5、 对于没有任何说明的程序进行理解。
1) 指令应用。对此类程序主要是注意程序中的指令应用。把指令截取下来,以指令名称为为文件名另存在文件夹中。
2) 分系统另存。对于能理解并能整理成系统程序加以另存,比如说程序中的时间系统、PID系统等等的程序。
3) 所有的PLC指令都是大同小异的,当以后工作中能应用到的部分可以就地取材,举一反三。
更重要的是要了解设备的工艺,只有熟悉了产品和掌握了程序的基本编写方法,才能得心应手!!
五、PLC基础学习方法论谈
学习PLC入门方法其实主要是两点,1.选择一个PLC(购买西门子S7 200\300 PLC请选择中华自动化网上商城PLC专栏), 2边学边练
(一)、问题提出。
可编程控制器技术最主要是应用于自动化控制工程中,如何综合地运用前面学过知识点,根据实际工程要求合理组合成控制系统,
在此介绍组成可编程控制器控制系统的一般方法。
(二)、可编程控制器控制系统设计的基本步骤
1 .系统设计的主要内容
( 1 )拟定控制系统设计的技术条件。技术条件一般以设计任务书的形式来确定,它是整个设计的依据;
( 2 )选择电气传动形式和电动机、电磁阀等执行机构;
( 3 )选定 PLC 的型号;
( 4 )编制 PLC 的输入 / 输出分配表或绘制输入 / 输出端子接线图;
( 5 )根据系统设计的要求编写软件规格说明书,然后再用相应的编程语言(常用梯形图)进行程序设计;
( 6 )了解并遵循用户认知心理学,重视人机界面的设计,增强人与机器之间的友善关系;
( 7 )设计操作台、电气柜及非标准电器元部件;
( 8 )编写设计说明书和使用说明书;
根据具体任务,上述内容可适当调整。
2 . 系统设计的基本步骤
( 1 )深入了解和分析被控对象的工艺条件和控制要求
a .被控对象就是受控的机械、电气设备、生产线或生产过程。
b
.控制要求主要指控制的基本方式、应完成的动作、自动工作循环的组成、必要的保护和联锁等。对较复杂的控制系统,还可将控制任务分成几个独立部分,这种可化繁为简,有利于编程和调试。
( 2 )确定 I/O 设备
根据被控对象对 PLC
控制系统的功能要求,确定系统所需的用户输入、输出设备。常用的输入设备有按钮、选择开关、行程开关、传感器等,常用的输出设备有继电器、接触器、指示灯、电磁阀等。
( 3 )选择合适的 PLC 类型
根据已确定的用户 I/O 设备,统计所需的输入信号和输出信号的点数,选择合适的 PLC 类型,包括机型的选择、容量的选择、 I/O
模块的选择、电源模块的选择等。
( 4 )分配 I/O 点
分配 PLC 的输入输出点,编制出输入 / 输出分配表或者画出输入 / 输出端子的接线图。接着九可以进行 PLC
程序设计,同时可进行控制柜或操作台的设计和现场施工。
( 5 )设计应用系统梯形图程序
根据工作功能图表或状态流程图等设计出梯形图即编程。这一步是整个应用系统设计的最核心工作,也是比较困难的一步,要设计好梯形图,首先要十分熟悉控制要求,同时还要有一定的电气设计的实践经验。
( 6 )将程序输入 PLC
当使用简易编程器将程序输入 PLC时,需要先将梯形图转换成指令助记符,以便输入。当使用可编程序控制器的辅助编程软件在计算机上编程时,可通过上下位机的连接电缆将程序下载到
PLC 中去。
( 7 )进行软件测试
程序输入 PLC 后,应先进行测试工作。因为在程序设计过程中,难免会有疏漏的地方。因此在将PLC连接到现场设备上去之前,必需进行软件测试,以排除程序中的错误,同时也为整体调试打好基础,缩短整体调试的周期。
( 8 )应用系统整体调试
在 PLC
软硬件设计和控制柜及现场施工完成后,就可以进行整个系统的联机调试,如果控制系统是由几个部分组成,则应先作局部调试,然后再进行整体调试;如果控制程序的步序较多,则可先进行分段调试,然后再连接起来总调。调试中发现的问题,要逐一排除,直至调试成功。
( 9 )编制技术文件
系统技术文件包括说明书、电气原理图、电器布置图、电气元件明细表、 PLC梯形图。
(三)、 PLC 硬件系统设计
1 . PLC 型号的选择
在作出系统控制方案的决策之前,要详细了解被控对象的控制要求,从而决定是否选用 PLC进行控制。
在控制系统逻辑关系较复杂(需要大量中间继电器、时间继电器、计数器等)、工艺流程和产品改型较频繁、需要进行数据处理和信息管理(有数据运算、模拟量的控制、PID 调节等)、系统要求有较高的可靠性和稳定性、准备实现工厂自动化联网等情况下,使用 PLC 控制是很必要的。
目前,国内外众多的生产厂家提供了多种系列功能各异的 PLC产品,使用户眼花缭乱、无所适从。所以全面权衡利弊、合理地选择机型才能达到经济实用的目的。一般选择机型要以满足系统功能需要为宗旨,不要盲目贪大求全,以免造成投资和设备资源的浪费。机型的选择可从以下几个方面来考虑。
( 1 )对输入 / 输出点的选择
盲目选择点数多的机型会造成一定浪费。
要先弄清除控制系统的 I/O 总点数,再按实际所需总点数的 15 ~ 20 %留出备用量(为系统的改造等留有余地)后确定所需 PLC
的点数。
另外要注意,一些高密度输入点的模块对同时接通的输入点数有限制,一般同时接通的输入点不得超过总输入点的 60 %; PLC
每个输出点的驱动能力( A/ 点)也是有限的,有的 PLC 其每点输出电流的大小还随所加负载电压的不同而异;一般 PLC
的允许输出电流随环境温度的升高而有所降低等。在选型时要考虑这些问题。
PLC 的输出点可分为共点式、分组式和隔离式几种接法。隔离式的各组输出点之间可以采用不同的电压种类和电压等级,但这种 PLC
平均每点的价格较高。如果输出信号之间不需要隔离,则应选择前两种输出方式的 PLC 。
( 2 )对存储容量的选择
对用户存储容量只能作粗略的估算。在仅对开关量进行控制的系统中,可以用输入总点数乘 10 字 / 点+输出总点数乘 5 字 /
点来估算;计数器 / 定时器按( 3 ~ 5 )字 / 个估算;有运算处理时按( 5 ~ 10 )字 / 量估算;在有模拟量输入 /
输出的系统中,可以按每输入 / (或输出)一路模拟量约需( 80 ~ 100 )字左右的存储容量来估算;有通信处理时按每个接口 200
字以上的数量粗略估算。最后,一般按估算容量的 50 ~ 100 %留有裕量。对缺乏经验的设计者,选择容量时留有裕量要大些。
( 3 )对 I/O 响应时间的选择
PLC 的 I/O 响应时间包括输入电路延迟、输出电路延迟和扫描工作方式引起的时间延迟(一般在 2 ~ 3
个扫描周期)等。对开关量控制的系统, PLC 和 I/O 响应时间一般都能满足实际工程的要求,可不必考虑 I/O
响应问题。但对模拟量控制的系统、特别是闭环系统就要考虑这个问题。
( 4 )根据输出负载的特点选型
不同的负载对 PLC
的输出方式有相应的要求。例如,频繁通断的感性负载,应选择晶体管或晶闸管输出型的,而不应选用继电器输出型的。但继电器输出型的 PLC
有许多优点,如导通压降小,有隔离作用,价格相对较便宜,承受瞬时过电压和过电流的能力较强,其负载电压灵活(可交流、可直流)且电压等级范围大等。所以动作不频繁的交、直流负载可以选择继电器输出型的
PLC 。
( 5 )对在线和离线编程的选择
离线编程示指主机和编程器共用一个 CPU ,通过编程器的方式选择开关来选择 PLC 的编程、监控和运行工作状态。编程状态时, CPU
只为编程器服务,而不对现场进行控制。专用编程器编程属于这种情况。在线编程是指主机和编程器各有一个 CPU ,主机的 CPU
完成对现场的控制,在每一个扫描周期末尾与编程器通信,编程器把修改的程序发给主机,在下一个扫描周期主机将按新的程序对现场进行控制。计算机辅助编程既能实现离线编程,也能实现在线编程。在线编程需购置计算机,并配置编程软件。采用哪种编程方法应根据需要决定。
( 6 )据是否联网通信选型
若 PLC 控制的系统需要联入工厂自动化网络,则 PLC 需要有通信联网功能,即要求 PLC 应具有连接其他 PLC 、上位计算机及
CRT 等的接口。大、中型机都有通信功能,目前大部分小型机也具有通信功能。
( 7 )对 PLC 结构形式的选择
在相同功能和相同 I/O
点数据的情况下,整体式比模块式价格低。但模块式具有功能扩展灵活,维修方便(换模块),容易判断故障等优点,要按实际需要选择 PLC
的结构形式。
2 .分配输入 / 输出点
一般输入点和输入信号、输出点和输出控制是一一对应的。
分配好后,按系统配置的通道与接点号,分配给每一个输入信号和输出信号,即进行编号。
在个别情况下,也有两个信号用一个输入点的,那样就应在接入输入点前,按逻辑关系接好线(如两个触点先串联或并联),然后再接到输入点。
( 1 )确定 I/O 通道范围
不同型号的 PLC ,其输入 / 输出通道的范围是不一样的,应根据所选 PLC
型号,查阅相应的编程手册,决不可“张冠李戴”。必须参阅有关操作手册。
( 2 )部辅助继电器
内部辅助继电器不对外输出,不能直接连接外部器件,而是在控制其他继电器、定时器 / 计数器时作数据存储或数据处理用。
从功能上讲,内部辅助继电器相当于传统电控柜中的中间继电器。
未分配模块的输入 / 输出继电器区以及未使用 1 : 1
链接时的链接继电器区等均可作为内部辅助继电器使用。根据程序设计的需要,应合理安排 PLC 的内部辅助继电器。