PLC学习第一篇:PLC程序架构

 前言:PLC资料获取

汇川官网,可以下载汇川PLC相关资料

倍福虚拟学院

西门子工业支持网站,西门子系列PLC的编程手册都可以查到 

1、PLC编程语言发展

        在PLC发展的早期阶段,由于没有统一的国际标准,各个制造商使用不同的编程语言,对使用不同厂家元件进行组态的使用者造成了很多不变。因此,国际电工委员会颁布了IEC-61131标准。该标准一共包括十个部分,截止至2022年9月,其中1-9部分已转换为国标GB/T 15969系列。 

      推荐几个可以查阅标准的网站,由于上述标准都是采标,涉及版权,因此都不能预览:

         全国标准信息公共服务平台(收录较全面,可预览文件多。部分国家标准未录入,如工程建设、食品安全)

         国家标准馆(收录全面,提供大多数国标的预览,需安装Flash插件)

         国家标准全文公开系统(收录相对较少,都可预览)

2、PLC编程语言与程序架构

参考文章 

几类常用PLC程序架构研究

标准工业控制编程语言IEC61131-3简述 

传统PLC架构

        传统的PLC架构一般由主程序(Main)、子程序(SBR)和中断程序(INT)组成。以西门子PLC 200为例,其官方定义的这几类组成部分的含义分别为:

         1、主程序:主程序中包括控制应用的指令。S7--200在每一个扫描周期中顺序执行这些指令。主程序也被表示为 OB1。

         2、子程序:只有在调用时才执行程序的这些可选单元:由主程序、中断程序或另一个子程序执行。当您希望重复 执行某项功能时,子程序是非常有用的。与其在主程序中的不同位置多次使用相同的程序代码,不如 将这段程序逻辑写在子程序中,然后在主程序中需要的地方调用。调用子程序有如下优点:

         用子程序可以减小程序的长度

         由于将代码从主程序中移出,因而用子程序可以缩短程序扫描周期。S7--200在每个扫描周期 中处理主程序中的代码,不管代码是否执行。而子程序只有在被调用时,S7--200才会处理其 代码。在不调用子程序时,S7--200不会处理其代码。

         用子程序创建的程序代码是可传递的。您可以在一个子程序中完成一个独立的功能,然后将它 复制到另一个应用程序中而无需作重复工作

         3、中断程序是应用程序中的可选组件。当特定的中断事件发生时,中断程序执行。您可以为一个预先定 义好的中断事件设计一个中断程序。当特定的事件发生时,S7--200会执行中断程序。 中断程序不会被主程序调用。只有当中断程序与一个中断事件相关联,且在该中断事件发生时, S7--200才会执行中断程序。

        除此之外,还有系统块(系统块允许您为S7--200组态不同的硬件参数。)和数据块(数据块存储应用程序中所使用的不同变量值(V存储器)。可以用数据块输入数据的初始值。)

 西门200PLC手册中程序组件示例

IEC61131-3定义的程序架构

        IEC61131-3定义定义了3种图形语言:梯形图(LAD)、功能块图(FBD)和顺序功能图(SFC),两种文本语言:结构化文本(ST)和指令表(IL)。

         IEC61131-3定义的编程思想是模块化的,它定义了最小软件单元POU(Program Organization Unit),POU总共分为三种,按照功能升序排列,分别为函数(Function,FUN)、功能块(Function Block,FB)和程序(Program,PROG)。

IEC61131-3中对3种POU的描述 

        函数和功能块之间的区别是输入相同参数时,函数得到结果是相同的,数学计算的加减乘除都是函数,只要输入的参数相同,结果一定相同。运动控制指令是功能块,它有静态参数,在使用时要先给静态参数赋值,不同的电机静态参数不同,因此即使输入相同的动态参数,得到的结果也不一定相同。程序代表PLC用户的最高层,它能存取PLC的I/O变量。

不同POU之间的调用关系,POU不允许递归调用,即调用本身 

         IEC61131-3对块的分类方式是由的德国DIN 19239标准演变而来,目前我接触的PLC品牌有倍福、西门子和汇川。其中倍福和汇川的AM600PLC程序架构是以IEC61131-3的程序架构为标准的,西门子的1500和1200系列PLC保留DIN19239中定义的一些命名,但是程序架构的思路与IEC61131-3基本相同,而西门子200系列PLC则是以传统PLC架构编程。

IEC61131-3标准中的程序架构演变图

        西门子1200PLC中对各个块的定义:

        组织块 (OB) 定义程序的结构。 有些 OB 具有预定义的行为和启动事件,但用户也可以创 建具有自定义启动事件的 OB。 

        功能 (FC) 和功能块 (FB) 包含与特定任务或参数组合相对应的程序代码。 每个 FC 或 FB 都 提供一组输入和输出参数,用于与调用块共享数据。 FB 还使用相关联的数据块(称为背 景数据块)来保存该 FB 调用实例的数据值。 可多次调用 FB,每次调用都采用唯一的背 景数据块。 调用带有不同背景数据块的同一 FB 不会对其它任何背景数据块的数据值产 生影响。

        数据块 (DB) 存储程序块可以使用的数据。

        下图中示出基本的高级语言元素及其相互关系。这些元素是IEC61131-3定义的语言进行编程的元素,即:程序和功能块及支持将 PLC程序装人PLC系统的配置元素,即:配置、资源、任务、全局变量、存取路径 ,以及实例专用的初始化。

国标15969-3中对软件模型的示意 

         其中配置和资源可以理解为PLC在硬件层面的组态,比如选用什么型号的PLC,PLC有多少个I/O模块,这些东西确定好后可以编写程序。在IEC61131-3中,程序必须被添加到任务(task)中才能执行。 

         下图显示了各个元素之间的运行关系

IEC61131-3对软件架构的示意

​总结

        IEC61131-3定义的程序架构相对传统架构增加了很多新的定义,这是因为现在的PLC程序逐渐规模化,传统架构在编写大型程序时不够灵活,程序编写工作也难以分工。因此,模块化编程思路逐渐兴起,可以理解为PLC的编程正在从面向过程转向为面向对象,未来,以ST语言为主的多语言混合编程肯定会成为主流。

  • 6
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值