我们知道面向对象编程(OOP:Object Oriented Programming)是一种面向对象的程序设计方法。所谓"对象"就是一个或一组数据以及处理这些数据的方法和过程的集合。面向对象的程序设计完全不同于传统的面向过程的程序设计,它大大地降低了应用程序开发的难度,使编程就像搭积木一样简单,是当今计算机编程的一股势不可挡的潮流。
图1:类
面向对象编程 达到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。面向对象主要有以下的概念和组件:
● 组件:数据和功能一起在运行着的计算机程序中形成的单元,组件在面向对象的编程中是模块和结构化的基础。
● 抽象:程序有能力忽略正在处理中信息的某些方面,即对信息主要方面关注的能力。
● 封装:也叫做信息封装,确保组件不会以不可预期的方式改变其它组件的内部状态;只有在那些提供了内部状态改变方法的组件中,才可以访问其内部状态。每类组件都提供了一个与其它组件联系的接口,并规定了其它组件进行调用的方法。
● 多态:组件的引用和类集会涉及到其它许多不同类型的组件,而且引用组件所产生的结果得依据实际调用的类型。
● 继承:允许在现存的组件基础上创建子类组件,这统一并增强了多态性和封装性。典型地来说就是用类来对组件进行分组,而且还可以定义新类为现存的类的扩展,这样就可以把类组织成树形或网状结构,这体现了动作的通用性。
图2:继承
最近,一家德国的媒体把精力集中到控制系统工程的主题上,特别是关于编程的问题。让他们对这个问题如此大的投入原因是软件编程在自动化工程中占有很大的比重。在编程问题上,他们又特别对面向对象编程的话题最感兴趣。你可能同意这样的观点:面向对象的编程已经不知不觉地进入了自动化,并且建立了它们自己的领地。
有些题目不值得争论。控制系统的面向对象编程似乎是其中的之一。这家媒体的编辑马丁 布克维茨一直在拜访几个控制器的生产商,与他们探讨控制工程的问题。到现在,已经进行了若干次会面,得出的信息如下:
图3:封装
至今为止,我已经看到一些有趣的发展。我还没有遇到一位供应商对面向对象的编程没有兴趣。但控制器生产商之间的不同只是实施策略和实现级别。有些公司已经在广告中声称他们使用了面向对象编程的方法;他们的产品使用了这种方法编程的结果,而且可以看出它的竞争优势。另外有些公司没有一直使用这项技术,而且今后很少或者不再使用这个概念。
第三组生产商的情况是,软件工程师只是为了工作更有趣和增加编码的重用性,在这儿或那儿使用面向对象编程,不作为常态或要求来使用。虽然这组的声音不大,但却在静静地使用。
如果对准了控制器编程人员的巨大市场,为他们一步一步地介绍面向对象的编程是比较明智的。有些概念,诸如类、继承、实例化,明显会让 PLC系统的编程人员吓坏。 使用程序调用来替换程序的手动输入已经有很多年了,因此,使用面向对象的编程是一种进化,不会令人惊讶。
其实,在国际电工委员会颁布了可编程控制器的标准IEC61131-3标准后,很多控制器生产商都在两种图形编程语言:梯形图(LD)和功能块图(FB)中支持一种称为自编功能块(Add-On Instructions)或导出功能块(Derived Function Block)它就具有前面所说的封装、继承和实例化的特性。所以,虽然没有声明是否采用了面向对象的编程技术,但实际上在用户熟悉的编程环境中,已经采用了这项技术和概念。这种方法可能更容易被自动化和控制工程师所采用,因为电气工程师最习惯梯形图,而流程工程师最偏好功能块图,只有软件编程人员比较熟悉面向对象的技术。
图4:自编功能块
这项技术具有很多的先进性:
● 大大提高了编码的重用性;
● 程序具有良好的质量;
● 在团队中工作更简化;
● 管理编程也更加简单;
● 对程序修改也很简单。
不管用户个人对面向对象编程的选择是什么,在自动化中已经绕不开面向对象的编程了。尽快设计和打包这项技术,展示它的用途,消除概念和理论中不必要的障碍是生产商的责任。建议用户在自动化中尽早使用面向对象的编程方法,因为OOP是未来的发展方向。
停送电操作指导书
一、 停送电倒闸操作必须听从调度指挥,并与用户取得联系后方可进行。二、 严格执行“电业安全规程”及“两票”制度执行一人操作,一人监护。三、 送电必须按母线侧刀闸、线路刀闸、油开关顺序操作,停电顺序相反,严禁带负荷拉闸。四、 停电后应立即挂好停电标志牌,严防挂错。五、 停电操作必须戴绝缘手套、穿绝缘鞋,站在绝缘垫上。六、 高压设备均为双回路供电,一回使用一回备用,严格执行双回路送电有
0评论2024-10-0448
DCS控制系统和PLC控制系统的区别
1. DCS是一种“分散式控制系统”,而PLC只是一种(可编程控制器)控制“装置”,两者是“系统”与“装置”的区别。系统可以实现任何装置的功能与协调,PLC装置只实现本单元所具备的功能。 2. 在网络方面,DCS网络是整个系统的中枢神经,和利时公司的MACS系统中的系统网采用的是双冗余的100Mbps的工业以太网,采用的国际标准协议TCP/IP。它是安全可靠双冗余的高速通讯网络,系统的拓展
0评论2024-10-0473
Modbus以及Modbus Plus有什么区别?
Modbus是一种通讯结构,广泛应用在智能设备之间进行主-从方式通讯。一个Modbus信息桢包括从机地址、功能码、数据区和数据校验码。正因为 Modbus仅仅定义了通讯结构,所以可以使用RS232、RS422和RS485端口,可以使用光纤、无线等媒质实现通讯。而 Modbus Plus则是一种典型的令牌环网,完整定义了通讯协议、网络结构、连接电缆(或者光缆)以及安装工具等方面的性能指标。
0评论2024-10-0441
继电保护安全措施票
近几年的继电保护事故通报中,由于漏拆、误拆有关连线或漏退、误投有关压板,造成运行开关误掉闸的现象时有发生。从各起事故中总结出,大部分原因是未认真执行现场继电保护安全措施票。下面对某发电厂具体执行继电保护安全措施票的情况作一介绍。 1 继电保护安全措施票的格式 继电保护安 全措施票的格式是参照《继电保护和电网安全自动装置现场工作保安规定》中的格式,并稍加改动 而形成,主要在内容格式上和审批格式
0评论2024-10-0436
西门子S7-200高速计数器怎么接收伺服驱动器的A相B相Z相差动信号
想利用西门子S7-200PLC的高速计数器,采集伺服驱动器的反馈编码器值,利用高速计数器采集到的值,在程序中比较好控制伺服电机实际运行的位置.答:西门子的200无法直接采集差分信号,因此你需要买个转化板进行转换(即使是224xp也只是支持集电极开路的0到5v,并不是差分)其次每个cpu的循环周期都得10ms左右,如果你在程序中比较实际位置,在进行输出的话很有很大的延迟,除非速度很慢,否则在
0评论2024-10-0469
西门子变频器预充电的问题
变频器在放置很长时间不使用时,首次上电需要执行预充电,有人说需要用直流调压器直接接在母线正负极,慢慢升压,我想问的是变频器不是有预充电的吗,为什么还要用直流调压器啊?预充电有预充电电阻和预充电继电器,那么预充电继电器吸合和断开的时间是由什么来控制呢,这个时间可调吗?还有,如果接上输入电源,但是不启动,那么这个时候是不是在执行预充电?另外,如果不执行任何形式的预充电,变频器是在接上输入电源时主
0评论2024-10-0470
51单片机CPU的内部结构及工作原理
从上图中我们可以看到,在虚线框内的就是CPU的内部结构了,8位的MCS-51单片机的CPU内部有数术逻辑单元ALU(Arithmetic Logic Unit)、累加器A(8位)、寄存器B(8位)、程序状态字PSW(8位)、程序计数器PC(有时也称为指令指针,即IP,16位)、地址寄存器AR(16位)、数据寄存器DR(8位)、指令寄存器IR(8位)、指令译码器ID、控制器等部件组成。1、运
0评论2024-10-0480
电功率计算公式的灵活变通
现有一个碳膜电阻,其额定电功率为P=1W(瓦),额定电阻为R=100Ω(欧);知道这两个数值后需要计算出这个电阻的额定电流I以及额定电压U。解题:我们知道电功率公式是P=UI,现在我们知道电功率和电阻,所以电功率公式要转换一下,转换计算公式为:P=I²R;但是我们需要计算的是电流,所以I²=P/R,然后把I开方就计算出了电流:电流:然后我们代入上面的公式中,I=1/10
0评论2024-10-0495
编码器工作原理
绝对脉冲编码器:APC 增量脉冲编码器:SPC 两者一般都应用于速度控制或位置控制系统的检测元件. 旋转编码器是用来测量转速的装置。它分为单路输出和双路输出两种。技术参数主要有每转脉冲数(几十个到几千个都有),和供电电压等。单路输出是指旋转编码器的输出是一组脉冲,而双路输出的旋转编码器输出两组相位差90度的脉冲,通过这两组脉冲不仅可以测量转速,还可以判断旋转的方向。 增量型编码器与绝
0评论2024-10-0468