作为工控人,或多或少的都接触过程序设计,不论是DCS、PLC、RTU,产品厂家出厂的都是标准的产品,需要工程师去结合项目特点、现场工艺完成功能设计,这就需要编程,目前主流控制器都支持IEC61131-3编程语言,还有个别产品支持C/C++编程。请谈谈您使用这些语言一些心得,或者他们的各自的特点。
-
-
yujie0612 发表于 2016/11/10 19:59:22
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。
引用 yujie0612 2016/11/10 19:59:22 发表于2楼的内容
-
-
xueba 发表于 2016/11/11 19:48:26
用于开发控制系统和商业管理系统的TRACE MODE6编程工具面向不同领域的软件工程师. TRACE MODE6包含的五种编程语言为:Techno SFC、Techno LD、Techno FBD、Techno ST和Techno IL.IEC 6-1131/3 TRACE MODE 6 controller programming languages
这些语言是下列IEC 6-1131/3标准语言的扩展:
SFC(顺序功能图);
LD(梯形图);
FBD(功能块);
ST(结构化文本);
IL(指令表).
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!这保证了程序实时 执行时的高速度.
引用 xueba 2016/11/11 19:48:26 发表于3楼的内容
-
-
aaing 发表于 2016/11/11 19:58:21
RTU具有梯形图和C语言编程,屏幕组态软件编程。逻辑梯形图程序可完成一般的计算、逻辑控制、PID回路控制等功能;C程序可完成复杂的计算、逻辑控制、PID回路控制等功能,也可以实现自定义的通讯协议;屏幕组态程序完成屏幕画面的组态显示。 PLC只具有逻辑梯形图的语言4楼 回复本楼
引用 aaing 2016/11/11 19:58:21 发表于4楼的内容
-
-
sweect 发表于 2016/11/12 12:53:43
我使用的PLC也很多;但是让我感觉比较好的一点;就是南大傲拓PLC;无论小型还是中型号;都支持结构文本;
他在编写一些循环语句,或者CASE语句;做一些复杂的算法的时候比较方便!
引用 sweect 2016/11/12 12:53:43 发表于5楼的内容
-
-
henryen 发表于 2016/11/12 12:57:38
我们使用的大部分是PLC.因为我们设备的控制都是PLC控制,有小点的PLC,也有中型的,主要是提升机控制系统。与我们比较相关的PLC编程语言有,梯形图语言(LD)、指令表语言(IL)、功能模块语言(FBD)、顺序功能流程图语言(SFC)、结构文化本语言(ST)。这五标准编程语言。最容易接受的也就是梯形图语言,梯形图编程语言的特点是:与电气操作原理图相对应,具有直观性和对应性;与原有继电器控制相一致,容易叫电工接受,得到了广泛的欢迎和应用。
RTU的编程语言虽然有梯形图和C语言编程,但在我们不是专业的电工来讲,不太适应,感觉还是PLC比较容易接受。
引用 henryen 2016/11/12 12:57:38 发表于6楼的内容
-
引用 luck 2016/11/13 10:36:08 发表于7楼的内容
-
-
hebby 发表于 2016/11/13 10:37:12
我站在维护和使用者的角度看,PLC比较容易叫我们接受,主要是它的梯形图接近我们的电气原理图,看起来直观。对一些专业的自动化工控们,或许对RTU更比较接受,它具有梯形图和C语言编程,使用更加全面。8楼 回复本楼
引用 hebby 2016/11/13 10:37:12 发表于8楼的内容
-
引用 ababab 2016/11/13 16:56:31 发表于9楼的内容
-
-
atmupkeep 发表于 2016/11/14 18:38:26
我在试用了腾控PLC后,发现该PLC除了前期设置稍微不太顺利外,后期编程很顺手,而且定义变量时候如果没有的会自动生成,在编译时还能很直观的发现哪些变量未使用,然后可以将其删除,这样可以节省内存!同时该PLc拥有多个通信接口,在一般情况下我们可以直接用以太网进行下载,并能方便的远程控制下载和调试,另外由于拥有多个接口,在现场运用的时候也就能不用将触摸屏和其它通信组件断开调试,这样可以更加直观的调试设备!
引用 atmupkeep 2016/11/14 18:38:26 发表于10楼的内容
-
-
fung 发表于 2016/11/14 18:57:30
进厂10多年来虽然主要从事现场仪表的维修维护工作,可也活多或少的接触到一下系统编程,看到题目中提到的的编程语言IEC61131-3坦白的说偶不懂,上网查了一下偶明白了,其实就是偶平常编程用到的功能图、功能块、梯形图、指令表、结构化文本。这里边偶用到的最多的就是功能图功能块。 偶所接触到厂里的两个主要DCS控制系统浙大中控和霍尼韦尔的的程序组态都是依功能块为主导的编程,特别是霍尼韦尔的DCS就如同拼装积木一样,只要我们把系统中封装好的丰富的功能块库中找到需要的功能块,放在一个平台内按照顺序进行组装,然后设置上一些参数,即可实现一个参数的采集、处理、控制、输出、显示等功能,这和我们平常的拼装积木是一个概念,最后结果是摩天大楼还是小桥流水全靠建造师(编程人员)的目的和思路,这种模式是现在社会上应用最广泛的尤其是电子电器方面都是这种模块化组装方式。 浙大中控的DCS组态是这个功能块组态的升级,其把中间的过程都给你组装好了,编程组态人员只需要把这个组装好的大楼设置好进口和出口就行了,每个已经拼装好的模板我们只需要把要处理的信号设置到相应位置即可,就如同我们学习的各种C语言程序一样,我们只需要把预留的接口输入正确的数值即可实现自动处理,这种编程模式更像一个大型的功能块,也可以叫做傻瓜式组态一样,对于使用方来说是最好的事情,因为我们的精力不再用在参数的过程处理中,我们的目的是解决问题,不是怎么解决。 DCS虽然内部也有功能图、语句表和梯形图等三种普遍使用的语言,但人们通常使用的就是功能图块,只有在一些纯逻辑运算或先前功能图块中没有的功能才使用梯形图或语句表来自行编写程序。梯形图能够明晰的表明程序的顺序逻辑过程,但是复杂的运算无法使用梯形图,这种功能大多数用在简单的逻辑功能编程过程中,语句表可以任意编写程序,但对纯逻辑编程则显得啰嗦复杂和逻辑不明显,但能够用在各种数据处理中,这两种功能在PLC中应用最多。 偶厂的PLC主要是西门子的200系列大部分是厂商带来的小型设备系统,由于控制简单大多数是逻辑顺序控制普遍采用的是梯形图编写。300系列的大部分是偶厂自己组态实现的,应用在较大型的设备控制中,由于各种模拟量参数较多,普遍采用语句表编程,这种编程对于模拟量信号的处理和转换非常方便,在多参数的处理中,通常使用语句表编写一个功能,然后在主程序中调用这个功能,可以减少重复的程序编写,其作用与功能块相似。而对于比较繁琐的程序处理PLC封装了好多功能块比如PID控制在组态中就是调用这种封装好的功能块,可以减少组态人员的编程难度提高编程质量。在PLC组态中这三种功能可以互相转换以此来分析程序电路,但很多复杂的编程语言不能够转换成梯形图和功能图,但大部分梯形图和功能图能够转换为语句表,这种转换对于分析程序非常方便。 以上是偶工作中的一点心得,仅做参考。11楼 回复本楼
引用 fung 2016/11/14 18:57:30 发表于11楼的内容