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语言为主的多语言混合编程肯定会成为主流。
PLC学习第一篇:PLC程序架构相关推荐
- 信捷plc,9伺服通用程序架构
信捷plc,9伺服通用程序架构,程序已经升级,程序高度模块化,可轻易拓展十几二十多个轴,,plc是目前性价比最高的方案,60个点10轴高速脉冲输出,走s形,正弦曲线加减速. 程序采用C语言 + 梯形图 ...
- VUE源码学习第一篇--前言
一.目的 前端技术的发展,现在以vue,react,angular为代表的MVVM模式以成为主流,这三个框架大有三分天下之势.react和angular有facebook与谷歌背书,而vue是以一己之 ...
- MongoDB学习第一篇 --- Mac下使用HomeBrew安装MongoDB
2019独角兽企业重金招聘Python工程师标准>>> MongoDB学习第一篇 --- Mac下使用HomeBrew安装MongoDB 0.确保mac已经安装了HomeBrew ( ...
- Qt学习笔记,Qt程序架构设计要旨
Qt学习笔记,Qt程序架构设计要旨 时间过得很快,转眼学习Qt已经有一个多月了,对Qt的学习也在不断的深入中.自己手下的code也很多了,不过不得不说,还有很多的部分没有接触过,比如网络编程,2D,3 ...
- Python中的TCP的客户端UDP学习----第一篇博客
Python中的TCP的客户端&UDP学习--第一篇博客 PS: 每日的怼人句子"我真想把我的脑子放到你的身体里,让你感受一下智慧的光芒" 先说UDP流程 发送: 创建套接 ...
- RISC-V学习-第一篇[指令类型]
本文是RVSC-V处理器学习的第一篇文章,对RV32IMAFDC指令集的学习笔记. 1. 运算指令 立即数运算指令 addi rd,rs1,imm[11:0] 功能 1.将rs1与12位立即数(进行符 ...
- Python编程学习第一篇——Python零基础快速入门(三)——10行代码画朵花
上一节讲了一些Python编程的一些基础知识,从这节开始,我们将跟随一些实际的小程序示例,进入正式的编程学习. 下面我们就来介绍一下今天这个只有10行代码的小程序,先来看一下它的运行效果, ...
- Java图像处理最快技术:ImageJ 学习第一篇
ImageJ是世界上最快的纯Java的图像处理程序.它可以过滤一个2048x2048的图像在0.1秒内(*).这是每秒40万像素!ImageJ的扩展通过使用内置的文本编辑器和Java编译器的Image ...
- springCloud 学习第一篇(介绍以及Rest 学习:服务者 与消费者 环境搭建)
什么是SpringCloud? springCloud ,基于springBoot 提供了一套微服务解决方案,包括服务注册与发现,配置中心全链路监控,服务网关,负载均衡,熔断器等组件,除了基于netF ...
最新文章
- 消息幂等(去重)通用解决方案
- GET和POST有什么区别?及为什么网上的多数答案都是错的
- 大数据征信应用与启示 ——以美国互联网金融公司 ZestFinance为例
- QList模板类常用接口函数
- IPsec 在企业网中的应用
- 【Flink】Flink Association with remote system akka Connection refused
- 用Java开发一个停车场系统
- Android开发笔记(一百三十五)应用栏布局AppBarLayout
- 深度学习之卷积神经网络CNN及tensorflow代码实现示例详细介绍(转载)
- python 微信扫码登录_python实现微信第三方网站扫码登录(Django)
- JAVA小项目--商品管理系统
- 常用计算机故障的判断方法有哪些,常用汽车故障基本诊断方法
- 断点续传 scp rsync
- Ansys2020r2 提示The requested data is not available.The ETABLE command is ignored
- ARPG角色扮演页游《明朝江湖》全套代码
- python 保存图片
- CIDR表示IP地址
- 从新手运气看幸存者偏差
- Web前端技术 Web学习资料 Web学习路线 Web入门宝典(不断更新中)
- 计算机组成原理:简单页表和多级页表(虚拟内存的映射)