PLC的内部固化了一套系统软件,使得你开始能够进行初始化工(http://www.maoyihang.com/sell/l_8/)作和对硬件的组态。PLC的启动设置、看门狗、中断设置、通讯(http://www.maoyihang.com/sell/l_25/)设置、I/O模块地址识别都是在PLC的系统软件中进行的。
每种PLC都有各自的编程软件作为应用程序的编程工具(http://www.maoyihang.com/sell/l_5/),常用的编程语言是梯形图语言,也有ST、IL和其它的语言。如何使用编程语言进行编程,这里就不细述了。
但是,用一种编程语言编出十分优化的程序,则是工程师编程水平的体现。每一种PLC的编程语言都有自己的特色,指令的设计与编排思路都不一样。如果对一种PLC的指令十分熟悉,就可以编出十分简洁、优美、流畅的程序。例如,对于同样的一款PLC的同样一个程序的设计,如果编程工程师对指令不熟悉,编程技巧也差的话,需要1000条语句;但一个编程技巧高超的工程师,可能只需要200条语句就可以实现同样的功能。程序的简洁不仅可以节约内存,出错的概率也会小很多,程序的执行速度也快很多,而且,今后对程序进行修改和升级也容易很多。
所以,虽然说所有的PLC的梯形图逻辑都大同小异,一个工程师只要熟悉了一种PLC的编程,再学习第二个品牌的PLC就可以很快上手。但是,工程师在使用一个新的PLC的时候,还是应该仔细将新的PLC的编程手册认真看一遍,看看指令的特别之处,尤其是自己可能要用到的指令,并考虑如何利用这些特别的方式来优化自己的程序。
各个PLC的编程语言的指令设计、界面设计都不一样,不存在孰优孰劣的问题,主要是风格不同。我们不能武断地说三菱PLC的编程语言不如西门子的STEP7,也不能说STEP7比ROCKWELL的RSLOGIX要好,所谓的好与不好,大部分是工程师形成的编程习惯与编程语言的设计风格是否适用的问题。
现场常常需要对已经编好的程序进行修改。修改的原因可能是用户的需求变更了,可能是发现了原来编程时的错误,或者是PLC运行时发生了电源中断,有些状态数据会丢失,如非保持的定时器会复位,输入映射区会刷新,输出映射区可能会清零,但状态文件的所有组态数据和偶然的事件如计数器的累计值会被保存。
工程师在这个时候可能会需要对PLC进行编程,使某些内存可以恢复到缺省的状态。在程序不需要修改的时候,可以设计应用默认途径来重新启动,或者利用*次扫描位的功能。
所有的智能I/O模块,包括模拟量I/O模块,在进入编程模式后或者电源中断后,都会丢失其组态数据,用户程序必须确认每次重新进入运行模式时,组态数据能够被重新写入智能I/O模块。
在现场修改已经运行时常被忽略的一个问题是,工程师忘记将PLC切换到编程模式,虽然这个错误不难发现,但工程师在疏忽时,往往会误以为PLC发生了故障,因此耽误了许多时间。
另外,在PLC进行程序下载时,许多PLC是不允许进行电源中断的,因为这时,旧的程序已经部分被改写,但新的程序又没有完全写完,因此,如果电源中断,会造成PLC无法运行,这时,可能需要对PLC的底层软件进行重新装入,而许多厂家(http://www.maoyihang.com/company/)是不允许在现场进行这个操作的。大部分新的PLC已经将用户程序与PLC的系统程序分开了,可以避免这个问题。