历经26年对PLC的研究和应用实践,在设计了多款PLC都觉得不满意之后,最近完成了一种完全自主的PLC体系设计。现在是该休整一下,总结这些年来学习、研究PLC的经验和体会,与网友共享,希望能起到抛砖引玉的作用,对国产PLC研发提供参考,对学习、研究、批量生产与制造、销售与代理、定制专用PLC有兴趣的网友也可以与我联系(QQ:2271071498,关键词 PLC),共同研究PLC技术,开拓PLC市场,为国产PLC的发展壮大贡献自己的一份力量,有你们的参与,国产PLC世界将会更加精彩。
涉及PLC的内容很广,无法面面俱到,只能选择有代表性的内容,由于时间限制,本文的内容相对较窄,但篇幅已经不小了,对于PLC的初学者,有兴趣的话,可以仔细的阅读,相信会有收获,对应PLC的高手、专家,希望交流与讨论。
本文主要从PLC的原理、实现与应用3方面概要地介绍PLC,侧重实现和应用,实现部分将介绍PLC的一些典型电路及布局布线的一些基本常识,
应用部分将介绍各种控制对象的特性及相关检测与控制电路的设计,这些都是多年实践和应用经验的总结。
目录
一、 原理
1.1 PLC的体系架构
1.1.1 指令系统
1.1.2 通讯协议
1.1.3 指令解析器
1.1.4 编程软件或编程平台
1.2 解释型PLC与编译型PLC
1.2.1 解释型PLC
1.2.2 编译型PLC
1.2.3 解释型PLC与编译型PLC的优缺点
1.3 自主PLC的体系架构设计
1.3.1 指令系统的设计
1.3.2 通讯协议的设计
1.3.3 编程软件的设计
1.4 PLC的性能
1.4.1 兼容性
1.4.2 灵活性
1.4.3 开放与开源
二、 实现
2.1 HC104系列超级PLC简介
2.2 HUP系列超小型PLC简介
2.3 HOP系列开源PLC简介
2.4硬件电路设计的三个方面:电路设计、电磁兼容设计、热设计
2.5 电路设计
2.5.1 数字IO的处理
2.5.2 高速IO的处理
2.5.3 模拟信号的处理
2.6 电磁兼容设计
2.7 热设计
三、 应用
3.1 HC104系列PLC的总体架构与设计要点
3.1.1 HC104-M016-T01 16点(8I/8o 晶体管输出)主板
3.1.2 HC104-E016-R01 16点(8I/8o 继电器输出)主板
3.1.3 HC104-D064-P01 64点显示、编程板
3.1.4 HC104-E8AD-001 8 AD输入板
3.1.5 HC104-E8DA-001 8 DA输出板
3.1.6 HC104-E4AD-D21 4AD输入、2AD输出板
3.1.7 HC104-PT24-001 24路热电阻输入板
3.1.8 HC104-PK24-001 24路热电偶输入板
3.1.9 HC104-E016-TH1 16路高速(>1MHz)输入板
3.1.10 HC104-SEVO-001 伺服电机控制板
3.1.11 HC104-STEP-001 步进电机控制板
3.1.12 HC104-EBUS-FX2 三菱FX1N、FX2N系列PLC扩展模块接口板
3.1.13 HC104-EBUS-SM1 西门子S7-200系列PLC扩展模块接口板
3.1.14 HC104-EBUS-OM1 OMRON CP系列PLC扩展模块接口板
3.1.15 HC104-EBUS-AK1 Aeonkon(英凯)PLC扩展模块接口板
3.2 HUP系列PLC的总体架构与设计要点
3.2.1 HUP-016-R01 16点(8I/8o 继电器)模块
3.2.2 HUP-E016-R01 16点(8I/8o 继电器)扩展
3.2.3 HUP-E6AD-001 6点AD输入扩展
3.2.4 HUP-ICAN-P01 隔离CAN BUS、编程板
3.3 HOP系列开源PLC
3.3.1 HOP-016-R01 16点(8I/8o 继电器)主板
正文
一、 原理
1.1 PLC的体系架构
一个自成体系的PLC由四大部分组成:指令系统、通讯协议、指令解析器和编译软件或编译平台。
1.1.1 指令系统
PLC的指令系统有2种表现形式:助记符和字节码。
助记符,顾名思义是帮助人记忆的一组字母符号,如:MOV K40 K4S0。
字节码,是指令解析器能够识别的代码,指令解析器按字节或字分析该串代码,提取指令代码和操作数,执行相应的动作,如:0x0028,0x8028,0x8000,0x8400,0x8800就是MOV K40 K4S0的字节码。
这里采用字节码的名称是为了避免与指令解析器中CPU自身的机器码相混。
1.1.2 通讯协议
PLC的通讯协议有很多,主要有:PLC与编程软件的通讯协议、PLC之间的通讯协议、PLC与现场设备的通讯协议。
1.1.3 指令解析器
就是我们通常所指的PLC,其功能有强有弱,差别极大,无法比较。最弱的PLC应该有2项功能:解析指令和与编程软件通讯。强大的PLC,功能没有限制。
1.1.4 编程软件或编程平台
编程软件通常也称为上位机软件,主要功能是为编辑梯形图、指令表等提供一个友好的界面,方便输入、修改梯形图、指令表的程序,并将梯形图、指令表等编译成字节码,再下载到PLC中解析运行,实现预定的功能。
功能强大的编程软件还能实现梯形图、指令表等的仿真运行,实时监控,在线编辑等功能,极大地提高调试程序的效率。
1.2 解释型PLC与编译型PLC
从历史的角度看,PLC有2种类型:解释型和编译型。
1.2.1 解释型PLC
解释型PLC内部有一套监控程序和通讯程序,负责与编程软件和其他PLC及现场设备通讯,在运行时逐条解析预先下载到PLC中的梯形图指令,执行相应动作,所有的指令都执行完后,监控程序负责刷新输入、输出信号、计算运行时间、与上位机或其他PLC、现场设备通讯,然后再逐条解析梯形图指令,如此周而复始,循环不息。
1.2.2 编译型PLC
编译型PLC也有一套监控程序和通讯程序,负责与编程软件和其他PLC及现场设备通讯,但运行方式与解释型的PLC不同,它是执行一段PLC的本地代码而非梯形图的字节码,运行完后再返回监控程序。
何谓本地代码?每种CPU都有自己专属的一套指令系统,指令的二进制表示就是机器码,机器码是可以直接运行的,本地代码指的就是机器码。
对解释型PLC而言,所谓的梯形图程序,在PLC内部并非程序,不能直接运行,而是数据,解析器(也有称为虚拟机)分析数据,然后在执行相应的动作。
对编译型PLC而言,下载到PLC中的梯形图程序是经编程软件本地化编译后的可执行代码,是可以直接执行的。这要求编程软件要有2个编译器,一个是梯形图到指令表的编译器,另一个是指令表(字节码)到机器码的编译器,这在JAVA里叫即时编译器,JIT。
1.2.3 解释型PLC与编译型PLC的优缺点
应该说,解释型PLC与编译型PLC各有优缺点,但在我看来,编译型PLC的缺点更多,有的是不能接受的。
有很多人认为编译型的PLC比解释型的PLC运行速度快,理由是运行的程序是本地代码。有人甚至认为编译型的PLC比解释型的PLC要快3~10倍,这样的数据不知从何而来,在我看来能快1.5倍都很难,快1.2倍是有可能的,以下简单分析之:
不管是编译型的,还是解释型的PLC,在一条指令中,取操作数,然后运算,这些是一样的,所不同的是编译型的PLC,执行完上一条指令直接跳到下一条指令执行,而在解释型的PLC中,执行完一条指令需返回到一个函数中,该函数取出下一条指令的指令码,再转到相应的指令处理函数中,这部分通常称为入口函数处理,对同类指令的处理时间基本一样(这与指令分组有关,有的逻辑指令采用一次跳转,功能指令采用二次跳转),因此简单的指令,这部分的比例会高些,对于复杂的功能指令,这部分可以忽略不计,可见,编译型的PLC速度比解释型的PLC快不了多少。
编译型PLC的缺点主要有3点:在线编辑功能、程序上传和数据保护。
1、在线编辑功能,实际上是对运行中的PLC,在不停机的状态下进行局部程序的编辑与修改,这在大型PLC系统中是非常重要的功能。设想一下,一条大型流水线,某个局部逻辑有点小问题,可能只需要将常开触点改为常闭触点,若是没有在线编辑功能,则需要程序重新编译、下载才能实现。下载程序肯定要停机,大型设备要停机就能停机吗?这时候,在线编辑功能就非常有用了,可以做到神不知鬼不觉的就把程序改了,问题也就决了。这种事情我做多了,若是客户问什么问题,大可以说没问题,只是某某东西不太好,调一下就可以了。若是程序有问题,要求停机修改程序,那责任就明摆着了,人家不还钱就有理由了嘛。
属我愚笨,到现在,我都想不出有什么好的办法,编译型PLC可以实现在线编辑功能,因为根本不知道要修改的梯形图指令是那段本地代码!
2、程序上传功能,这个功能理论上是不需要的,程序是下载到PLC中去的,肯定有备份的啊,还需要上传?
而在实际中,有以下N多种情况会发生:
1)、过了N久之后,你不一定有源程序的备份;
2)、原始程序不是你写的,也找不到原始程序了,现在要修改程序;
3)、在大的公司中,程序是你写的,你有源程序,但后来其他人修改了程序又没有把修改的程序给你,现在机器又出问题了,将你原来的程序下载下去?那已经解决了的问题又重现了,怎么办?
在我的实际工作中,不管是我写的程序,还是其他人写的程序,在修改程序之前,先上传程序或先比较一下你拿到的程序与现在运行的程序是否相同,这是非常重要的一步,这步没做,或忽视了,可能会带来严重后果。
而在编译型的PLC中,如何上传程序?前面已经讲到,编译型的PLC中,执行的不是梯形图指令,而是梯形图指令(字节码)的本地代码,将本地代码上传再反编译成梯形图指令?可能现在还没有这样的技术。这样为了实现程序的上传就必须在PLC中也要保存一份梯形图指令(字节码),这就需要在下载程序时,既要下载字节码,也要下载机器码,而且机器码的长度是字节码的几倍,累不累啊!不过,好歹还有办法。
3、数据保护
在解释型的PLC中,PLC程序和数据(各种寄存器)是分离的,即下载程序不会改变原来的数据,这点是很重要的。在大型系统中,程序运行的许多参数是预先设定,并保存在掉电保存寄存器中的。编程软件中有一个功能是可以将运行的PLC中的各种寄存器的当前值保存到文件中,也可以将文件中的各种寄存器值写到PLC中,这对批量产生设备非常有好处,可以非常容易地完成设备的初始设定。
在编译型的PLC中,梯形图程序已被编译成机器码,执行代码和变量(数据)是高度耦合,下载程序会将变量数据破坏,而且每次编译变量的地址都是不确定的,编程软件(上位机)如何监控数据(各种寄存器)?
随着单片机性能的不断提高,速度越来越快,解释型PLC的速度早就不成问题了,现在随便一款72MHZ的Cortex-M3的单片机所能到达的处理速度都超过FX2N的水平。
1.3 自主PLC的体系架构设计
做山寨机是比较容易的,不需要考虑那么多,照原机做就可以了,而且做的越像水平越高。要设计自主PLC体系就难了,参考现有的设计,会被说成是山寨,而现今大量使用的PLC都是经过多年的使用进化而来的,自然有许多优点,放弃这些优点重新设计,客户不一定接受,因此,自主PLC的体系设计也要考虑这种现实。
自主PLC体系设计从2004年就开始了,设计、打样了3、4款外壳,花了几万元,但都因不满意、不理想而没有开模具量产。
技术方案有采用单CPU的、核心模块的和多CPU的。单CPU和核心模块的方案在实现各种模块扩展时不是很方便,而多CPU方案在实现IO扩展时所展现出的优越性非常突出,这一技术在2008年获得国家发明专利。
超级PLC系统就是基于多CPU技术构成的智能IO系统,其优良的特性会在下面详细讲述。
1.3.1 指令系统的设计
自主PLC一定要有自己的指令系统,用人家的指令系统那就不是自主的,是山寨。
Aeonkon(英凯)PLC的指令系统是在博采众长的基础上发展起来的,已经历了多年的验证,不论是空间效率(指令的长度)还是执行效率都非常高,比三菱FX系列PLC的指令要高得多,这里不再细述,详情请参见《Aeonkon(英凯) PLC 指令与三菱PLC指令的差异》一文。
附件:
[本地下载]Aeonkon(英凯)的通讯协议是独创的,适合PLC与编程软件、PLC之间、PLC与现场设备之间的通讯,其内容很多,这里不细述,大致的特点是:该协议采用8位二进制编码,而不是ASCII字符,这样通讯效率提高一倍,同时避免了发送与接收时的拆合处理,节省了预处理时间。协议的理论错误概率为2的32次方分之一,极为可靠,经过多年的实际验证,连续通讯几天都没有监测到错误。
1.3.3 编程软件的设计
自主的PLC要有自己的编程软件,这是最基本的。Aeonkon(英凯)PLC的编程软件从2003年开始到2005年基本完成,现在还在不断完善中。该软件具有大型PLC软件的许多特性,如:结构化梯形图编程、在线编辑、离线仿真、在线监控、能流显示、直接读入FX系列PLC的程序文件再编译、支持IEC61131-3标准等。
图1是Aeonkon(英凯)的编程软件
http://www.plc-world.com/upload/forum/2012112117250018.jpg
图1
1.4 PLC的性能
PLC的性能表现在多个方面,如指令的执行速度,程序空间的大小,扩展能力,扩展模块的数量和种类等,这些网友应该比较熟悉,在此不再多谈。
1.4.1 兼容性
一个全新的PLC系统若不考虑与现有的系统做某些兼容,恐怕很难被人接受,但兼容太多又会被人认为是抄袭、是山寨。较好的方案应该是同一个PLC,既能运行自主的一套东西,也能兼容流行的体系,这样比较容易推广。Aeonkon(英凯)的HC104系列PLC在同一硬件电路的基础上,只要增加或更换扩展总线接口就能兼容不同体系的PLC。
1.4.2 灵活性
小规模的应用对灵活性要求不高,再变也变不到哪里去。对于较大的系统能够用较少的模块灵活配置,则对厂家和用户都能减少库存,节省成本。Aeonkon(英凯)的HC104系列PLC一块8I/8o模块,既可以做主处理(CPU)模块,也可以做IO模块,主处理模块可以带16个IO模块,因此,如果全部都数字输入、输出的话,同一种模块可以构成以下各种规模的系统:16(8/8)、32(16/16)、48(24/24)、64(32/32)、80(40/40)、96(48/48)、112(56/56)、128(64/64)、144(72/72)、160(80/80)、176(88/88)、192(96/96)、208(104/104)、224(112/112)、240(120/120)、256(128/128)。这基本涵盖了小规模的应用。
1.4.3 开放与开源
现在常用的PLC都是自成体系的,开放度很小,开放给用户的一般只有一个很简单的自由通讯协议,厂商这样做也有一定的道理,如果将PLC体系内的一些功能开放给客户,由于客户水平参差不齐,可能会导致PLC系统不可靠、不稳定,砸了牌子。
Siemens的PLC体系相对比较开放,提供了一个ProfiBus的总线给客户,但这种总线也不是一般的客户玩得起的,一是没有相关的资料,二是接口芯片很贵。
我想,Aeonkon(英凯)的PLC也可以采用这种模式,采用CANBUS这种性能适中,资料、芯片支持都很多的总线做为Aeonkon(英凯)PLC的远程(现场)IO总线,以降低系统成本和入门的门槛。
开源的话题是很多人所关心的,有些人把人家的产品和技术拿来开源,这是不道德的(只能这样说,又不能追究责任),我不赞同这种做法。要开源把自己的研究成果开源那是值得尊敬的!
一个开源的系统应该是自主的、独立的,不侵犯人家的权益,这样才有可能获得认同和支持,才有意义。打着开源的旗号,开别人的源,赚自己的钱,很不道德。
我对开源PLC的设想是:自主的PLC体系,以IEC61131-3为标准,有自主的指令系统、通讯协议和编程软件。Aeonkon(英凯)的PLC体系基本符合这些要求。
很多年前、在网上就有开源的PLC,如:MIT PLC、netPLC、OPLC等,这些PLC差不多都在linux下,因此也几乎没用,现在所谓的开源PLC,功能都很简单,完全不能和主流PLC相比。
最后修改:2012/11/21 23:53:02