[原创]IEC61131-3标准及其实现 点击:6138 | 回复:51



东方剑

    
  • 精华:1帖
  • 求助:0帖
  • 帖子:6帖 | 73回
  • 年度积分:0
  • 历史总积分:223
  • 注册:2004年2月04日
发表于:2005-12-18 20:07:00
楼主
IEC61131-3标准的基本概念和定义

   IEC61131-3对下述三个方面进行了描述和定义:1、块的概念,2、PLC的配置,3、编程系统应具备的基本功能。
一、块的概念
由POU(Program Organization Unit)构成的程序和项目称之为块(Blocks),POU与传统PLC世界中的程序块、组织块、顺序快、功能块相对应。
IEC61131-3标准的一个非常重要的目的就是限制块的种类及其隐含的意义,以便统一和简化它们的用法。为此,标准定义了三种类型的POU,分别如下:

POU类型 意义
程序(PROG) 主程序,包括指定的I/O、全局变量和存取路径
功能块(FB) 拥有输入/输出变量的块,是最常用的POU类型
函数(FUN) 带有函数值的块,作为PLC基本操作集的扩展
三种POU的区别在于:
函数(FUN)  函数POU可以指定参数,但没有静态变量也就是没有存储空间,在用相同的输入参数调用函数时总是返回相同的结果。
功能块(FB) 功能块POU即可以指定参数,也有静态变量,在用相同的参数调用功能块时,返回值取决于内部变量和外部变量,并能将内部变量保持到下一个执行周期。
程序(PROG) 此类POU代表“主程序”,整个程序的所有变量(包括指定的物理地址)都应该在此POU(或资源、配置)中声明,其他方面与功能块POU类似。
POU 是个封装的单元,可以独立地编译,并作为其他程序的部件,经编译的POU可以连接在一起组成完整的程序。
POU 的名字在整个项目中是唯一的、全局的。局部子程序在IEC61131-3中是禁止的,经编程之后的POU,其名字和调用接口对项目中其他所有的POU是已知的。
POU 的这种独立性大大方便了自动化任务的模块化以及可以重复使用已经获得良好测试和执行的软件单元。
编写PLC程序实际上就是构造功能块(FB)和程序块。大多数情况,PLC已经预先构造和测试好了大量的功能块(如:定时器和计数器),用户只要将系统提供的功能块按照逻辑要求组织成程序即可。
编写POU的语言种类
   IEC61131-3推荐了五种语言来构造POU,分别是:IL(Instruction List)-指令表、FBD(Function Block Diagram)-功能块图(或方块图)、LD(Ladder Diagram)-梯形图、SFC(Sequence Function Chart)-顺序功能图,ST(Structured Text)-结构化语言。
   每一种语言都有其优点和适用的人群,梯形图直观明了,为大多数的工程人员所喜用,是编写PLC的首选语言。
POU之间的关系
 (1), POU 可以互相调用;
 (2), 禁止递归调用;
(3), 梯形图(LD)、方块图(FBD)、顺序功能图(SFC)通常是能相互转换的;
(4), 由梯形图(LD)转换成的指令表(IL)通常也可以由指令表(IL)转回梯形图(LD);
(5),用指令表(IL)编写的程序块通常是不能转换成梯形图(LD)的,除非结构很简单。
(6),用结构化语言(ST)编写的程序块不能转换成其他四种的任何一种。
标准函数
IEC61131-3只定义了约46个函数,分别是:
数字运算 ABS、SQRT、LOG、LN、EXP、SIN、COS、TAN、ASIN、ACOS、ATAN;
算术运算 ADD、SUB、MUL、DIV、MOD、EXPT、MOVE;
位移与位运算 SHL、SHR、ROR、ROL、AND、OR、XOR、NOT;
选择   SEL、MAX、MIN、LIMIT、MUX;
比较   GT、GE、LT、LE、EQ、NE;
字符串操作 LEN、LEFT、RIGHT、MID、CONTACT、INSERT、DELETE、RAPLACE、FIND;
标准功能块
IEC61131-3只定义了5个功能块,分别是:双稳触发器、边沿触发器、定时器、计数器、通讯功能块;
实际的PLC中这些函数和功能块是远远不够用的。
 
二、PLC的配置
  用IEC61131-3推荐的语言(一种或多种)编写的程序型POU(程序块)通常是相互独立的,如何将各个程序块组成完整的程序就需要对程序块进行配置,IEC61131-3中引入配置元素的概念,通过声明和定义配置元素将程序块紧密地联系在一起。
  配置元素有四种,分别是:配置(Configuration)、资源(Resource)、任务(Task)和运行程序(Run-Time Program),它们之间是按层次划分的。
  四种配置元素的作用如下:
配置元素               描述
Configuration (配置)     定义全局变量(在本配置内有效)
                        组合PLC系统内的所有资源
                        定义配置之间的存取路径
                        声明直接表示的变量
Resource (资源)    定义全局变量(在本资源内有效)
                        给任务和程序指定资源
                        用输入/输出参数调用程序
                        声明直接表示的变量
Task (任务)    定义运行属性
Run-Time Program (运行程序) 给程序块或功能块指定运行属性

   直接表示的变量声明将整个配置映射到PLC的硬件地址,这些声明可以在配置级、资源级或程序级实现,POU通过外部变量声明存取这些变量。
   当将为所有的POU声明的直接表示的变量放在一起时就组成PLC应用的定位表。再重新布线时只要简单地修改这个表,将符号地址重新指到PLC的绝对地址即可。

  配置元素通常是以文字形式声明的。
配置元素之间的关系
   配置元素之间是按层次分级的,配置定义了资源和存取路径,资源定义了任务并将任务分派到PLC的物理资源,任务定义了程序运行时的属性,由此构成了完整的声明链。
三、PLC编程系统应具备的基本功能
创新的PLC编程系统应具备下列模块:
(1),语言编辑器;
(2),编译器、连



东方剑

  • 精华:1帖
  • 求助:0帖
  • 帖子:6帖 | 73回
  • 年度积分:0
  • 历史总积分:223
  • 注册:2004年2月04日
发表于:2005-12-26 13:26:00
21楼
我想王晟磊先生所说的人身攻击是指我说的抄抄改改没有竞争力吧,这是泛指而并不是有针对性的,不必介意,再说我对你本人并談不上有任何成见,只是一年多前打过交道而已,我也是应公司的邀请信前往的,这是当时公司的邀请邮件,顺便附上:

发件人:  "XX"
主题:    关于PLC合作开发问题
内容:    东方剑:
您好,看到您在工控论坛上的言论,很受启发。
我司是一家香港上市公司,是一家专业的PLC生产设计研究的厂商,专注于国产自主产权的PLC和各种特种控制器的生产和开发工作。如有可能,希望能与您合作开发,请您给予PLC开发方面的帮助或支持。望早日回复。
XXX

  一个研究项目无论是否合作都是很正常的,不必耿耿于怀,过后也都可以进行技术探讨。

现在来谈谈PLC的速度问题,以回答网友的疑问。
 首先,我解释一下,解释型PLC、编译型PLC和硬PLC概念。
解释型PLC:在PLC中用事先写好的程序(C语言或汇编语言都可)对梯形图指令逐条解释,完成相应的功能。通常称为“软PLC”。
编译型PLC:将梯形图指令编译为PLC中的CPU的机器码,由CPU直接执行。还是属于“软PLC”范围。
硬PLC:直接执行梯形图指令,PLC专用CPU,可以达到一个时钟周期1基本步的速度。
  王晟磊先生在回帖中说:编译型PLC比解释型PLC快15到20倍,硬PLC比编译型PLC快15到20倍。按此推论硬PLC要比解释型PLC快225到400倍。
就我现在的研究而言不存在这样的关系式,我用8位/16MIPS 的AVR单片机,解释程序用C标准语言写,只是优化了其中的一个函数,现在的速度是3~4us/基本步,最终产品为2us/基本步,这种产品是针对2000步以下的简单系统使用的,I/O点数位20点,售价不到500元,与国内外同类产品相比,只有1/3~1/4。
若用25MIPS/32位CPU来实现,速度达到1us/基本步是没有任何问题的,甚至可以更快些。我即将推出32位CPU的PLC,采用的还是解释方案,速度为0.5us/基本步,与某些“硬PLC”相比只差2.5倍。
至于“编译型PLC”,从来就不是我研究的课题,编译型PLC要求编辑平台直接产生PLC所用的CPU的机器码,这样编辑平台就失去了灵活性,我的编辑平台可以支持任何类型的CPU。
编译型PLC是比解释型PLC快些,但绝对快不到15到20倍,这是肯定的。
从另一方面看,普天下所有的CPU,不管是8位、16位、32位的都是解释型的,都是从程序空间取出一条指令,分析操作码,操作数,完成指定的功能,再取下一条指令。只不过每个CPU都是解释它自己的指令。
解释型PLC的工作原理非常类似CPU的工作原理,只是它用程序来分析梯形图指令而不是用硬件。
再下一步,我将推出“硬解释型PLC”,采用32位25MIPS/25MHz的专用CPU,直接解释梯形图指令,一个周期一条基本指令,速度是0.04us/基本步。这方面,我已经进行了前期研究,已经实现0.004us/基本步的PLC,这应该说是世界上最快的PLC了。
从我的研究结果看,“硬解释型PLC”比“软解释型”PLC快20~25倍,而不是比解释型PLC快225到400倍。 
最后,我希望在讨论技术问题时,所提供的数据应经得起检验。

mufeng02

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 22回
  • 年度积分:0
  • 历史总积分:26
  • 注册:2003年1月23日
发表于:2005-12-26 15:48:00
22楼
两边都是高人,何必争吵呢?我是搞应用的,我的领域是高端安全控制和关键控制,采用的硬件平台都是国外的,我对这个应用领域的核心技术很在行,可是对硬件平台的开发属门外汉,也曾立志开发国产产品,但力不从心。我想大家应该加强合作和技术领域的相互探讨,才能达到目标。

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2005-12-27 13:37:00
23楼
早期与您联系的是技术支持部的一位姓李的工程师,当时我并不知道这个情况,如果需要搞清楚的话,我可以请人力资源部将所有的邮件都打出来,因为我们招聘邮件都是备份在人力资源库内的。我说过不想再多谈,说多了感觉像两个江湖上卖药的似的。
要谈技术就谈技术,再扯到这些无谓的东西上来,我就删贴了。
我简单告诉大家为什么是硬PLC比真编译型的快7~20倍,而真编译型的比解释型的快7~20倍,这里所说的是基于标准的实现方式,如果你在解释型里面加上许多各种优化,最简单的是将函数接口用汇编改写或用C编译器优化,比例有变化也是可能的.
V80采用16位单片机12M主频,可以做到0.2us/每条指令。在与、或、否为主的接点接令满足一定要条件时是七条指令并行,而且与、或、否是不占指令时间的。快多少,大家可以自己算。例于:
__||____||___
  ||  | ||  |
      |     |
__||__|_||__|
 ||  | ||  |
      |     |-----------()
__||__|_||__|
  ||  | ||  |
      |     |
__||__|_||__|
  ||    ||  
    
对于硬解题的PLC这是9条单指令周期的指令加上3条指引指令,这段程序花费的时间是0.2*11=2.2us(实际可能是2.4us,与输出指令有关)。
而一个同样标称0.2us的软PLC的速度如何呢?
这里大至相当于19条指令左右,当然与各家的指令定义有关,比方说有些厂商的LD与AND是可以算做一条指令的,不过就算是一条指令,这条指令也要两个指令周期,如果这个代码的行与列的矩阵再大一点,这种差别更明显.
这个代码可能没有实际意义,但我这只是给大家简单描述一下为什么硬PLC的执行原理.
这里需要给各位简单介绍一下,硬PLC决不是大家想像的只是有个位指令那么简单,硬PLC的来历是早期电器屏继电器组的思想与后来处理器技术相结合的产物,是一种位片处理器(bit slice),最早是AMD公司有专门生产这种芯片,现在基本上各大PLC厂商都是自己控制了该芯片的核心技术,在外面是买不来的,国内某大工控厂商买了三菱的PLC开发版权,其中这块芯片是单价25美金,不得以在该产品定型后重新开发低成本版本的小型PLC.东芝下一代综合控制器的核心ASIC是可选的,如果有这颗芯片速度是0.01us/指令,如果没有这颗芯片速度是5us/指令,包括其现在L系列和M系列也是如此.因为东芝公司以前与我们谈过技术合作和请我们帮东芝设计下一代控制器模块的事情,所以与他们的电技测事业部的几位总工比较熟,也深入的讨论过这方面的技术问题.
海维深从96年就开始PLC技术的研究和开发,过程中走过很多弯路,现在的四大系列产品中包括硬PLC(两个系列)真编译(两个系列)解释型(一个系列),而且基本上来过国内的各大PLC软件商、硬件商都与我们接触过,对这方面的评论正是基于在有这些技术的积累之上,而不是说大话。当然你说是不是每个参数都那么严谨,这倒不然,因为我也只能每天中午休息时上上线发发贴不大可能去做很多工作。
至于给东方剑回这个贴,是因为以前就与东方剑接触过,自认为他对PLC技术的理解有个误区,本来是想给他一个建议的(倒不是采不采用编译方式还是解释方式,PLC的核心技术根本不在此,否则找一个原码的脚本执行器都可以),但是上面的这些贴子让我很伤心,我历来认为技术人员可以意见不同,可以争论,但一定不要上纲上线,不要扯不相干的问题,否则扯到最后并不见得你就得了多大便宜.反而失了身份.

东方剑

  • 精华:1帖
  • 求助:0帖
  • 帖子:6帖 | 73回
  • 年度积分:0
  • 历史总积分:223
  • 注册:2004年2月04日
发表于:2005-12-27 15:24:00
24楼
既然知道这点,当初真不该说什么“揭穿老底”这种有失身份的话,而且我的“老底”算不上辉煌也可说是硕果累累,在国外仅几百万的PLC项目就做了近二十个,回国后已研发出完整的PLC(梯形图、指令表、方块图)编辑、调试平台,PLC核心软件及硬件系统。

keyi科一

  • 精华:3帖
  • 求助:0帖
  • 帖子:16帖 | 1034回
  • 年度积分:0
  • 历史总积分:1197
  • 注册:2005年4月27日
发表于:2005-12-27 21:44:00
25楼
路过

LIUZQ

  • 精华:2帖
  • 求助:0帖
  • 帖子:22帖 | 34回
  • 年度积分:0
  • 历史总积分:143
  • 注册:2005年9月13日
发表于:2005-12-28 12:06:00
26楼
王晟磊老师好!
海维深 的V80PLC 32点 的几钿一只呵?3Q

tudbg

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 1回
  • 年度积分:0
  • 历史总积分:4
  • 注册:2005年10月31日
发表于:2005-12-28 16:55:00
27楼
我试了一下,问题多多,动不动就出现程序错误退出,希望多多改善。在没有打开任何窗口的情况下,双击PLCs工作区中的“全局符号表”会导致错误产生,程序被中止。

东方剑

  • 精华:1帖
  • 求助:0帖
  • 帖子:6帖 | 73回
  • 年度积分:0
  • 历史总积分:223
  • 注册:2004年2月04日
发表于:2005-12-28 21:33:00
28楼
谢谢!
软件刚从V1.00升级到V1.10改动很大,问题比较多。V1.0版倒是挺稳定的,与PLC连线监控整天都没事。

支持国货

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 100回
  • 年度积分:0
  • 历史总积分:160
  • 注册:2005年11月16日
发表于:2005-12-30 00:57:00
29楼
RE:LIUZQ
我来替王回答你吧,由于价格比较敏感,所以也不太方便在网站上公开,但是,可以说我们可以做到所有PLC里面最高性价比的。首先你看到我们有关介绍,应该对我们的产品品质有一个了解,首先我们不是做所谓炒作概念,我们做的实用的产品,包括我们完备的产品系列以及扩展模块,以及方便的为客户定制各种PLC;另外我们的PLC是一个硬PLC,是一个32位CPU加一个专用的逻辑解题芯片构成。PLC的运行效率和品质有保障,包括我们丰富的资源(48K字的梯形图程序空间,9千多个中间辅助继电器,9千多个辅助寄存器,不做个数限制的任意定时器,在线编程等特性。如果您有兴趣,请和我们联系具体情况EMAIL:chineseplc@126.com,如果您在广东周边,我们也方便相互拜访!

天下草民

  • 精华:0帖
  • 求助:0帖
  • 帖子:107帖 | 1044回
  • 年度积分:0
  • 历史总积分:1477
  • 注册:2003年10月28日
发表于:2006-01-06 14:32:00
30楼
  希望东方剑朋友和我联系一下,本着品质造就经典合作共创双赢的精神,一起从技术到商务各个层面探讨一下合作的可能。

  另外,我可以提供一起不错的PLC解释器的源代码供您研究,为做出世界一流的PLC一起努力。

  我的电话:010-68703353 QQ:10815405 MSN:xiahj@163.com
也可以加入中国PLC研发联盟群:12942156进行交流。

  现在的软件和硬件水平制造出一流水准的PLC,并不是一件不可能完成的任务!如果大家有更多的交流和互相学习,加上合适的资金支持,也可以造出AB一样不错的产品和系统。

方源

  • 精华:4帖
  • 求助:0帖
  • 帖子:6帖 | 67回
  • 年度积分:0
  • 历史总积分:108
  • 注册:2002年4月11日
发表于:2006-06-26 21:36:00
31楼
  呵呵,其实,两位都是专家,其实各自都有各自的道理。关于用CPU直接执行梯形图。估计有难度。比如LD X1   机内表示为0x2401
如果硬PLC表示直接单步执行。而解释执行的话,执要先取指,根据2知道是LD指令,(不能用CASE太慢了。)再根据40得到变量地址,根据1得到位地址。所以速度是快不了的。我用16MAVR实现时,单片周其是3us左右。再慢是不可能的了。而王工的方案是不看单步的。意思估计是可达。比如 LD X1 OR X2 OUT Y0 这样的指令,当LD X1的能量流为1时,可以不执行OR X2指令,直达到OUT Y0指令。不过王工有一点可能不清楚,解释执行同样可以实现。我看了AB的编译型生成51汇编后,都是直达的,所以速度也还可以,当然无法看每一步,要看整个程序执行时间了。
   关于梯形图的表示方式。主要有三菱与AB两种。但做上位机,不如AB的结构后理。上面的指令,用AB的表示方式就是:(XIC X1,XIC X2) OUT Y0 不过如AB的表示方案,明显指令数增加了,开始也很头痛,不过用用脑子发现,还是有办法的。结果,实现了指令数比三菱还要少。所以,任何方案,没有最好,只有更好。不要拿自己的观点去批评别人的观点。每个人的方案都是自己研究的心血。其实速度快点最点也不是什么大问题,关键要有一个好的编程环境,可靠的品质。

东方剑

  • 精华:1帖
  • 求助:0帖
  • 帖子:6帖 | 73回
  • 年度积分:0
  • 历史总积分:223
  • 注册:2004年2月04日
发表于:2006-06-27 21:57:00
32楼
   在这个贴子之后,讲了很多的提外话,后来想想挺无聊的,也就没有更深入的的探讨IEC61131-3的其他问题。看了您的分析,觉得您的观点很不错--“速度快点慢点也不是什么大问题,关键要有一个好的编程环境,可靠的品质。”

IREX

  • 精华:10帖
  • 求助:0帖
  • 帖子:225帖 | 318回
  • 年度积分:1
  • 历史总积分:1239
  • 注册:2003年8月04日
发表于:2006-06-28 08:29:00
33楼
给大家心血加个油吧 !

宋玮峰

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 22回
  • 年度积分:0
  • 历史总积分:121
  • 注册:2003年11月06日
发表于:2006-06-29 11:44:00
34楼
TO 东方剑:
少林七十二绝技,从古至今只有达摩祖师一人全部修炼成功,为什么很多武林高人一辈子只能修炼一两种甚至一种都炼不成呢?看过金庸的小说大伙应该明白这个理!正如你们科研人员一样,要想达到最高境界,要想做到前无古人后无来者,内外也要兼修呀!

qijunquan

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 22回
  • 年度积分:0
  • 历史总积分:53
  • 注册:2006年1月07日
发表于:2007-03-17 16:55:00
35楼

qijunquan

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 22回
  • 年度积分:0
  • 历史总积分:53
  • 注册:2006年1月07日
发表于:2007-03-17 17:09:00
36楼
楼上东方和王兄的论战,让我等后来人受益非浅,明晰了一些不清楚的问题,虽然带有着感情色彩,但是技术的探讨需要点火花,非常希望能够有更加经典的帖子出现~~我现在正在准备做PLC开发方面,希望能够得到各位大侠的指教,我的email:qijunquan@163.com,qq:734788083.如果有代码能给我分析下的话会非常的感激~

东方剑

  • 精华:1帖
  • 求助:0帖
  • 帖子:6帖 | 73回
  • 年度积分:0
  • 历史总积分:223
  • 注册:2004年2月04日
发表于:2007-03-18 12:25:00
37楼
见笑了。

PLC技术网

  • 精华:1帖
  • 求助:0帖
  • 帖子:31帖 | 121回
  • 年度积分:0
  • 历史总积分:258
  • 注册:2006年3月19日
发表于:2007-03-24 14:33:00
38楼
看两位的争吵,很多次了!不过东方剑,你的软件里面有个升级程序感觉是流氓软件,无法卸载啊!后来重装系统,才搞掉的.

叫我小白

  • 精华:0帖
  • 求助:0帖
  • 帖子:20帖 | 1559回
  • 年度积分:3
  • 历史总积分:3122
  • 注册:2006年6月08日
发表于:2007-03-25 18:27:00
39楼
无论如何,关于这个标准的内容还是不错的

东方剑

  • 精华:1帖
  • 求助:0帖
  • 帖子:6帖 | 73回
  • 年度积分:0
  • 历史总积分:223
  • 注册:2004年2月04日
发表于:2007-03-27 09:03:00
40楼
很抱歉,是我的一时疏忽,在用InstallShield打包的时候忘了点选卸载选项,造成无法卸载。
 最近在研发新版软件,原来软件也没有时间去更新,由此造成的不便,请原谅。

热门招聘
相关主题

官方公众号

智造工程师