前言: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程序架构相关推荐

  1. 信捷plc,9伺服通用程序架构

    信捷plc,9伺服通用程序架构,程序已经升级,程序高度模块化,可轻易拓展十几二十多个轴,,plc是目前性价比最高的方案,60个点10轴高速脉冲输出,走s形,正弦曲线加减速. 程序采用C语言 + 梯形图 ...

  2. VUE源码学习第一篇--前言

    一.目的 前端技术的发展,现在以vue,react,angular为代表的MVVM模式以成为主流,这三个框架大有三分天下之势.react和angular有facebook与谷歌背书,而vue是以一己之 ...

  3. MongoDB学习第一篇 --- Mac下使用HomeBrew安装MongoDB

    2019独角兽企业重金招聘Python工程师标准>>> MongoDB学习第一篇 --- Mac下使用HomeBrew安装MongoDB 0.确保mac已经安装了HomeBrew ( ...

  4. Qt学习笔记,Qt程序架构设计要旨

    Qt学习笔记,Qt程序架构设计要旨 时间过得很快,转眼学习Qt已经有一个多月了,对Qt的学习也在不断的深入中.自己手下的code也很多了,不过不得不说,还有很多的部分没有接触过,比如网络编程,2D,3 ...

  5. Python中的TCP的客户端UDP学习----第一篇博客

    Python中的TCP的客户端&UDP学习--第一篇博客 PS: 每日的怼人句子"我真想把我的脑子放到你的身体里,让你感受一下智慧的光芒" 先说UDP流程 发送: 创建套接 ...

  6. RISC-V学习-第一篇[指令类型]

    本文是RVSC-V处理器学习的第一篇文章,对RV32IMAFDC指令集的学习笔记. 1. 运算指令 立即数运算指令 addi rd,rs1,imm[11:0] 功能 1.将rs1与12位立即数(进行符 ...

  7. Python编程学习第一篇——Python零基础快速入门(三)——10行代码画朵花

    上一节讲了一些Python编程的一些基础知识,从这节开始,我们将跟随一些实际的小程序示例,进入正式的编程学习.       下面我们就来介绍一下今天这个只有10行代码的小程序,先来看一下它的运行效果, ...

  8. Java图像处理最快技术:ImageJ 学习第一篇

    ImageJ是世界上最快的纯Java的图像处理程序.它可以过滤一个2048x2048的图像在0.1秒内(*).这是每秒40万像素!ImageJ的扩展通过使用内置的文本编辑器和Java编译器的Image ...

  9. springCloud 学习第一篇(介绍以及Rest 学习:服务者 与消费者 环境搭建)

    什么是SpringCloud? springCloud ,基于springBoot 提供了一套微服务解决方案,包括服务注册与发现,配置中心全链路监控,服务网关,负载均衡,熔断器等组件,除了基于netF ...

最新文章

  1. 消息幂等(去重)通用解决方案
  2. GET和POST有什么区别?及为什么网上的多数答案都是错的
  3. 大数据征信应用与启示 ——以美国互联网金融公司 ZestFinance为例
  4. QList模板类常用接口函数
  5. IPsec   在企业网中的应用
  6. 【Flink】Flink Association with remote system akka Connection refused
  7. 用Java开发一个停车场系统
  8. Android开发笔记(一百三十五)应用栏布局AppBarLayout
  9. 深度学习之卷积神经网络CNN及tensorflow代码实现示例详细介绍(转载)
  10. python 微信扫码登录_python实现微信第三方网站扫码登录(Django)
  11. JAVA小项目--商品管理系统
  12. 常用计算机故障的判断方法有哪些,常用汽车故障基本诊断方法
  13. 断点续传 scp rsync
  14. Ansys2020r2 提示The requested data is not available.The ETABLE command is ignored
  15. ARPG角色扮演页游《明朝江湖》全套代码
  16. python 保存图片
  17. CIDR表示IP地址
  18. 从新手运气看幸存者偏差
  19. Web前端技术 Web学习资料 Web学习路线 Web入门宝典(不断更新中)
  20. 计算机组成原理:简单页表和多级页表(虚拟内存的映射)

热门文章

  1. android 电子书框架,[Android] Pdf开发框架使用
  2. 老铁们!推荐两款效率神器,一用就舍不得丢了
  3. 孪生素数【函数实现】
  4. 希利苏斯起始任务_希利苏斯战地任务快速完成方法 大地之击半天入手
  5. Java爬虫_资源网站爬取实战
  6. 小知识点:抛物线的顶点式方程
  7. 成年人的世界,早把情绪戒了
  8. python基础语法(三)
  9. 【转载】纯CSS3实现飘逸洒脱带有飞行效果的三级下拉菜单
  10. vb.net操作数据库之ACCESS(3)