7
6ES7368-3BB01-0AA0型号含义
一般数控机床标配有主轴,伺服轴,PLC轴也即是辅助轴。而与之相应的控制系统是CNC,PLC,变频器,伺服和电机。所以讲到PLC在数控机床上的应用就不得不联系到CNC,变频器,伺服和电机。他们是一个系统工程,一个的整体。
一.随着工业控制的需要及技术的发展传统的PLC(可编程可编程逻辑控制器)正在发生质的变化,有将PLC与CNC合二为一的PAC(programmable automuton cotrollor)的方向发展。使PLC不仅具有逻辑运算,算术运算,定时,计数及顺序控制,还可以提供数据传送,矩阵处理,PID调节、SSAII码操作、远程I/O、运动控制、网络通信等功能,还可以使用语言(C语言、BASIC语言)编写子程序嵌入PLC程序中运行。实质上是一种控制计算机。通过PLC提供的宏参数和CNC系统参数可在PLC和零件加工程序之间传递信息,???以完成某些特定功能。即PLC已经渗透到零件加工程序的编辑中去。
单的PLC已经可以完成全部的CNC功能,这已经成为现实。但就目前而言,PLC主要还是在数控系统配置机床上时起一个“接口”作用,包括MST功能,诊断功能等,这种功能正在不断扩大。
PLC在数控系统的实现目前也有好几种方案:
方案一:通用PLC带数控功能
这对于需要逻辑控制又需要相对简单的位置控制的用户来说是一个很好的选择,无论是成本和开发都有很多优势,不过通用型的PLC大多没有联动和插补指令(部分产品有),并且不支持G代码,无法与软件进行接口。
方案二:的数控系统
这种系统有很多使用PLC的平台加DSP加FPGA实现,的这种系统可以与软件无缝联接,从导出来的G代码在经过编缉或者不需要编缉下载到控制器内就可以做出各种对应的动作出来。该种系统对于多轴联动控制和插补G代码均有很强的支撑能力,同时一般带有显示,可以在运行时同步在显示屏上显示运动的轨迹。
方案三:IPC+数控板卡
这是国内数控厂商的主要形态,有灵活性高的优点,但很多系统不支持标准的G代码,而是要用户使用C、C++语言或者VC去编写对应的控制程序,由板卡厂商提供函数库。当然目前大多数情况下是由数控厂商代用户完成这一部分的编程。
这种开发方式的优点是显而易见的,厂商的开发,灵活度高,但是需要厂商提供相当多的技术支持,如果客户数量大后很难有足够的支持能力,所以这类厂商大多都在开发通用的数控平台,并仍然使用IPC平台在上面开发通用型的数控系统。
在中、数控机床中,PLC是CNC装置的重要组成部分。其作用是:接收来看零件加工程序的开关功能信息(辅助功能M、主轴转速功能S、功能T)、机床操作面板上的开关量信号及机床侧的开关量信号,进行逻辑处理,完成输出控制功能,实现各功能及操作方式的联锁。
PLC有两种类型,即内装型和立型。
PLC除了在CNC中使用外,还广泛用于治金、机械、石油化工、能源交通乃至等各行业。
1.PLC的应用类型
(1)顺序控制和开关逻辑控制类型。这是基本控制方式,已取代了传统的继电器逻辑控制,用于单机、多机和生产自动线。它对输入的开关量或模拟量进行采样,然后按用户编制的顺序控制程序进行运算,再通过输出电路去驱动执行机构实现顺序控制。
(2)一个具有PID(比例、微分、积分)控制能力的PLC可用于过程控制,把变量保持在设定值上。
(3)组合数字控制类型。在机械加工中,将具有数据处理功能的PLC和CNC组成一体,实现数字控制。
(4)组成多级控制系统类型。在分层分布式控制的全自动化系统,如PMC、FMS、CIMS中,基层由中小型PLC和CNC等控制设备组成,中层由大型PLC进行单元控制与监督,上层由上位计算机做总体管理。PLC之间、PLC与上级计算机之间采用快速光纤数字通信。为适应多任务、多微处理器并进处理,实现实时控制,协调梯形图和BASIC程序之间的相互关系,以及位、字处理和I/O中断处理,还增设有联机文件管理和对执行出错的恢复等功能。
(5)控制机器人的类型。选用PLC可对具有3-6个自由度的机器人进行控制。
2.PLC在位置控制中的应用。PLC制造厂商提供驱动步进电动机或伺服电动机的单轴或多轴位置控制模块。用户只需通过PLC向位置控制模块设置参数及发出某种命令,位置控制模块即可根据来自现场的监测信号和PLC的命令来调整控制输出,移动一轴或数轴到达目标位置,实现准确定位。当每个轴移动时,位置控制模块能使其保持适当的速度和加速度,确保运动平滑。
位置运动的编程可用PLC语言完成,通过编程器输入。用程序设定速度和加速度参数,控制系统可自动实现阶梯式加减速。可多点定位,并有原点补偿和间隙补偿功能,提高定位精度。可进行手动操作,实现高速点动、低速点动或微动。
PLC的位置控制,特别适用于机床的点位直线伺服控制,常称为辅助坐标运动控制
CNC装置和机床之间的信号传送处理两个过程:
(一)、CNC装置→机床:
CNC装置®CNC装置的RAM ®PLC的RAM中。
PLC 软件对其RAM中的数据进行逻辑运算处理。
处理后的数据仍在PLC的RAM中,
对内装型PLC,PLC将已处理好的数据通过CNC的输出接口送至机床;
对立型PLC,其RAM中已处理好的数据通过PLC的输出接口送至机床。
(二)、机床→CNC装置
对于内装型PLC,信号传送处理如下:
从机床输入开关量数据®CNC装置的RAM ® PLC的RAM。
PLC的软件进行逻辑运算处理。
处理后的数据仍在PLC的RAM中,同时传送到CNC装置的RAM中。
CNC装置软件读取RAM中数据。
对于立型PLC,输入的步,数据通过PLC的输入接口送到PLC的RAM中,然后进行上述的2步,以下均相同
二.接下来是运动过程控制
伺服或者变频器接受CNC,PLC命令,分别控制电压进而控制转速,控制频率来控制转速。
联系到主轴驱动系统和进给伺服系统及执行元件电机等。
1,比较一下变频主轴和伺服主轴的区别。伺服主轴的起停性能好,低速扭矩大,在进行很好的速度控制还能进行较准确的主轴停止位置的控制(主轴),但价格较高。
而一般的变频主轴只能进行主轴的旋转速度的控制,且它的低速度扭矩小,电机不能在较低的速度下进行工作,如需要进行低速加工则要通过减速箱来实现,起停时间一般都较长。
这是两种不同的控制系统,前者是随动系统,后者是调速系统。
还有一般的数控机床大多会用变频主轴,一是因为相对而言价格较低,二是容易实现高速和大功率.当然,也满足大多数加工要求.
另变频主轴也可进行对主轴的定位控制,刚性功丝等也可实现.主要是看所选主轴电机及变频器. 主轴电机带编码器,变频器加PG反馈脉冲卡就可实现.当然效果肯定是没有伺服主轴来得好.国内机大多这样做。
2.变频技术: 简单的变频器只能调节交流电机的速度,这时可以开环也可以闭环要视控制方式和变频器而定,这就是传统意义上的V/F控制方式。现在很多的变频已经通过数学模型的建立,将交流电机的定子磁场UVW3相转化为可以控制电机转速和转矩的两个电流的分量,现在大多数能进行力矩控制的的变频器都是采用这样方式控制力矩,UVW每相的输出要加摩尔效应的电流检测装置,采样反馈后构成闭环负反馈的电流环的PID调节;这样可以既控制电机的速度也可控制电机的力矩,而且速度的控制精度v/f控制,编码器反馈也可加可不加,加的时候控制精度和响应特性要好很多。
伺服系统:(1)伺服驱动器 在发展了变频技术的前提下,在驱动器内部的电流环,速度环和位置环(变频器没有该环)都进行了比一般变频的控制技术和算法运算,在功能上也比传统的伺服强大很多,主要的一点可以进行的位置控制。通过上位控制器发送的脉冲序列来控制速度和位置(当然也有些伺服内部集成了控制单元或通过总线通讯的方式直接将位置和速度等参数设定在驱动器里),驱动器内部的算法和快的计算以及性能优良的电子器件使之优越于变频器。(2)电机方面 伺服电机的材料、结构和加工工艺要远远变频器驱动的交流电机(一般交流电机或恒力矩、恒功率等各类变频电机),也就是说当驱动器输出电流、电压、频率变化很快的电源时,伺服电机就能根据电源变化产生响应的动作变化,响应特性和抗过载能力远远变频器驱动的交流电机,电机方面的严重差异也是两者性能不同的根本。就是说不是变频器输出不了变化那么快的电源信号,而是电机本身就反应不了,所以在变频的内部算法设定时为了保护电机做了相应的过载设定。当然即使不设定变频器的输出能力还是有限的,有些性能优良的变频器就可以直接驱动伺服电机!
3.还有交流伺服和交流变频的区别其实只在于控制指标,包括稳态精度和动态性能。
先说稳态精度:交流伺服的执行单元是永磁同步电机(也有人把无刷直流系统叫做交流伺服,其原理如图:
但电机大体上与同步电机差不多,只是控制方法不同),它的特点是同步,就是说,当控制电机定子磁场的强度和矢量方向后,外力是难以改变转子(动子)的相对位置的,在额定力矩以内,无论外力怎样变化,转子都会自动产生一个回归力,一旦扰动撤消,转子矢量即回归原位。变频器不然,电机转子对定子的相对位置没有记忆,扰动后不能回位。即使加装位置传感器做位置闭环,变频器仍不能和伺服相比。原因是,在位置-速度-力矩三闭环中,变频器实现速度闭环指标比伺服差多了。不过,现在新出来的普通异步电机的伺服控制方案中,采用磁场行波控制,异步电机伺服控制也不是难事,指标也很高。不过驱动
如今工业控制产品已发展到一个追求个性化、差异化的阶段。传统的PLC产品已经无法满足加细分化的市场需求,为了满足这种需求,出现了嵌入式PLC产品。
一、嵌入式PLC
嵌入式PLC是将PLC系统软件构建于控制器内,根据用户控制需要定制硬件,以PLC的应用方式解决对象控制问题的PLC。它由两部分组成:嵌入式PLC系统软件和芯片组
1、嵌入式PLC系统软件
嵌入式PLC系统软件将PLC语言(梯形图语言)、CAN总线嵌入到单片机中,使单片机的产品开发从使用汇编语言变为使用PLC梯形图语言,并具有CAN总线的互连特性。
该系统软件具有以下特点:1.以梯形图语言为内核,添加了中断管理系统,能实现PLC无法实现的硬实时操作;2.强化运算能力,增加了CANBUS函数库、浮点数库、自整定PID、嵌入式WEB等,丰富了PLC的功能;3.提供开放式扩展结构,支持三方开发扩展单元的接线;4.增加了网络互连功能,在远程端加载浏览器后,即可实现远程监控。
系统软件包括三个部分。
①嵌入式PLC内核: 它完成实时任务调度、梯形图语言解释、执行、通讯等基本功能,并提供二次开发驱动接口;
②二次开发驱动程序 通过系统软件提供的外挂,使用内核开发各种面向具体对象个性化、差异化的驱动程序;
③终端应用程序 指面向工艺流程控制的梯形图语言程序
2、嵌入式PLC芯片组
EASY CORE 1.00 是一个加载了嵌入式PLC系统软件的芯片组,作为一款加载了系统软件的硬件平台,可以用来设计通用和PLC。
1)芯片组基本性能:
①供电:+5V 200mA,RAM掉电保护5年。
②CPU: C8051F040。
③嵌入扩展能力
·32 I/O:可复用成SPI、I2C接口及外中断、外计数、AD等。
·4 AD: 12位精度,100 KPS。
·2 DA: 12位精度,100 KPS。
④ 通信接口
·CANBUS:系统软件管理,使用工具软件CANSet构建CANBUS总线网络。
·UART0:系统软件管理,用于梯形图编程、监控,支持人机界面及用户驱动程序下载。
·UART1:系统软件管理,用于下载CANBUS网络参数、构建RS485网络及支持三方设备互连。
2)芯片组原理框图:
二、应用开发
基于加载了系统软件的芯片组,我们可以根据工艺需要来开发自己的嵌入式PLC产品。下面就介绍基于嵌入式PLC芯片组开发的16路输入的模拟量PLC产品(可输入标准信号或热电偶信号)。
1、硬件设计
硬件整体结构图如下:
AI0是芯片组内的一个AD转换通道,P1.0—P1.4作为模拟开关的通道控制线来进行16个模拟信号通道间的切换。
(1)信号采集电路
用AD公司的高精密放大器OP07构成模拟信号放大电路,OP07具有低输入偏移电压(10uV)、低漂移电压(0.2uV/℃)和宽范围的供电电压(±3V-±18V), 可以很好地满足该产品的要求。在这里OP07由±5V供电,R18、R79作为调零电阻,输出电压由下式给出:Vout=Vin(1+R98/R56)。
(2)信号选择电路
选择16通道的模拟开关CD4067构成信号选择电路,A、B、C、D、INH接到芯片组的P1.0-P1.4引脚,做为模拟开关的通道选择控制信号。OUT引脚接到芯片组的AIN0,即个AD转换通道。
2、软件开发
嵌入式PLC是基于Cygnal公司的C8051f040芯片开发的,所以二次程序的开发使用51汇编语言。开发选择的编译器是KEIL C51,因为它可以生成我们所需要的.HEX文件。
内核留出了七个用户嵌入程序接口,我们只需要充分理解各个接口的功能就可了进行二次开发了,需要熟悉如下内容:a、内核功能b、内核结构c、内核任务管理d、内核存储空间分配。【1】由于系统软件中已经加入了232通信、485通信和CAN通信的功能,所以16路模拟量PLC的二次驱动软件的开发主要集中在模拟量的AD转换和PLC资源区中AD值的实时刷新上。
(1)程序规划
T4中断:完成AD转换和16个通道的切换程序
USER_SCAN:PLC资源区中AD值的刷新。
AD转换过程如下:每一通道连续采样16次,采样完后得到累加和,然后启动下一通道的AD转换。
PLC资源区中AD值的刷新过程如下:在梯形图扫描周期结束时进行,把各路AD值的累加和求平均值后放入PLC的资源区的对应位置处。
(2)程序代码
INIT_AD: ;AD初始化
MOV SFRPAGE, #ADC0_PAGE
MOV REF0CN, #07H ;内部参考电压/输出到VERF
;启动内部温度传感器
MOV AMX0CF, #00H ;单性输入
MOV ADC0CF, #0B8H ;D7--D3=SYSCLK/采样时钟-1
;采样转换时钟=1US
;D2--D0=GAIN
;000 GAIN=1
MOV ADC0CN, #90H ;启动AD采样
MOV AD_CHANNEL, #00H ;AD通道号,初值为0
MOV AD_COUNT, #00H ;16次采样次数计数。初值为0
RET
SAMPLE_AD: ;AD采样开始
MOV SFRPAGE, #ADC0_PAGE ;AD控制寄存器页
MOV A, AD_CHANNEL ;采样值的累加和是一个字基地址 ;为#XAI,偏移地址为AD_CHANNEL
RL A
MOV DPTR, #XAI ;XAI存放16次采样值的累加和
ADD A, DPL ;低字节相加
MOV DPL, A
MOVX A, @DPTR
MOV B, A
MOV A, ADC0L
CLR C
ADDC A, B
MOVX @DPTR, A
INC DPTR ;高字节相加
MOVX A, @DPTR
MOV B, A
MOV A, ADC0H
ANL A, #0FH
ADDC A, B
MOVX @DPTR, A ;#XAI中存放格式为低字节、高字节
MOV SFRPAGE, #ADC0_PAGE ;AD控制寄存器页
MOV ADC0CN, #090H ;启动下次AD采样
INC AD_COUNT
MOV A, AD_COUNT
CLR C
SUBB A, #16
JNC FILL_XAI_XAD ;当16次采样完成后,把XAI中16 ;个采样和(2字节)存放到XAD
RET
3、驱动程序的嵌入
在KEIL C51中编译上述程序。使用下载工具软件“DOWNHEX”,把生成的.HEX文件通过串口下载到芯片组的固定地址处,使得内核可以调用它,从而完成二次驱动程序的开发。到此,16路模拟量PLC的开发工作基本完成。
三、功能介绍
基于嵌入式PLC开发的多路模拟量网络节点具有以下功能:1、采集工业现场的多路热电偶信号,2、支持三菱、台达等多家人机界面, 3、支持梯形图编程(86条指令), 4、支持CANbus互连(多机并联运行或扩展单元连接)等。这里简要介绍下该网络节点的梯形图功能应用。
嵌入式PLC的系统软件中内置了温度转换函数,其功能是把热电偶毫伏信号对应的AD值转化成温度值。适用于任意分度热电偶输入信号,应用于不同的控温场合,配合PID调节,使受控温度精度可达±1℃。
下面的梯形图程序就是把一路热电偶信号转换成温度值,该信号AD值放在D5000,转换后的温度值存放在D5160中。
四、结束语
笔者利用嵌入式PLC芯片组开发的的PLC产品的实例证明,本着软硬件可裁剪的原则,开发出的产品可以很好的满足用户的个性化需求,节约了硬件成本、缩短了研发周期,并且得到了许多强大的功能,相信它的出现必将使得PLC生产厂家生产出越来越多的贴近终端市场的PLC。
电梯生产厂家的监控系统都是自主开发的,只能用于本厂产品,并且价格昂贵"另外,随着电梯技术的不断推陈出新,其拖动和控制技术的淘汰速度也加快、许多旧型号电梯面临技术改造,常见的改造方式是用变频调速取代调压调速和变调速,用改造继电器控制系统"这些因素为使用作电梯监控系统的控制部件提供了大的空间、基于的监控系统尤其适合以改造的电梯。
1 电梯监控系统
电梯监控系统要求既能监控电梯状态又能完成日常管理。从模块功能上可分为:故障时电梯状态;每个工作周期的数据汇总;日常管理信息
。电梯在运行时有大量信息需要监测,粗略分类有:开门限位开关、关门限位开关、触板、光幕保护、厅门锁回路、轿门锁回路;回路、紧急停车回路、限开关、限位开关状态;驱动信息、呼梯信息位置信息、抱闸状态;运行时间、次数、年检时间、维修历史等。
对电梯的监控,可以使故障一览无余。众所周知,门系统是电梯故障多发部件,电梯发生故障停车前总会有一些小故障频繁发生,但这些小故障常常被忽视,因为它们不会造成电梯停运。以厅门锁和门间隙调整不当为例,载荷不均匀情况下运行,会发生门与开门轮碰撞的可能,导致电梯急停车,但因为电梯的自校正功能,电梯会在几分钟内自动恢复正常"这类故障随机性很强,所以经常不被注意,特别是自动运行的电梯,但随着小故障的积累终究会酿成大故障甚至事故监控系统则不会漏掉这些故障,甚至能定位发生故障的层楼从而节省维修查找故障点的时间"在出现故障时,各类信息的收集将有助于故障的判断和事故的预防"只要进行有针对性的设置,所有需要的信息都可以到。
对于管理人员需要的统计内容,监控系统能分门别类的汇总出不同的数据。诸如判别电梯的运行状态,主要通过故障率来判断,而故障率常用一段运行周期内出现故障的次数来计算,不同建筑内和不同用途电梯的运行次数和运行时间差异很大,很难用这种故障率作为衡量电梯运行状态的依据而用运行时间或运行次数内出现故障的多少来衡量,则能完成对运行状态的判别"监控系统可准确地统计到电梯的工作时间、运行次数等工作数据,解决这一问题就容易的多了。日常管理信息包括年检时间、维修费用、配件使用等"上述信息在基于为控制单元的系统中非常容易收集和传输,它们有的是的/开关量,有的是控制程序用于计算和比较的内部变量。只要加装简单的特定模块,既可利用的网络功能完成现场数据的采集和传输工作。
2 PLC联网功能的介绍
具有很强的联网功能"以1系列为例,它可以通过适配卡和智能模块组成多重网络结构,提供RS232/RS422等接口形式。组成多层次的网络,多联网台数可达100台之多"利用双绞线、同轴电缆、光纤电缆等传输媒质,以计算机适配卡、模块或模块与上位机联接和交换信息"同时又可以用模块在层次上进行组网,具有灵活的组网方式,为组成多台电梯监控系统提供了技术基础。
3 基于PLC的监控系统
基于的电梯监控系统有2种形式:针对生产厂家设计的控制系统;针对用改造的电梯"种形式的控制系统多采用板结构,板上设有许多七段数码管,或组成的矩阵显示系统信息,为了不影响原控制系统的性能,需要把板上显示信息用光电元件转换成可用传递的变量,再根据信息所代表的内容对变量赋值,利用二种形式进行监控"对于二种,直接选用有网络功能的作为系统的控制单元,例如OMRON公司的C200H等系列产品,即利用作为控制元件,又利用其网络功能为监控系统传输数据"而现今对后者的开发利用非常少,资源浪费很大。基于的监控系统构造如下:
(1)根据电梯数量和位置以及业主具有的条件选择合适的网络形式,然后进行组网。
(2)需要时编制必要的程序(有的网络形式下不需编程),把监控和被收集的数据存放于的区域上位机和其他访问。
(3)对故障进行实时监控,由电梯故障作为中断源,当门锁回路意外断开、门时间时!各类限位开关异常、各类保护开关异常、、急停回路断开、驱动状态异常、位置信息错误!抱闸异常等故障发生时,由故障电梯的发出中断请求,上位机响应后,收集故障信息,由上位机的监控系统做出相应的故障,然后按预先设定的程序自动派人维修。
(4)对于像运行时间和次数等通用工作信息,定时在固定时间(网络闲时)向上位机传输。
(5)在上位计算机上,编制主控程序,同时用组态软件模拟电梯运行状态,醒目地显示故障类型和故障点"制作数据库完成对工作信息、故障等作统计、分析、制作报表、打印等工作。
有关原始设备制造商 (OEM)的这部分调查提醒精明的客户关于丢失PLC软件程序的危险性以及当这些程序还在处理器中时备份PC程序的重要性。
我们是小型的提供服务的系统集成商,从事各种项目务请求。我们经常去修理停机的并且在PLC上亮红色故障指示灯的机器。这些PLC中有一些已经运行多年,而用户没有意识到控制器失去程序的危险性,直到我们向其提出这些问题。
有时可在线重启处理器,能在短时间内解决问题;但有时错误会重新出现,此时我们需要做大量的修复工作直至找出问题,如找出坏的输出卡或找出操作员不正确输入导致寄存器溢出的故障。
然而,大约在一半情况下,处理器不能重启或者不能对其进行上传。于是,我们会问客户这个通常令人伤心的问题:“你把程序存盘,或是打印出来吗?”此刻,他们会沮丧的重复这个问题,有时语无伦次。
通常,程序可在抽屉里的磁盘中或是文件中找到。它可从打印输出文档中重新输入。有时,多年以来做出的改动并没有保存,那么则需要付出很大的努力才能使机器恢复到近的操作状态。
但是,仍然有后一种可能性。有时,找不到程序使“程序在哪里”变成真正的问题时,只有逆向设计才能恢复机器。
如果你是机器制造者,那么你并不需要花太大心思去避免这种情况的发生。但是你应该放一个磁盘到面板的特定部位中,这样,当存取图表时它就不会失效,或是当转移到某人的文件柜里不致被遗忘。
可擦可编程只读存储器(EPROM)也是一个好办法。许多机器都不使用它们,原因可能是我们不在客户那里使用它,目的很特:我们做出如此多修正会成为EPROM的负担。但是对于一个稳定设计、重复使用的机器而言,这似乎是个不错的方法。
如果你是个系统集成商,那么你有义务和责任避免发生丢失程序的情况。对于客户来说,拥器、组件或程序行的详细清单,并将它们备份,这是个好的投资。如果他们有旧的处理器,尤其是从多个供应商那买的处理器,这笔投资过几天就可能出成效了。你将不得不去找出软件和电缆线,甚至还得安装DOS或是bbbbbbs3.1来运行旧的程序包。
精明的客户将会意识到当程序还在处理器中对其进行备份是相当重要的事。启动PC或笔记本电脑并运行相应的软件是件值得做且重要的事,在没有发生紧急情况时效果好。
作为系统集成商,我们习惯做这种事情。有可能的话,一开始我们会得到一些有注释的程序的副本。处理器上传程序里没有注释,所以我们需要寻找磁盘,并联系机器厂商。我们连接到处理器,进入到处理器上传的程序中,处理器中记录着程序的版本。除了我们要提供服务的控制器外,额外的工作就是对其他控制器进行同样的处理。我们经常针对生产线作些变,调整时间设定,进行故障检修,或程序扩展之前保存程序。
我们也在办公服务器上为每个客户创建一个文件夹,在此服务器上我们可以得到所有的程序。结果,通常是在若干年后,我们为客户解决了难题。
这个当然不是制造工作,但却也不是个无用的事。只需问问工厂或维护管理者他们在费尽心思找寻如何处理导致整个工厂停工的执行关键任务的搅拌机的办法后,终寻得程序时的那种心情就能理解了。
对于终用户,这像是个。记得千年虫吗?这是个实例。是OEM使你的泥浆传送机系统或是堆积机仍在商业运作中?今晚如果你的生产系统突然停工你将怎么办?
我们提醒了你,剩下的就由你来决定了。
面向对象编程是计算机语言的一种的编程模式,在工业控制系统的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厂开发了大量的程序库,但工业控制对象各式各样,不**业都应该拥有自己的程序库,而代码的可重用性是评价这些功能块好坏的关键。
3、 设计思想的性
在电路图设计中我们早已经在使用针对控制对象的绘图方式,即把基本的主配送电路和PLC配置完成后,我们会针对每一个现场控制对象如:电机、阀、气缸等控制对象绘制电路图,他们的电源来自主配送电路,控制和反馈与PLC建立连接,硬件连锁根据实际情况调整,一个个控制对象就象搭建积木一样有组织的堆积起来,同样的,编程也是针对一个个控制对象使用相应的标准控制块实现就可以,把程序控制细节实现了有效的封装,使程序看起来简洁和易于维护,而好的设计可以把原理图和程序进行很好的关联,甚至于做到一对一的关系,如原理图中的一个控制对象可以在程序中找到相应的FB调用与之对应,真正做到面向控制对象编程。
可能有人疑虑,PLC编程大部分是步进编程,这一个个标准块都是针对控制对象的,那控制顺序如何实现呢?这就要求编写专门的顺序控制FB块,或者使用Siemens现成的Graph7来实现,这点与一般编程没什么差别。
结束语:现在的工业控制领域有很多程序高手,他们很精通算法,也有着自己的编程理念,当我和一些人探讨标准化时,他们认识到标准化的性,但认为这样无法体现自己的编程水准,是的,如上所述作为应用层面的程序设计是不要很高的编程水平,但要想想,一个人难道能一辈子去搞现场调试吗?若想体现自己的,可以从事标准编程。我希望他们能花一点时间研究程序架构,各行各业,真正的是系统架构设计者,编程小技巧只不过是为好的架构锦上添花。
愿中国的工业自动化能够早日摆脱小作坊式的时代!