讨论主题:
作为工控人,或多或少的都接触过程序设计,不论是DCS、PLC、RTU,产品厂家出厂的都是标准的产品,需要工程师去结合项目特点、现场工艺完成功能设计,这就需要编程,目前主流控制器都支持IEC61131-3编程语言,还有个别产品支持C/C++编程。请谈谈您使用这些语言一些心得,或者他们的各自的特点。
欢迎各位朋友参与!!!欢迎原创观点,哪怕只有短短的几句话!!
参与方式:采取跟帖的方式参与。
评奖规则:由活动组织者评奖,并进行公开公布告示。
活动结贴:每周为1期,由安控数字化论坛擂台版主选定议题,半个月后(隔一期)擂台版主从所有参与讨论的网友中选出6个优胜者。
奖项设置:每期选出6个优胜者,其中:
一等奖1名:奖100MP(相当于100人民币),
二等奖5名,奖工控精美礼物一个(工控点点、工控T恤、工控徽章、工控工具四者任选一个,相当于65人民币)。 优先考虑获奖次数少于3次的ID
活动发奖:MP评奖后一周内发放,精美礼物每月发放一次,统一在月初寄送。
北京安控科技股份有限公司
地址:北京市海淀区上地四街一号
邮编:100085
电话:400-0093-200 市场部
传真:010-62971668-6888
网址:www.echocontrol.com
E-mail:yqshichang@echocontrol.com
北京安控科技股份有限公司(简称“安控科技”),是专业从事工业级RTU(远程控制终端)产品研发、生产、销售和系统集成业务的高新技术企业,拥有完善的RTU产品链,产品被广泛应用于石油天然气、煤层气、页岩气的开采、处理、管输、储配等各个环节以及环境在线监测、城市燃气、供水供热等管网监控领域,并已远销美国、加拿大、墨西哥、土耳其、哈萨克斯坦、土库曼斯坦、伊拉克、伊朗、韩国、泰国、马来西亚等国家。基于RTU技术,安控科技在油气、环境在线监测等行业开发出多款专业化经典产品,拥有完善的油气田自动化和环保在线监测专用产品。此外,安控科技还提供工业自动化产品的OEM/ODM服务,提供SCADA自动化系统和企业管理信息系统的集成服务。
安控科技通过了ISO9001质量管理体系和ISO14001环境管理体系认证,建立了先进的生产和检测平台,并获得了多项国际认证(如UL 、CE、EMC3级认证等),产品品质达到国际先进水平。
安控科技成立于1998年,位于北京市中关村科技园区海淀园上地信息产业基地。安控科技始终坚持以人为本的人力资源发展战略,建立了一支以高级工程师和专业研究生为骨干的研发团队,打造了一支经过市场历练的高效经营团队,锻炼和培养了一支优秀的管理团队。安控科技始终坚持自主创新的企业发展战略,已经拥有了商标、专利、软件著作权等各类知识产权百余项,覆盖了所提供的所有自动化产品和控制系统。安控科技的研发项目多次获得国家、北京市政府的研发资金支持,部分产品被认定为国家级火炬计划项目、国家重点新产品项目、科技部创新基金项目、商务部出口研发资金项目,受到政府嘉奖与资助。
作为中国自动化学会理事单位、中国自动化学会专家咨询工作委员会常务理事单位、中国自动化学会仪表与装置专业委员会委员单位、北京市中关村企业信用促进会的第一批信用企业,安控科技在国内同行业中较早的通过ISO9001质量管理体系认证,拥有系统集成、建筑施工、环保设施运营等各类资质。
本着“卓越品质,源于更高要求”的核心理念,“协作、严谨、勤奋、卓越”的企业精神,安控人必将以更可靠的工业级RTU产品、更先进的自动化解决方案和更完善的服务答谢用户、回报社会,为振兴民族自动化事业、创建民族自动化品牌而努力奋斗。
北京安控科技股份有限公司
地址:北京市海淀区上地四街一号
邮编:100085
电话:400-0093-200 市场部
传真:010-62971668-6888
网址:www.echocontrol.com
E-mail:yqshichang@echocontrol.com
IEC 61131 是PLC 的国际标准,1992~1995 年发布了IEC 61131标准中的1 ~ 4 部分, 我国在1995 年11 月发布了GB/T15969-1/2/3/4(等同于IEC 61131-1/2/3/4)。IEC 61131-3 广泛地应用PLC、DCS 和工控机、 “软件PLC”、数控系统、RTU 等产品。 定义了5 种编程语言: 1) 指令表IL(Instruction list):西门子称为语句表STL。功能比梯形图或功能块图强。 2) 结构文本ST(Structured text):西门子称为结构化控制语言(SCL)。STEP 7 的S7 SCL(结构化控制语言)符合EN61131-3 标准。SCL 适合于复杂的公式计算、复杂的计算任务和最优化算法,或管理大量的数据等。 3) 梯形图LD(Ladder diagram):西门子简称为LAD。直观易懂,适合于数字量逻辑控制。“能流”(Power flow)与程序执行的方向。 4) 功能块图FBD (Function block diagram):标准中称为功能方框图语言。“LOGO!”系列微型PLC 使用功能块图编程。 5) 顺序功能图SFC(Sequential function chart):对应于西门子的S7 Graph。
用于开发控制系统和商业管理系统的TRACE MODE6编程工具面向不同领域的软件工程师. TRACE MODE6包含的五种编程语言为:Techno SFC、Techno LD、Techno FBD、Techno ST和Techno IL.
这些语言是下列IEC 6-1131/3标准语言的扩展:
TRACE MODE6 IEC 6-1131/3编程语言中包括3种可视化的编程语言(FBD、SFC、LD),针对的目标用户是工程师和商业分析人员;2种面向过程的(ST、IL)语言,面向程序员。使用TRACE MODE6 IEC 6-1131/3语言,你可以同样方便的对控制器、人机界面算法、企业资产管理和制造执行系统的逻辑功能进行编程。TRACE MODE6提供的IEC 6-1131/3语言将强大的功能、易用性和低误差率完美的组合在一起.TRACE MODE6 IEC 6-1131/3编程语言不但完全遵从国际标准,而且包含了诸如带有典型控制算法的扩展功能模块库.
所有5种IEC 6-1131/3编程语言与TRACE MODE 6实时数据库的通讯机理都是相同的. 每个程序拥有一组参数,实时数据通过输入参数进入程序中,计算结果返回到输出参数. 参数与TRACE MODE 6通道属性,如控制器和输入/输出设备的实时输入/输出值、数据库单元或内部变量等相连接. 这样程序在一个周期间可以因为不同的数据线程处理而被多次调用.
在TRACE MODE6集成开发环境中对使用IEC 6-1131/3语言开发的程序进行调试和编辑.用Techno FBD、Techno LD和Techno SFC语言开发的程序是在可视化编辑器中进行编辑和调试,在文本编辑器中对使用Techno ST和Techno IL语言开发的程序进行调试和编辑.用不同的语言开发的程序可以相互调用,嵌套。例如,一个用Techno FBD开发的程序可以调用一个用Techno ST语言开发的功能模块,该功能模块也可以使用Techno LD开发的子程序调用等等. 这种编程中的灵活性允许程序员、控制工程师和商业顾问高效的从事工程开发工作,他们中的每一个人都使用自己最擅长的程序开发工具从事自己的那部分工作.
编程语言的简要描述
Techno FBD语言针对的使用者是控制工程师. 对PID控制回路的编程而言,很难找到有比Techno FBD更合适的语言了. 使用Techno FBD开发的一个程序表现为一个图表,该图表由连接了输入和输出端的一系列功能模块组成. TRACE MODE6包含了超过150个标准功能模块。这些模块能完成的功能涉及领域很广-从最简单的逻辑操作到自适应调节PID回路控制。滤波、比例积分、微分控制、PDD、模糊控制、位置控制、脉宽调制变换、统计、三角法和集成的用于阀、泵、马达的现成控制算法模块-所有这些都作为标准功能模块包含在TRACE MODE6开发环境中.
Techno LD语言是为熟悉继电器逻辑图编辑的工程们准备的. LD编辑器看上去非常象FBD编辑器,这种程序是用"触点"和"线圈"组成,而不是功能模块. 在用Techno LD编写的程序中可以包括普通FBD功能模块,尽管TRACE MODE6的这一特色超出IEC 6-1131/3标准框架了.
Techno ST语言首先是定位给程序设计者使用的.它是一个与Pascal语言相类似的高级程序设计语言. 它支持矩阵(包括多维矩阵),类型变换监控程序,以及一些象DO - WHILE、REPEAT - UNTIL、FOR - TO - DO、IF - THEN - ELSE、CASE - OF的结构语句.
程序头是按照列出的参数自动生成的,从而可以节省编程时间. 使用字、标记、注解和数值常数用高亮颜色显示,就象在最新的可视化程序设计环境中所采用的那样. 用户可以自己设置颜色背景.
Techno IL是带助记指令的最简单的编程语言,有点类似于Assembler. 这种语言所以包括在IEC 6-1131/3中是为了适应低端控制器的编程需要。在任何处理器中,IL程序都很容易被转换为机器语言码,这样可以保证很快的程序运行速度. 然而,最新的控制器有相当强的性能,Techno IL事实上比之ST或FBD已经不占优势. 尽管如此,这种语言还是包括在TRACE MODE6中,目的是为了支持老式的设备. 这一事实本身再一次说明了IEC 6-1131/3的优越性所在.
Techno SFC程序设计语言是用来建立复杂算法的有效工具. SFC本身不是一种独立的语言. 一个用Techno SFC编写的程序看上去就象一个方框图,这个方框图由程序块(梯阶)、步间的转换和发生这些转换时所依赖的条件组成. 每个程序块,象每个转换条件一样,是一个用任何一种IEC 6-1131/3标准语言编写的程序. 这种语言用来编写批处理和商业应用程序非常方便. Techno SFC可以很容易的被工程师和商业分析员所掌握.
用IEC 6-1131/3语言编写的程序可以在任何其它支持这种标准的编程平台上转换成TRACE MODE6. TRACE MODE6可以编译全部的5种IEC 6-1131/3语言程序,甚至包括机器码形式的SFC!这保证了程序实时 执行时的高速度.
我们使用的大部分是PLC.因为我们设备的控制都是PLC控制,有小点的PLC,也有中型的,主要是提升机控制系统。与我们比较相关的PLC编程语言有,梯形图语言(LD)、指令表语言(IL)、功能模块语言(FBD)、顺序功能流程图语言(SFC)、结构文化本语言(ST)。这五标准编程语言。最容易接受的也就是梯形图语言,梯形图编程语言的特点是:与电气操作原理图相对应,具有直观性和对应性;与原有继电器控制相一致,容易叫电工接受,得到了广泛的欢迎和应用。
RTU的编程语言虽然有梯形图和C语言编程,但在我们不是专业的电工来讲,不太适应,感觉还是PLC比较容易接受。
下面谈谈IEC 61131编程语言的通讯:
IEC 61131标准提供了以下的通讯模式:内部变量通讯模式、全局变量通讯模式、调用参数通讯模式、使用存取路径通讯模式以及通讯块通讯模式等。前三种模式用于一个配置内的通信,通过内部变量和全局变量的建立可以在一个配置内的程序、功能块和功能之间相互连接形成一个网络,数据信息可以通过这个内部的网络进行通讯。
存取路径的通讯模式用于各个配置之间的数据交换,也就是要跨越一个PLC系统的范围,它可用于配置和程序层。存取路径可以认为是全局变量的一个扩展,其符号名由固定格式的语言结构定义,这样通过定义的存取路径的符号名,该配置的变量可为其它配置所访问。
IEC61131-3只给出了一个单一的集中PLC系统的配置机制,为了适应分布式结构的软件要求,PLCOpen组织对IEC61131-3进行了适当的扩展,制定了IEC61499《工业过程测量与控制系统用功能块》标准。按照IEC61499的模型,PLC可表示为其内有多个资源的装置,采用了互联的事件驱动功能块,所给出的应用程序模型,由若干可能分散在多个设备中的功能块互联而成,功能块中的控制算法还用IEC61131-3的语言来编程的,但在系统配置时采取了封装的、可反复使用的和分散的机制。
大部分主流的变成语言基本上都使用的是梯形图,是基于继电器上开点和线圈形象化来的一种变成语言。这与PLC诞生的背景有关。才选用了这种形象化的语言。
随着计算机技术的不断普及及发展,PLC的编程语言又发展到语句表,及功能快。
语句表的编程方式,适用于不需要进行图形化思维转换的人员。这两者的差别可以和使用EXCEL里的函数来表达。大部分人进行求和的时候鼠标点击几下就可以完成求和,但也可以直接通过在单元格里输入SUM函数来完成。
早期有接触过ABB的编程语言,这个基于逻辑函数 与非门方式的编程方式能使人一目了然的所有因素。这个相对与思维属于面思维的这种性格的人来编程非常合适。
这些变成都属于工业控制行业。跳出工控行业来看,计算机编程从最初的进行数学运算的BASIC FORTRAIN,以及汇编语言等,都需要一定的算法及数据结构的知识。
而工业控制的过程算法也是经常被设计的概念。当系统原本的算法无法满足工艺要求的时候,C C++等语言登上了工控舞台。
从面的情况来看,基于一般应用场合现用的编程语言已经能够很好的满足使用,但设计整个底层的时候,各种PLC RTU编程语言,又从行业的高级语言回到计算机的高级语言。
无论是计算机还是工业控制里的编程,都还是基于逻辑化思维化的东西,作为另外一种编程语言---G语言,通过鼠标的拖拽实现编程.
乐高公司的机器人编程将编程这个概念普及到了儿童。如果工控行业的PLC RTU也能将这个概念普及,可能会让更多的人熟悉PLC RTU.
再谈谈单片机方面的编程,这个直接将芯片展现于我们眼前的编程在可视化上比PLC又让人难以理解了.某种程度上这个是基于底层系统的编程.将来用一天,我们在PLC编程的时候,发觉某个应用就是存在问题,这时候我们开始对PLC本身进行编程改进,改进完毕,重新控制变成,然后解决问题.未来的PLC或者RTU要是开放一块单独的区域和接口让用户基与底层编程,这应该是件有用的事.
进厂10多年来虽然主要从事现场仪表的维修维护工作,可也活多或少的接触到一下系统编程,看到题目中提到的的编程语言IEC61131-3坦白的说偶不懂,上网查了一下偶明白了,其实就是偶平常编程用到的功能图、功能块、梯形图、指令表、结构化文本。这里边偶用到的最多的就是功能图功能块。
偶所接触到厂里的两个主要DCS控制系统浙大中控和霍尼韦尔的的程序组态都是依功能块为主导的编程,特别是霍尼韦尔的DCS就如同拼装积木一样,只要我们把系统中封装好的丰富的功能块库中找到需要的功能块,放在一个平台内按照顺序进行组装,然后设置上一些参数,即可实现一个参数的采集、处理、控制、输出、显示等功能,这和我们平常的拼装积木是一个概念,最后结果是摩天大楼还是小桥流水全靠建造师(编程人员)的目的和思路,这种模式是现在社会上应用最广泛的尤其是电子电器方面都是这种模块化组装方式。
浙大中控的DCS组态是这个功能块组态的升级,其把中间的过程都给你组装好了,编程组态人员只需要把这个组装好的大楼设置好进口和出口就行了,每个已经拼装好的模板我们只需要把要处理的信号设置到相应位置即可,就如同我们学习的各种C语言程序一样,我们只需要把预留的接口输入正确的数值即可实现自动处理,这种编程模式更像一个大型的功能块,也可以叫做傻瓜式组态一样,对于使用方来说是最好的事情,因为我们的精力不再用在参数的过程处理中,我们的目的是解决问题,不是怎么解决。
DCS虽然内部也有功能图、语句表和梯形图等三种普遍使用的语言,但人们通常使用的就是功能图块,只有在一些纯逻辑运算或先前功能图块中没有的功能才使用梯形图或语句表来自行编写程序。梯形图能够明晰的表明程序的顺序逻辑过程,但是复杂的运算无法使用梯形图,这种功能大多数用在简单的逻辑功能编程过程中,语句表可以任意编写程序,但对纯逻辑编程则显得啰嗦复杂和逻辑不明显,但能够用在各种数据处理中,这两种功能在PLC中应用最多。
偶厂的PLC主要是西门子的200系列大部分是厂商带来的小型设备系统,由于控制简单大多数是逻辑顺序控制普遍采用的是梯形图编写。300系列的大部分是偶厂自己组态实现的,应用在较大型的设备控制中,由于各种模拟量参数较多,普遍采用语句表编程,这种编程对于模拟量信号的处理和转换非常方便,在多参数的处理中,通常使用语句表编写一个功能,然后在主程序中调用这个功能,可以减少重复的程序编写,其作用与功能块相似。而对于比较繁琐的程序处理PLC封装了好多功能块比如PID控制在组态中就是调用这种封装好的功能块,可以减少组态人员的编程难度提高编程质量。在PLC组态中这三种功能可以互相转换以此来分析程序电路,但很多复杂的编程语言不能够转换成梯形图和功能图,但大部分梯形图和功能图能够转换为语句表,这种转换对于分析程序非常方便。
以上是偶工作中的一点心得,仅做参考。