找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4839|回复: 12

常见的PLC的程序结构及其特点

 火.. [复制链接]
  • 打卡等级:常驻代表
  • 打卡总天数:34
  • 打卡月天数:6
  • 打卡总奖励:9027
  • 最近打卡:2025-12-17 23:15:51

2823

主题

541

回帖

2万

积分

管理员

积分
22569
发表于 2020-4-23 20:05:56 | 显示全部楼层 |阅读模式
下面介绍几种常见的PLC的程序结构及其特点:

1.某些国外的小型PLC的程序结构 这些PLC的用户程序由主程序、子程序和中断程序组成。在每一个扫描循环周期,CPU都要调用一次主程序。主程序可以调用子程序,小型 控制系统 可以只有主程序。中断程序用于快速响应
下面介绍几种常见的PLC的程序结构及其特点:

  1.某些国外的小型PLC的程序结构

  这些PLC的用户程序由主程序、子程序和中断程序组成。在每一个扫描循环周期,CPU都要调用一次主程序。主程序可以调用子程序,小型控制系统可以只有主程序。中断程序用于快速响应中断事件。在中断事件

发生时,CPU将停止执行当时正在处理的程序或任务,去执行用户编写的中断程序。执行完中断程序后,继续执行被暂停执行的程序或任务。它们的子程序和中断程序没有局部变量,子程序没有输入、输出参数。
  2.西门子的S7-200的程序结构

  过程映像输入/输出(I/Q)、变量存储器V、内部存储器位M、定时器T、计数器C等属于全局变量。S7-200的程序组织单元(ProgramOrganizationalUnit,简称为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,或称为函数)和功能块(FunctionBlock)。

  S7-300/400的功能与S7-200的子程序基本上相同。它们均有输入、输出参数和临时变量,功能的局部数据中的返回值实际上属于输出参数。它们没有专用的存储区,功能执行结束后,不再保存临时变量中的数据可以用全局变量来保存那些在功能执行结束后需要保存的数据,但是会影响到功能的可移植性。 功能块是用户编写的有自己专用的存储区(即背景数据块)的程序块,功能块的输入、输出参数和静态变量存放在指定的背景数据
  可以用全局变量来保存那些在功能执行结束后需要保存的数据,但是会影响到功能的可移植性。

  功能块是用户编写的有自己专用的存储区(即背景数据块)的程序块,功能块的输入、输出参数和静态变量存放在指定的背景数据块中,临时变量存储在局部数据堆栈中。每次调用功能块时,都要指定一个背景数据块。功能块执行完后,背景数据块中的数据不会丢失,但是不会保存局部数据堆栈中的数据。

  功能块采用了类似于C++的封装的概念,将程序和数据封装在一起,具有很好的可移植性。

  S7-300/400的共享数据块可供所有的逻辑块使用。

  4.IEC61131-3的程序结构

  IEC61131-3是PLC的编程语言标准。IEC61131-3是世界上第一个,也是至今为止唯一的工业控制领域的编程语言标准。IEC61131-3有三种POU:程序、功能块和功能。

  功能是有多个输入参数和一个输出参数(返回值)的POU,返回值的名称与功能的名称相同,需要定义返回值的数据类型。调用具有相同输入值的功能总是返回相同的结果。功能可以调用其他功能,但是不能调用功能块或程序。功能可定义的局部变量有VAR和VAR_INPUT。

  功能块是有多个输入/输出参数和内部存储单元的POU,功能块的输出参数值与其内部存储单元的值有关。功能块可以调用其他功能 块或功能,但是不能调用程序。 在调用功能块之前,必须在要调用功能块的POU中为每次调用声明功能块的实例,操作系统将为每次调用分配功能块专用的存储区
  (类似于S7-300/400的背景数据块)。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
工控课堂 www.gkket.com

0

主题

162

回帖

500

积分

中级会员

积分
500
发表于 2020-4-23 20:05:57 | 显示全部楼层
楼主您的技术水准,我最服你,其他都是浮云
工控课堂 www.gkket.com

0

主题

73

回帖

373

积分

注册会员

积分
373
发表于 2020-10-24 12:36:13 | 显示全部楼层
感谢楼主无私分享!
工控课堂 www.gkket.com

0

主题

108

回帖

320

积分

注册会员

积分
320
发表于 2025-11-12 11:19:43 | 显示全部楼层
这评论区卧虎藏龙,个个都是人才!
工控课堂 www.gkket.com

0

主题

88

回帖

124

积分

新手上路

积分
124
发表于 2025-11-12 23:51:17 | 显示全部楼层
同款经历!我当初也这么过来的😂
工控课堂 www.gkket.com

0

主题

87

回帖

277

积分

注册会员

积分
277
发表于 2025-11-13 01:23:39 | 显示全部楼层
楼主太会说了,字字句句都在理~
工控课堂 www.gkket.com

0

主题

83

回帖

309

积分

注册会员

积分
309
发表于 2025-11-13 02:50:30 | 显示全部楼层
打卡路过,支持优质原创内容~
工控课堂 www.gkket.com

0

主题

62

回帖

242

积分

注册会员

积分
242
发表于 2025-11-13 03:08:52 | 显示全部楼层
救命!这波发言太秀了,直接原地封神~
疯狂认同!楼主说出了我不敢说的话
工控课堂 www.gkket.com

0

主题

129

回帖

257

积分

注册会员

积分
257
发表于 2025-11-13 23:35:16 | 显示全部楼层
谁懂啊!这内容我能循环看十遍
工控课堂 www.gkket.com

0

主题

80

回帖

115

积分

新手上路

积分
115
发表于 2025-11-15 12:43:07 | 显示全部楼层
谁懂啊!真的被戳中笑点 / 泪点了
工控课堂 www.gkket.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|手机版|免责声明|本站介绍|工控课堂 ( 沪ICP备20008691号-1 )

GMT+8, 2025-12-22 23:37 , Processed in 0.086250 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表