• 西门子模块6ES7322-1HH01-0AA0供应
  • 西门子模块6ES7322-1HH01-0AA0供应
  • 西门子模块6ES7322-1HH01-0AA0供应

产品描述

产品规格模块式包装说明全新

西门子模块6ES7322-1HH01-0AA0供应



面向对象编程是计算机语言的一种的编程模式,在工业控制系统的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),而是在类里面定义,虽然会造成不同类中同一结构的重复性定义,但却提高了类的立性。

三、 优越性

1、 标准化

    使用这种设计模式,可以将程序设计分为两个阶段,即标准库、基本架构开发,以及实际应用层面设计。其中标准库、基本架构是程序标准化的基础,而应用层设计是针对具体的控制工程编程,这样可以把程序设计人员分成两类,一类是标准开发,由程序员负责,一类是应用设计(其中程序调试规划到应用设计),由 经过标准化培训的一般程序员完成,通过这种分配就可以解决中国工业自动化中面临的尴尬局面。传统的中国控制工业,一个程序设计由一个人完成,这样他还负责现场调试,而拥有丰富经验的程序员一般是三十岁后,这时他已经成家,而显然长期出差对家庭不利,很多的程序员为了家庭考虑不得不改行,要么转到管 理岗位,要么去制造工厂搞设备维护,这是资源的严重流失。毫无疑问,使用以上的设计流程,我么可以让经验丰富的程序员搞标准库和架构的设计,而让刚踏入这个行业的年轻人搞应用设计和调试,这不仅可以让老程序员继续他自己的工作,而不影响家庭,也可以让年轻的程序员参入现场调试,培养自己的经验,提高自己的 收入。

    这可能让某些人士担心,认为年轻的程序员可以参加现场的调试吗?可以肯定的是没有标准化支撑的程序不仅年轻的程序员编不出来,而且现场调试会问题多多。但有了好的标准化后,一年半以上工作经验的程序员就应该能够立面对自动线。

    PLC中的面向对象编程的就是黑匣子编程,针对Step7,我们使用FB去实现每一个对象的控制,控制逻辑、报警处理、信号交换全在FB中,对于应用设计人员,不需要明白里面的代码实现,只需要了解该FB的功能以及如何使用好它就行,这样对于应用程序人员的编程能力要求大大降低,对于编程只不过是遵循架构,拷贝代码,改变输入输出条件而已。

    那么调试呢?很多人认为使用FB编程的烦就是FB的多次调用后,根本无法诊断这些代码,从技术层面上讲确实如此,我们除了从背景DB上查看信息外, 是无法在它多次被调用后监控代码的,但我已说过,这是黑匣子编程,我们不需要诊断这些代码,只需要知道什么样的输入、什么样的参数设定导致什么样的输出就行,代码的逻辑与功能好坏是由标准库开发人员负责的,这就要求标准开发人员需要对他设计的功能块在不同条件下进行不同的测试,保证无误,还需要编写完整、 详尽的功能说明文档,以便于应用设计人员了解这些块,标准架构并不是出来就一劳永逸的,针对千变万化的工程,它是需要不断完善和修订的,这也是一个工程公司可以实实在在进行知识积累的地方。

    程序不仅需要给调试人员使用,而且用户(设备维护人员)也需要了解,如果把完整的标准库文档给用户,可能曾在技术外泄的可能,若不给,对他们诊断设备可能曾在困难,这就需要标准人员制作另外一分文档,即设备维护文档,其知识的透漏以用户能够使用程序进行诊断为限。

2、 重用性和易管理型

    计算机面向对象编程的优点也有重用性和易管理型,在PLC中也曾在,以Step7为例,需要讨论FC和FB的差异。观察数据类型,FB比FC只不过多一个 “STAT”类型,在使用上FB需要背景DB,FC不需要,但就这个差别导致FB拥有自己立的数据储存空间,而FC的数据储存却借助公有变量(如中 间变量M或者共享DB),有这样一种准则,程序块的立性越强,其重用性也越好,产生数据访问冲突的可能性也少,则易于管理。有些公司生产的PLC, 其程序语言没有类似FB 的这种特性,这时可以采用类似“FC+共享DB”的替代方案解决,但它的立性已经大大降低。

    同样的代码的立性是标准的一个重要环节,很难想象一个与其他功能块之间有着千丝万缕联系的功能块能够被作为标准块在不同工程中有效的重复使用。

    纵观计算机语言的发展,开始的编程都是令人恐怖的,而当今的编程让人们得到很大的解脱,有很多现成的标准类库实用,人们可以把多的编程精力放在实现功能本身上,PLC编程也应该朝这种方向发展,应该让多的人从事应用层面的设计,那些标准功能块不应该重复的被不同人员开发,虽然各大PLC厂开发了大量 的程序库,但工业控制对象各式各样,不**业都应该拥有自己的程序库,而代码的可重用性是评价这些功能块好坏的关键。

202202191202181931954.jpg202202191202181715614.jpg202202191202182892794.jpg


1 概述
在数控领域,目前使用的控制系统一般为通用型,如车床,铣床,加工等,但对一些特殊的机床如磨床,位置控制设备等都需要有自己的界面,这样便于对设备的操作,管理。这些界面用开发软件由设备制造,改造商开发。 西门子提供的开发软件OEM是专门用于对标准型数控系统进行二次开发。其种类有:
WS800A软件: 应用于西门子数控系统805/810/820/850/880/840C(DRDOS);
MMC103 OEM软件: 应用于西门子数控系统810D/840D/FMNC使用的MMC103;
NC OEM软件: 应用于西门子数控系统810D/840D NCU;
这里只介绍MMC103 OEM(下面简称OEM)的应用。

2 OEM主要功能
OEM开发软件一般由机床制造厂,机床改造商使用,根据用户需求,设计MMC103上各种机床界面。它能完成:
NCU中各种变量的访问,如偏,零偏,轴坐标值等;
R参数的访问;
PLC中各种变量的访问,如I/O口,标志区M,数据块DB等;
NCU中文件读取;
MMC103中文件读取;
利用VB,C++设计应用界面,如显示数据,图形;输入数据;管理文件及对外部的控制等;

3 OEM开发环境
MMC103 OEM开发软件安装于PC微机上,在bbbbbbS95下,使用VB,C++语言,利用OEM提供的 DDE接口,访问NCK,PLC,MMC103变量及文件并支持中文系统。
各种软件的功能:
MMC103 OEM开发软件,完成各界面的定义;
C++软件,完成各种语言界面的生成;
VB软件,完成画面设计,变量访问,计算等;

4 OEM的应用
今年夜疚谀郴渤匙ㄓ蒙璞附蛊MC103界面的二次开发设计。为便于说明,介绍一下某设备的情况: 机床有9个坐标轴、工控机测量系统、传感器检测系统、气动真空系统及控制系统840D+FMNC。控制系统的功能是实现位置控制和与各系统间动作的逻辑顺序控制,使之协调一致。 其中:
840D完成对7个数字伺服轴(X,Y,Z,C1,C2,C3,W1)的控制 ;
FMNC完成对2个模拟伺服轴(W2,W3)的控制;
工控机测量系统由各种传感器等组成,实现工件在空间非接触测量。控制系统接收测量值并控制9个轴的运动轨迹;
传感器检测系统用于连续变化的物理量(力、温度等)信号的采集,向控制系统提供多路模拟量和多路数字量信号。控制系统能对力、温度等信号的连续变化做出快速响应,以便数据的实时采集。 其系统总体配置原理图如下:
它对MMC103界面的要求:
实时显示9个轴(X,Y,Z,C1,C2,C3,W1,W2,W3)的位置值;
实时显示力、温度值的变化,并根据信号值的大小对轴的运动实施控制;
实时显示工件空间位置;
实时显示各工件的相对位置;
设置各工件相关参数;
动态工作曲线;

4.1 OEM界面设计
根据用户界面的要求,需设计12个画面OEM0-OEM11:
OEM0: 主画面,显示9个轴的位置值,压力值,温度值,工件工作位置,真空状态,保护状态;
OEM2--11: 工件1--10参数设置画面及保存修改软键;
使用MMC103 OEM开发软件,定义OEM0-11中软键功能。
如: OEM0中的 SETTING 软键;
OEM1中的 PART1-PART10,RETURN软键;
OEM2-11中的 SAVE,RETURN软键;
后生成相关文件。
使用C++将1)中的文件生成不同语言的连接文件。XXXXXXX。DLL
用VB设计OEM0-OEM11画面
如: OEM0中9个轴位置,各物理量值及工件轨迹的显示等

4.2 OEM中数据处理
它用VB提供的资源,指令,环境对OEM中的数据进行处理。所不同的是访问NC, PLC变量的方法不同,如读R100采用下列方法进行:
Label2。bbbbTopic = G_CHNCDDEServiceName
Label2。bbbbItem = “/Channel/bbbbbeter/R100”
Label2。bbbbMode = DDE
其它变量类同。
我们还可利用VB控制数据文件存储,打印,传送等多种功能。它等同于在微机上开发应用软件。
编制完成后,生成EXE文件。此文件即为OEM的应用文件。直接由MMC103中软键调用。(需设置相关配置文件)

5 OEM应用领域
OEM软件是为设计提供的进行人机界面二次开发的工具。设计人员可根据用户需求设计出功能灵活多样,画面丰富的应用程序。因此它应当在机床,控制系统中有着广泛的应用空间。如大型轧辊磨床,凸轮磨床,曲轴磨床,磨床,特殊的加工,控制设备等。
目前,OEM已应用在大型轧辊磨床和控制设备上。
由于水平有限,又OEM开发所涉及的因素较多,文中不能点击,如有不妥请指正,并希望多的人使用OEM。



随着中国整体经济实力的加强,制造和加工工业正逐步向中国转移,这给中国国内工业装备市场带来了大量的商机,国内各行业的制造商开发和制造出大量的设备,了良好的经济和社会效应。但是,也有小部分的制造商,由于其自身能力和客观因素的限制,无法及时开发出合适的产品,但利益的驱动使他们把目光瞄**,和**开发成功的产品,有甚者是整机拷贝或者。由于现代工业设备大量采用PLC作为主控制系统,PLC作为整个设备的部件,其软件包涵了生产工艺,控制逻辑,设备数据,加工参数及信息通讯等重要内容,从而成为设备者要的目标之一。纵观目前中国上应用的主流PLC,虽然在设计上都采用了各种软硬件加密的手段,但破解者运用的破解手段也越来越,从初的穷举法,端口侦听,软件跟踪,到现在可以通过直接复制提取内存芯片的内容来分析破解,有甚者在互连网上公开讨论和传播方法和工具,因此所有产品无一例外地遭到了破解。这对中国众多的中小型OEM制造商来说是非常不利的,“我们几年的开发成果可能因此一夜之间付诸东流”当得知S7-200/300硬件加密也被破解后,一位OEM制造商无奈地说。由于者的开发成本很低或几乎为零,因此还没有来得及收回开发成本就陷入了竞争,这大的影响了开发新产品的积性,对我国的装备工业的长远发展是十分有害的。

难道就这样束手无策,听任者为所欲为了吗?答案是否定的,多年来一直关注和研究PLC控制程序保护方面的问题,笔者在实践中了一些经验和心得,在本文中愿意和**们共同分享和讨论,大家共同为保护自己的劳动成果而努力。笔者多年来一直从事西门子SIAMTIC S7PLC的应用,因此本文也只是从纯粹的技术层面出发,探讨SIMATIC S7 PLC控制程序的保护。


 在系统设计的初期,我们应该从系统的角度来考虑PLC控制程序的保护:

1. T.I.A(全集成自动化)的概念有助于保护我们的KNOW HOW
T.I.A实现了组态和编程,数据管理和通讯,自动化与驱动产品(包括PLC控制器、HMI人机界面、网络、驱动器等产品)的高度集成。实践证明,采用T.I.A集成概念设计的控制系统很难被。同一个软件平台,相同的硬件组成,一样的总线通讯,可以设计出截然不同的控制系统,这是一个让自由发挥的平台。例如,一个CPU315-2DP和2个MM440变频器进行PROFIBUS-DP的通讯,除了PLC和变频器有常规的数据交换,如果用户使用了DRIVES ES的工程软件,还能实现2个MM440之间的直接的快速数据交换,另外通过DRIVES ES还能实现PLC和MM440之间过10个总共16个PZD过程数据的交换,实现PLC批量下载变频器参数的功能。而这一切的实现从表面上看,硬件没有发生任何的变化,者很难从硬件上来判断出系统是如何控制这两台驱动器的速度的。不熟悉西门子产品的者无法轻易换硬件配置或软件,而即使者是个西门子产品的,要自分析清楚具体细节问题也不是件的事情。从某种程度上说,T.I.A大大提高了对者的技术水平要求的门槛,达到西门子系统集成水平的技术人员一是不多,二很少有愿意做这些不齿的事情的。
此外,对于一些较大系统的OEM开发商,路由通讯功能,iMAP软件包等都是很不错的T.I.A系统功能或工具,我们应该尽量利用T.I.A给我们带来的技术优势,技术,加大或的技术难度。

2. 使用通讯功能

在实际的工作中,我们往往会遇到一些系统间需要数据交换的问题(如PLC-PLC之间,PLC与驱动器之间,PLC与仪表之间),无论是西门子产品之间还是西门子产品与三方产品之间,建议使用通讯的方案来代替模拟量或开关量之间的信号互连的方案。对于前者,者只能看见一条硬件的通讯线,至于有多少数据是如何通过通讯交换的,者要花精力研究具体的用户程序才能搞清楚;而对于后者,是省心省力了,者也是一目了然,尽收眼底。
PLC与驱动器的通讯,除了了控制字/状态字、设定值/反馈值及过程变量的数据通讯,驱动器工作的参数也能由PLC通过软件下载,这样即可以降低终用户维护系统的技术要求,同时可以防止者通过驱动器工作参数分析系统尤其在驱动方面的工作原理和设计思路。西门子公司的工程软件DRIVE ES BASIC/SIAMTIC,为广大的西门子产品用户实现此类功能提供了一个强大的工具;而使用SIMATIC PLC却使用三方驱动器的用户,也可以自行开发针对性的参数读写程序,一般支持PROFIBU-DP的驱动器都可以实现。
有时候我们的控制系统会由多个子控制系统构成,由此形成多CPU机界面的网络,西门子S7-200产品常见的是PPI网络,S7-300/400产品常见的是MPI网络,通常是人机界面与CPU之间的数据交换,而我们也可在CPU的用户程序中添加一些无须组态的S7基本通讯功能(S7-200可用NETR/NETW指令,S7-300/400可以用X_PUT/X_GET指令),定时或不定时地在CPU之间进行少量数据交换,通过这些数据实现子系统控制逻辑的互锁。对于这样的系统,者要分析某一子系统的程序也不是件十分事情。

3. 使用面板类型的人机界面

尽量在自动化系统中使用面板类型的人机界面来代替单一的按钮指示灯,虽然按钮指示灯的功能是无法保密的,但目前为止,面板型人机界面能够实现程序上载并实现反编译的产品还不多见,可以在面板的画面上加上明显的厂家标识和联系方式等信息,者还不至于傻到连这个也原样照抄吧。这样迫使者重新编写操作面板的程序甚至于PLC的程序,而则可利用面板和PLC数据接口的一些特殊功能区(如西门子面板的区域指针,或VB脚本)来控制PLC的程序执行。这样的PLC程序在没有HMI源程序的情况下只能靠猜测和在线监视来PLC内部变量的变化逻辑,费时费力,大的增加了的难度。

4. 采用语言编写部分重要的工艺程序

这一点主要针对采用S7-300/400或WI产品的控制设备,除了使用STEP 7提供的LAD,STL,FBD标准编程语言来开发控制程序,我们还可以使用SCL,S7-GRAPH等语言来开发一些重要的工艺程序,WI还可以使用ODK软件包开发出专有的程序块。一般的者是不搞到这些开发工具的,即使有也不一定会使用,不用说来读懂这些程序了。

?在项目具体实施的过程中,我们应该从软件开发技巧的角度来考虑PLC控制程序的保护:

1. 编程方式的采用
a) 采用模块化的程序结构,采用符号名,参数化来编写子程序块
b) S7-300/400尽量采用背景数据块和多重背景的数据传递方式
c) 多采用间接寻址的编程方式
d) 复杂系统的控制程序尤其是一些带有顺序控制或配方控制的程序,可以考虑采用数据编程的方式,即通过数据的变化来改变系统的控制逻辑或控制顺序。

用户应该尽量采用以上几种层次的编程方式,这样编出来的程序中嵌入系统的保护加密程序,才不被发现和破解

2. 主动保护方法
a) 利用系统的时钟
b) 利用程序卡或者CPU的ID号和序列号
c) 利用EEPROM的反写入功能,及一些需要设置的内存保持功能
d) 利用系统提供的累时器功能
e) 在用户程序的数据块中设置密码
f) 软件上设置逻辑陷阱
g) 可以反向利用自己在编程时犯的错误

3. 被动保护方法
a) 在内存容量利用许可的条件下,不要删除被认为是无用的程序
b) 在数据块里留下的标识,以便于将来遭到侵权时可以取证

4. 应用反技术的注意事项
a) 在用户程序中嵌入保护程序要显得自然一些,不能很突兀的加出一段程序来,代码要尽量精简,变量符号名应与被嵌入程序段的变量保持一致
b) 往往一种保护加密手段是不够的,应该多种方法并用,并且这些保护程序一旦后对系统造成的后果也应该尽量不同,造成所谓的“效应”,从而增加程序被的难度,时间与成本,短时间内让者束手无策,
c) 保护好程序的原代码,如果需要交付程序的,在不影响用户对设备维护的前提下,应对交付的程序做适当的技术处理,如删除部分符号名,采用上载的程序或数据块
d) 做好严格的测试,以避免保护程序的不完善引起的误动作而带来的不必要的麻烦,同时也能降低售后服务的的费用

运用保护手段的原则
 

我们虽然掌握了一些加密保护的手段,有一点明白,密码和锁的道理是一样的,没有打不开的锁,也没有解不开的密码,我们从技术上采取的措施来防止侵权的作用还是十分有限的,因此大家不能把所有的希望都寄托在所谓的加密技术或与反技术上;除此之外我们还可以通过的申请等其他诸如法律手段来保护我们的知识产权;但重要的是我们不能安于现状,而是要勇于,不断地利用新技术开发新产品,技术新高地,争做的人,才能使我们的企业立于不败之地。

加密保护技术本身也是一把剑,用好了客户满意,自己的权益又悄悄的得到了保护,用不好不仅不起作用,给售后服务带来许多麻烦,还会得罪客户;好人掌握这种技术是用来保护自己不被侵权,而用心不良的人会利用它去要挟客户。因此本文也于讨论了关于PLC程序加密保护的一些原则性指导性的内容,而没有公布具体的程序代码指令,请读者们谅解。



http://zhangqueena.b2b168.com

产品推荐