在工业自动化领域,梯形图逻辑仍然是最常用的编程语言之一,但对于更加复杂的控制对象,面向对象编程不失为一种高效率的方式。下面先来谈谈面向对象编程:

面向对象编程是计算机高级语言的一种先进的编程模式,在工业控制系统的PLC程序中也可以采用这种设计思想,虽然我们无法实现面向对象的很多优秀特点如“继承”,甚至于它根本就不具备面向对象编程语言的特点,但面向对象编程的基本概念就是类和类的实例(即对象),我们只需要使用这种概念就可以了。在计算机编程中我们需要把一些事物抽象和归纳,才能编写类,而在工业控制系统中,控制对象如:电机,阀等等是很明显的控制类别,不需要抽象就可以很明显的针对它们编写类,以下将会用到西门子的Step7编程语言和施奈德的Unity 编程语言来讲解PLC的面向对象编程。

一、 实现方式

面向对象编程在Step7中使用功能块(即FB)编程,一谈到此大家就会想到西门子提出的模块化编程,不错,就是这个模块化编程,但西门子提出的模块化、背景数据块、多重背景等名词并不能让大家很明白的理解和使用这种优秀的设计理念。如果大家从面向对象编程的角度去理解,则可以很好的理解这种设计模式。“FB块”被看 成“类”,它可以被看成是对相似的控制对象的代码归纳,如对MM440的变频器可以编写FB块:MtrMM440,这在面向对象编程中称为“类”,当需要 编程控制具体的电机时,可以给它分配一个背景DB块,在面向对象编程中称为类的实现(即创建类的实例:对象),当需要控制多个电机时,可以分配不同的背景 DB到这个FB块,即创建类的多个实例。Step7中有另外一种程序块,即FC块,以FC块为主的编程在西门子中称为结构化编程,这也可以类比于计算机编程中的面向过程编程,即纯粹以函数为主体的编程。

施奈德的Unity软件编程可以更好的理解面向对象编程。它的DFB定义中包含输入/输出参数,私有/共有变量,以及代码实现,而这正是计算机的面向对象 编程中“类”的基本元素,而创建类的实例(对象)就像创建普通的“布尔”变量一样,只需在“Function Blocks”中定义这种“类”的变量即可。

Step7和Unity都可以采用面向过程和面向对象编程方式,这两种编程方式的区别类似于计算机高级语言中的C语言和C++语言编程的区别。

以下的讲解将会把Step7中的FB和Unity中的DFB称为“类”,Step7中的FB+背景DB以及Unity中DFB的实例称为“对象”。

二、 面向对象编程架构

以上讲解的是实现细节,而编程思想是建立在程序架构上的,不是某个局部使用了面向对象方式,则可以称之为这种编程就是面向对象编程。这种编程需要从以下方面着手:

1、 电路设计的结构化。

这里主要以自动线为主介绍,对于单机机床可以是它的简化结构:

<1>、自动线层:这是最高层次,它拥有一个主PLC,对属于它下面的各区域控制

<2>、工程层:拥有独立的配送电系统,但没有PLC,只有分布式模块,由自动线控制。顾名思义,它有着较大的独立性,可以作为一个单独的工程项目设计和制造,当自动线比较小时,可以省略该层次。

<3>、功能组层:根据工艺划分,将实现某一个工艺功能的区段设备划分为一个功能组,它隶属于工程层,当工程层被省略时,隶属于自动线层。

面向对象编程并不一定要求使用以上的结构,但好的电气结构更利于面向对象编程。

2、 任何控制对象逻辑都在“类”中实现。

为了做到这点,必须分析与控制对象相关的信息,譬如,对于一个电机,有以下相关的信息需要考虑:

输入信息:

<1>、电路保护信息,如电机的空气开关,热继电器等。

<2>、功能保护信息,如运动电机的限位开关,风机的风压开关,油泵的油位开关等。

<3>、启动和终止条件,以上的电路保护和功能保护都可能导致电机运转终止,复位也可能导致重启动,但这里的条件指的是正常运行的启动和终止条件,譬如顺序控制的流程步。

<4>、控制模式:如手动和自动等。

<5>、故障复位:通过复位信息,重新启动。

输出信息:

<1>、控制输出,如控制电机的主接触器。

<2>、状态信息输出

<3>、故障输出

.........

状态储存信息:

用于代码实现的中间变量以及可以被人机界面读出的状态变量等。

把以上信息都整合到一个类中,并尽量使类的参数标准化。不过,同高级编程语言还是曾在一些差别,针对Step7,应该遵循的标准是:程序结构由FC实现,对象控制由FB实现,如下的一种结构体系(其电气结构来自上面的介绍):这只不过是一个粗略的PLC程序架构体系,好的架构应该更完善和科学。

3、 规划好数据结构

数据结构的定义相当重要,并尽量统一这些结构,不要顾虑存储空间,当今的PLC内存足以容纳大量的数据。说明一点的是在Step7中尽量不要在类的外部定义数据结构(UDT),而是在类里面定义,虽然会造成不同类中同一结构的重复性定义,但却提高了类的独立性。

在接下来的篇幅中,我们来对比一下这两种编程方式:

plc和c语言谁的前景好,PLC面向对象编程和梯形图逻辑,到底谁更实用一些?相关推荐

  1. plc 编程 c语言编程实例,PLC面向对象编程和梯形图编程,谁OUT了?

    在工业自动化领域,梯形图逻辑仍然是最常用的编程语言之一,但对于更加复杂的控制对象,面向对象编程不失为一种高效率的方式.下面先来谈谈面向对象编程: 面向对象编程是计算机高级语言的一种先进的编程模式,在工 ...

  2. 【Java开发语言 03】第三章 面向对象编程(面向对象与面向过程+类和对象+类成员一:属性+类成员二:方法+对象的创建和使用+封装和隐藏+构造器+关键字this,package,import)

    面向对象编程 1 面向对象与面向过程 1.1 java类及类的成员 2 java语言的基本元素:类和对象 2.1 类的语法格式 2.2 创建Java自定义类 2.3 对象的创建及使用 3 类的成员之一 ...

  3. 三菱plc支持c语言,5.三菱FX系列PLC支持哪种编程方式.

    菱F列以"病人为中心"的优质护理服务工作模式是 支持"礼乐征伐自天子出"出自(). 编程"孝悌也者,其为人之本与."出自(). 菱F列被称为 ...

  4. plc变频器c语言,常州plc变频器培训(PLC的实用性)

    常州plc变频器培训,生活的船不能没有理想的帆,来常州plc培训为你找回理想的帆船,详细内容为以下PLC发展过程,PLC软件派系,自动化前景,PLC的实用性,C语言学习,工业机器人研发. PLC发展过 ...

  5. 步进电机编写单4拍或4-8拍方式的汇编或c语言控制程序.,基于SCM和PLC的两种步进电机控制方法...

    引 言 步进电机位移与输入脉冲信号数相对应,精度高.响应特性好.可靠性高.速度可在较宽范围内平滑调节,是控制系统中一种重要的自动化执行元件. SCM(Single Chip Microcomputer ...

  6. 单片机 串口 波特率 c语言 9600 11.0592mhz t1,PLC与单片机串口通信的实现

    党强 摘要:本文主要进行探讨单片机与可编程逻辑控制器plc之间的串行通信以及各个系统在通信技术中的应用,本文主要以at89c51单片机和fpi系列的单片机为例进行阐述单片机与plc的串行通信. 关键词 ...

  7. PLC与C语言的本质区别,一文告诉你PLC与计算机的本质区别在哪里!

    你真的了解PLC吗?你知道PLC与计算机的本质区别吗?我来简单解释一下吧. 第一:PLC可以工作在极其恶劣的电磁环境中 如果我们把计算机直接放到PLC工作的环境中,无需太久,这些计算机将死机甚至烧毁. ...

  8. PLC中ST语言的几种程序流程控制语句

    PLC中ST语言的几种程序流程控制语句 ST语言是IEC61131-3中规定的5中标准语言之一,目前常用见品牌的PLC都支持这种语言(施耐德,AB可以直接选择创建该类型的程序段或者功能块,西门子的略微 ...

  9. 信捷PLC中Y0用C语言怎么表示,信捷PLC

    信捷PLC 我们这边按住按钮,那边电机启动,这一切,是如何实现的呢?首先,我们来看实现这个功能的梯形图:零基础,十分钟入门PLC(可编程控制器),掌握它的工作原理这就是PLC中的梯形图.信捷PLC 用 ...

最新文章

  1. 每日一皮:如何把程序员骗到手!
  2. 日常运维管理技巧十五(htop使用说明top增强版)(转载)
  3. jQuery css()选择器使用说明
  4. linux环境下c回车,linux_C 让 getchar()不再需要回车
  5. 业务架构、信息架构、技术架构三位一体,互联网营销
  6. 如何在 React Native 中写一个自定义模块
  7. python删除列表第几个元素_python中对列表list遍历的过程中删除元素4种方法
  8. 爆款 | Medium上6900个赞的AI学习路线图,让你快速上手机器学习
  9. 官方jdk历史版本的下载方式
  10. 政府12345便民服务热线 -- MICC全媒体智能呼叫中心建设方案
  11. 摄像头 - 双摄像头工作原理详解:RBG +RGB, RGB + Mono
  12. vite 预编译实现
  13. 过程试图写入的管道不存在
  14. Centos7 安装Vpp 及一些学习资料。
  15. php 标准规范,PHP PSR标准规范
  16. 保研数据中隐藏了哪些信息?用数理统计解决信息不对称问题!
  17. 什么是DDR RAM DDR2 DDR3 DDR4 之间有什么区别
  18. 在Linux系统上运行.net core程序
  19. ACDSee Photo Studio 5 for Mac v5.2.1151 图片管理中文汉化下载
  20. rk3399 9.0修改系统默认输入法

热门文章

  1. ModuleNotFoundError: No module named nose 的python错误,解决方案
  2. Interpreter(解释器模式)行为型
  3. javase笔记基础篇
  4. Django项目127.0.0.1 拒绝了我们的连接请求。
  5. 运行javac 报告javac不是内部或外部命令,但是运行java、java-version正常
  6. 原生JS灵魂之问(中),看看你是否熟悉JavaScript?
  7. 南卡耳机好还是万魔好?国产半入耳蓝牙耳机对比
  8. Nexus私服简介及搭建
  9. 如何发布自己的npm包(超详细步骤,博主都在用)
  10. UNREAL ENGINE 4.12 正式发布!下载地址