中国自动化学会专家咨询工作委员会指定宣传媒体
免费注册 登录 广告服务 | 客服中心
您现在所在的是:

国产PLC体验(海为腾控)

抖音 德嘉 泓格论坛 FLIR红外热像论坛
工控论坛首页 国产PLC体验(海为腾控) → 浏览主题: 【话题】廖常初:我心目中理想的国产PLC——程序结构(20110421)
发表新帖 回复该主题
回帖:29个,阅读:5477 [上一页] [1] [2] [3] [下一页]
* 帖子主题:

【话题】廖常初:我心目中理想的国产PLC——程序结构(20110421)

分享到
5994
liaosun
文章数:1398
年度积分:50
历史总积分:5994
注册时间:2003/5/4
发站内信
2015论坛贡献奖
2014论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011博客贡献奖
2010博客杰出贡献奖
发表于:2011/4/21 8:47:01
#0楼
   说起PLC的程序结构,大家都知道PLC有主程序、子程序(S7-300/400称为功能和功能块)和中断程序,好像没有什么好讨论的。实际上不同的PLC的程序结构有很大的区别,程序结构体现了编程思想是否先进,决定了程序是否有很好的可重用性(可移植性)。可以说程序结构是设计一个理想的PLC产品首先应解决的最重要的问题。不少国产PLC在程序结构方面存在较大的问题,采用理想的程序结构的国产PLC不多。例如有一家国产PLC自称与三菱的FX2N兼容,但是居然没有中断功能!
1  几种典型的PLC程序结构
   下面介绍几种常见的PLC的程序结构及其特点:
   1.某些国外的小型PLC的程序结构
   这些PLC的用户程序由主程序、子程序和中断程序组成。在每一个扫描循环周期,CPU都要调用一次主程序。主程序可以调用子程序,小型控制系统可以只有主程序。
   中断程序用于快速响应中断事件。在中断事件发生时,CPU将停止执行当时正在处理的程序或任务,去执行用户编写的中断程序。执行完中断程序后,继续执行被暂停执行的程序或任务。
   它们的子程序和中断程序没有局部变量,子程序没有输入、输出参数。
   2.西门子的S7-200的程序结构
   过程映像输入/输出(I/Q)、变量存储器V、内部存储器位M、定时器T、计数器C等属于全局变量。S7-200的程序组织单元(Program Organizational Unit,简称为POU)包括主程序、子程序和中断程序。每个POU均有自己的64字节局部变量,局部变量只能在它所在的POU中使用。与此相反,全局变量可以在各POU中使用。
下面是子程序可以使用的局部变量:
   1) TEMP (临时变量)是暂时保存在局部数据区中的变量。只有在执行该POU时,定义的临时变量才被使用,POU执行完后,不再保存临时变量的数值。
   2) IN是由调用它的POU提供的输入参数。
   3) OUT是返回给调用它的POU的输出参数(子程序的执行结果)。
   4) IN_OUT是输入_输出参数,其初始值由调用它的POU传送给子程序,并用同一变量将子程序的执行结果返回给调用它的POU。
   主程序和中断程序的局部变量中只有临时变量TEMP。
   具有输入、输出参数和局部变量的子程序易于实现结构化编程,对于长期生产同类设备或生产线的厂家尤为有用。这些厂家的编程人员为设备的各组件或工艺功能编写了大量的通用的子程序。即使不知道子程序的内部代码,只要知道子程序的功能和输入、输出参数的意义,就可以通过程序之间的调用快速“组装”出满足不同用户要求的控制程序。就好像用数字集成电路芯片组成复杂的数字电路一样。
   子程序如果没有输入、输出参数,它和调用它的程序之间没有清晰的接口,很难实现结构化编程。
   子程序如果没有局部变量,它和调用它的程序之间只能通过全局变量来交换数据,子程序内部也只能使用全局变量。将子程序和中断程序移植到别的项目时,需要重新统一安排它们使用的全局变量,以保证不会出现地址冲突。当程序很复杂,子程序和中断程序很多时,这种重新分配地址的工作量非常大。
   如果子程序和中断程序有局部变量,并且它们内部只使用局部变量,不使用全局变量,因为与其他POU没有地址冲突,不需作任何改动,就可以将子程序移植到别的项目中去。
   3.西门子的S7-300/400的程序结构
   S7-300/400将子程序分为功能(Function,或称为函数)和功能块(Function Block)。
   S7-300/400的功能与S7-200的子程序基本上相同。它们均有输入、输出参数和临时变量,功能的局部数据中的返回值实际上属于输出参数。它们没有专用的存储区,功能执行结束后,不再保存临时变量中的数据。
   可以用全局变量来保存那些在功能执行结束后需要保存的数据,但是会影响到功能的可移植性。
   功能块是用户编写的有自己专用的存储区(即背景数据块)的程序块,功能块的输入、输出参数和静态变量存放在指定的背景数据块中,临时变量存储在局部数据堆栈中。每次调用功能块时,都要指定一个背景数据块。功能块执行完后,背景数据块中的数据不会丢失,但是不会保存局部数据堆栈中的数据。
   功能块采用了类似于C++的封装的概念,将程序和数据封装在一起,具有很好的可移植性。
   S7-300/400的共享数据块可供所有的逻辑块使用。
   4.IEC 61131-3的程序结构
   IEC 61131-3是PLC的编程语言标准。IEC 61131-3是世界上第一个,也是至今为止唯一的工业控制领域的编程语言标准。IEC 61131-3有三种POU:程序、功能块和功能。
   功能是有多个输入参数和一个输出参数(返回值)的POU,返回值的名称与功能的名称相同,需要定义返回值的数据类型。调用具有相同输入值的功能总是返回相同的结果。功能可以调用其他功能,但是不能调用功能块或程序。功能可定义的局部变量有VAR和VAR_INPUT。
   功能块是有多个输入/输出参数和内部存储单元的POU,功能块的输出参数值与其内部存储单元的值有关。功能块可以调用其他功能块或功能,但是不能调用程序。
   在调用功能块之前,必须在要调用功能块的POU中为每次调用声明功能块的实例,操作系统将为每次调用分配功能块专用的存储区(类似于S7-300/400的背景数据块)。
   功能因为没有内部存储区,调用时不需要实例化。
   程序的行为和用途类似于功能块,程序具有输入和输出参数,而且可以具有内部存储区。程序通常包含有对功能和功能块的调用。
   IEC 61131-3定义了若干标准的功能和功能块。
   5.S7-300/400与IEC 61131-3程序结构的区别
   1)S7-300/400的功能可以有多个输出参数,返回值也属于输出参数。IEC 61131-3的功能只有一个返回值。
   2)IEC 61131-3的功能块用于保存局部变量的专用存储区是在声明功能块的实例时分配的,它对用户是不透明的,其他POU不能直接访问该存储区。
   S7-300/400的功能块的局部变量(不包括临时变量)保存在它的背景数据块中。其他POU可以访问背景数据块中的变量。如果需要多次调用同一个功能块来控制同一类型的被控对象,每次调用都需要指定一个背景数据块,但是这些背景数据块中的变量又很少,这样在项目中就出现了大量的背景数据块。可以使用多重背景数据块来减少背景数据块的数量。但是需要增加一个用来管理多重背景的功能块。
   3)S7-300/400的功能块的局部变量有临时变量和静态变量,IEC 61131-3的功能块的内部变量Var相当于S7-300/400的静态变量。
   4)S7-300/400将数据区划分为数据块来使用,数据块的大小与数据块中定义的变量的数据类型和变量的个数有关。IEC 61131-3没有数据块的概念。
2  对国产PLC程序结构的建议
   1.小型PLC至少采用类似于S7-200的程序结构
   鉴于局部变量和子程序的输入、输出参数的重要作用,建议小型PLC至少采用类似于S7-200的程序结构,子程序有输入、输出变量,子程序和中断程序有局部变量。
   其缺点是子程序没有专用的存储区,如果在执行完子程序后有需要保存的数据,不能使用子程序的临时局部变量,只能使用全局变量来保存它们。这样的子程序没有完全解决可移植性问题。
   2.建议采用IEC 61131-3的程序结构
   S7-300/400或IEC 61131-3的程序结构比较理想,其功能块内部可以全部使用局部变量,不使用全局变量,彻底解决了程序块的可移植性问题。相对而言,IEC 61131-3的程序结构比较简单。
   有的国产PLC自称符合IEC 61131-3标准,我认为该标准的核心和精髓是程序结构,是检验真假IEC 61131-3的试金石。为了产品的长远发展,建议国产PLC采用IEC 61131-3的程序结构。







[此贴子已经被jint于2011/4/22 8:46:10编辑过]
此帖来自中华工控网工控博客
原文件地址:http://blog.gkong.com/more.asp?id=136317&Name=liaochangchu
我是廖常初,是一个高校的老师,曾在企业从事机械、电气技术工作,长期从事工业控制和PLC应用的教学、科研和工程应用工作。博客中的日志除注明外均为原创。愿意在此与大家探讨工控的问题!
廖常初工控博客地址:http://blog.gkong.com/blog.asp?name=liaochangchu
我曾写过几本小书: 《PLC编程及应用》第3版(S7-200)、《S7-300/400 PLC应用技术》第3版、《FX系列PLC编程及应用》第2版、《S7-200 PLC编程及应用》、《PLC基础及应用》第2版(FX系列大专教材)、《西门子人机界面(触摸屏)组态与应用技术》、《西门子工业通信网络组态编程与故障诊断》、《S7-1200 PLC编程及应用》第2版、《跟我动手学S7-300/400 PLC》、《跟我动手学FX系列PLC》
机械工业出版社廖常初图书专题:http://www.gkong.com/zt/liaochangchu/
38849
jint 管理员
文章数:20683
年度积分:359
历史总积分:38849
注册时间:2007/8/30
发站内信
发表于:2011/4/21 8:57:42
#1楼
各位,谈谈你心中理想的国产PLC是什么样的?

就现在的国产PLC而言,需在哪些方面有所改进?
温馨提示:
电话:0755-26546361
邮箱:blog@gkong.com
微信公众号:工控论坛;微信号gkongbbs;
不定期修改账号密码;不要在多个网站用同一账号密码
可随时站内信联系,工作日可拨打电话或发邮件咨询相关问题
匿名用户
文章数:N/A
年度积分:0
历史总积分:0
注册时间:2005/5/2
发站内信
发表于:2011/4/21 9:04:52
#2楼
该用户被锁定,回复内容不予显示!
36498
cvlsam 版主
文章数:12298
年度积分:850
历史总积分:36498
注册时间:2001/12/22
发站内信
2018论坛贡献奖
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011论坛贡献奖
2011国庆活动
2010论坛杰出贡献奖
发表于:2011/4/21 9:15:53
#3楼
以下是引用小笨熊在2011/4/21 9:04:52的发言:
还是Q**U系列的的PLC的程序结构好!
Q**U的程序结构:主程序、子程序、FB等,即平行又可以父子程序,同时处理数据支持4bit(1位BCD数据);数据处理支持任意连续内存(例如K4M101,K3X051,),对呀西门子来说,高低字节排布都与正常人不同。

高低字节的排布不同取决于其使用的ARM的存储结构的不同,这和西门子有什么关系呢?

Q系列仍然无法摆脱单处理器顺序执行的运行方式,觉得他好你让并行处理的那些PLC厂家情何以堪。

水平不行,谈吐也不行……






[此贴子已经被jint于2011/5/4 12:03:06编辑过]
2457
易控微网
文章数:385
年度积分:50
历史总积分:2457
注册时间:2002/10/8
发站内信
发表于:2011/4/21 9:41:23
#4楼
不要动则扣帽子嘛,不要动则骂人。修养太差
www.tengcon.com    专业的PLC,RTU研发,生产,供货商
12621
ascent
文章数:7767
年度积分:50
历史总积分:12621
注册时间:2007/11/14
发站内信
2011国庆活动
发表于:2011/4/21 11:17:16
#5楼
现在市场对PLC需求量比较大
国产的产品以后肯定能在市场上立足
售后服务是关键。
滁州特产------琅琊酥糖、贡菊,需要的请站内联系。
4534
zhengpan2010
文章数:2695
年度积分:50
历史总积分:4534
注册时间:2010/9/13
发站内信
发表于:2011/4/21 12:29:31
#6楼
国产PLC应该吸取各家所长为己用并在这个基础上加上改革创新 利用国人熟悉的思维方式
匿名用户
文章数:N/A
年度积分:0
历史总积分:0
注册时间:2005/5/2
发站内信
发表于:2011/4/21 16:43:46
#7楼
该用户被锁定,回复内容不予显示!
12287
智能ABC/Z
文章数:4636
年度积分:49
历史总积分:12287
注册时间:2006/2/11
发站内信
2015春节活动
2010年度论坛贡献奖
2010年四月影像
发表于:2011/4/21 19:17:18
#8楼
哪位大虾来推荐几个国产PLC品牌啊。
 活到老,学到老!感受生活,也享受生活!
6080
fzl_115
文章数:488
年度积分:59
历史总积分:6080
注册时间:2007/1/24
发站内信
发表于:2011/4/21 21:05:05
#9楼
楼上大虾在忽悠人呢!表情
对于很多学习者来说,能从廖老师这个帖子中知道些东西!谢谢!
工控学堂推荐视频:

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

93.6006