实现电子凸轮的功能在包装机上的应用.doc
PLC 实现电子凸轮的功能在包装机上的应用 赵伟博福-益普生(天津)制药有限公司 摘要: 本文探讨了在不使用专用的电子凸轮模块的条件下, 利用PLC和编码器通过 Profibus-DP总线配合实现电子凸轮功能的方法和原理, 并具体分析了这种方法在包装机上的应用。关键词:凸轮控制, 编码器,Profibus , PLC Application of electrical cam control function performed by PLC in packaging machineAbstract : This article discusses the methods and principle to be used for electrical cam control function by utilizing the PLC and encoder through Profibus-DP , and then analyse the detailed application of this method in SIG RGS1/KG8 type packaging machine. Keyword : cam control encoder Profibus-DP PLC.凸轮传动是机械传动的重要方式之一。但是机械凸轮控制器在设计完成后, 其从动件的运动轨迹即被确定, 若要改变运动规律必须重新设计安装凸轮。此外,机械凸轮的数量也受到机器尺寸及复杂程度的限制。如果要求在进行多工位机械传动的同时,还要在相应的位置驱动执行元件产生动作并进行监控,比如我们要求机器在高速运转过程中,每当它转过某一角度时,既要使相应的机械结构要按预定的运动规律产生动作,同时还要驱动若干气缸动作,而且在从这一角度开始的某个区间内还要检测某个光电开关的信号是否存在,这样的功能单靠机械凸轮来实现将非常困难甚至根本无法实现。而电子凸轮与机械凸轮配合,则可以轻松完成以上功能,其中机械结构的运动规律由机械凸轮实现,其他功能则由电子凸轮完成。所谓电子凸轮是指通过位置编码器获得当前驱动轴的角度或位移, 然后与凸轮程序中的凸轮轨迹起始点或时间的设定值进行实时比较, 从而确定凸轮轨迹的状态并产生对应的输出信号。目前许多公司都生产有专用的电子凸轮控制器作为PLC的一种可灵活配置的智能模块,如西门子的WF707模块可作为S5和S7系列 PLC的智能模块,它可独立于PLC的CPU工作,扫描周期为57.6 us(32 cams)或115.2 us (64 cams) , 每个凸轮控制器可配置32或64个凸轮程序,可直接输出16个凸轮轨迹状态。若要增加凸轮轨迹输出,可通过PLC编程实现。模块的运行需要三种输入数据,分别是实际值、机器参数和凸轮程序。实际值由安装在机器主轴上的编码器提供。机器参数和凸轮程序由PLC传送到模块。此外,模块还需要专用的软件包进行初始化。电子凸轮控制器可在高速运动过程中进行高精度的位置控制,无论是控制精度还是配置的灵活性,都是机械凸轮无法比拟的。但是,电子凸轮控制器作为一种智能模块,它的价格较为昂贵不但增加了硬件投资,而且如果模板发生故障,还会产生高昂的维修费用并影响生产。其实根据电子凸轮的原理,我们完全可以在PLC中用程序来实现同样的功能,而不必采用专用的模块。但这样做需要一个前提,那就是PLC必须能和编码器进行通讯。这时因为专用的电子凸轮模块上都直接配置了编码器接口,而一般PLC的CPU上没有编码器接口。但是PLC的CPU上一般都集成有现场总线接口,如 Profibus-DP 接口,而许多编码器产品都支持Profibus-DP协议,因此采用现场总线实现PLC和编码器的通讯是一种可行的方案。下文探讨的就是这种方案的在包装机械上的具体应用。电子凸轮主要有两种类型,一种是轨迹-轨迹式凸轮(path path cam), 它需要在凸轮程序中为每个凸轮设置一个轨迹起点和轨迹终点。当实际位置(角度或位移)达到轨迹起点时,凸轮被置位;当实际位置到达终点时,凸轮被复位。另一种是轨迹-时间式凸轮(path-time cam), 它是在凸轮程序中为每个凸轮设置一个轨迹起点和持续时间。当实际位置达到轨迹起点时,凸轮被置位,然后经过预设的时间后,凸轮被复位。本文将主要应用第一种凸轮。SIG RG8/KG1包装机在功能上分为两部分, 分别是小袋成型、装料及传送部分( 以下简称RG) 与小盒成型、装盒及传输部分(以下简称 KG) 。这两部分通过机械传动来配合动作。整机由一台SIEMENS 主轴电机驱动,装料系统由8台 SIEMENS 伺服电机驱动喂料螺杆同时对8个小袋装料。在RG 和KG的主传动轴上各安装了一只编码器,通过 Profibus DP 网络与 S7-400 CPU 进行数据通讯,将RG 和KG 主传动轴的当前角度值传送给CPU , 在CPU内通过程序来实现电子凸轮的功能。操作员可通过在MP370触摸屏上的相应画面上查看或设置各个工位的凸轮轨迹起始点的设定值,即凸轮轨迹的ON / OFF 值。机器的制造商并没有使用专用的电子凸轮控制模块和相关的软件包,而是直接在应用程序中通过编程实现上述功能,这不仅节省了硬件投资和相关的软件费用,而且充分利用了PLC 的强大功能和资源,在程序设计上更显简洁、合理和可靠。本机的控制系统采用SIEMENS S7-400 PLC(CPU 412 2DP)。CPU 通过Profibus- DP 总线与RG/KG 主传动轴上的编码器进行数据通讯。为篇幅所限,这里仅以KG主轴凸轮为例进行分析。首先, 为了对实时变化的角度进行快速响应,对编码器输入脉冲信号的处理被放在定时中断处理程序OB32中,OB32以5 ms的间隔被反复执行。编码器输入脉冲的处理程序如下:L PED868 ; 装入计数脉冲数。DTR ; 将脉冲数转换为实数。L 8.78963 e-002 ; 乘以单位脉冲对应的角度。* RT MD812 ; 保存结果。KG主轴编码器将记数脉冲数(对应于KG主轴转过的角度)送入CPU, CPU将其做为外部输入(双字) PED868读入。编码器的精度为12 位,所以KG主轴转一周,编码器所记脉冲数为4096。即双字PED868 中的数据为一个0 4096 之间的32位整数。因KG主轴转360 度发出4096个脉冲,那么每个计数脉冲对应的角度就是 360 / 4096 = 8.789063 e-002 。 将 PED868 中的双整数转化为实数后,再与单位脉冲所对应的角度相乘,既可得出采样时刻KG主轴所在的角度值,并将这一结果送入MD812 双字存储器。凸轮数据包括凸轮轨迹设定值和相应的状态位。KG主轴凸轮轨迹的设定值(即ON / OFF 设定点)由触摸屏上的相关画面输入。为此在PLC 中专门建立了一个数据块 DB4,用来存放由MP37触摸屏输入的凸轮数据。每一组凸轮数据包括一组 ON / OFF 设定值,它们各占用一个32 位数据字。因此每组凸轮数据占用数据块 DB4 中的连续8个字节(64 位)。如DB4 中的DBD1280数据双字中存放的就是凸轮1的ON 值( DBD1280 表示从地址为1280开始的连续4个字节1280/1281/1282/1283,即连续32位);而DBD1284数据双字中存放的就是凸轮1的OFF 值( DBD1284 表示从地址为1284开始的连续4个字节1284/1285/1286/1287,即连续32位)。DBD1288存放的是凸轮2 的ON 值,DBD1292存放的是凸轮2 的OFF 值。其他凸轮数据的存储方式依此类推。除了每组凸轮数据的 ON / OFF 设定值以外,程序还为每组凸轮轨迹设置了一位状态位。它使用数据块DB4中从起始地址2580开始的连续32位(4个字节,双字寻址)表示。即DB4.DBD2580.0 表示凸轮1 轨迹的状态, DB4.DBD2580.1 表示凸轮2 轨迹的状态, 依此类推。在定义了每组凸轮数据后,接下来就要进行实时角度与 ON / OFF 设定值的比较,从而确定每组凸轮轨迹的状态。这部分程序被放在一个功能块 FB106 中。通过定时中断处理程序 OB32 ,CPU 每5 ms 调用 FB106 一次。在调用FB106功能块时,主程序需要向FB106 传送实际参数,它们分别是当前的KG主轴角度 MD812 ,数据块号DB4, 数据字起始地址 1280 , 凸轮数量 32 和凸轮轨迹状态位起始地址 DB4.DBD2580 。在OB32中的调用指令如下: CALL FB 106 , DB108 Aktueller_Winkel_Real: =MD812 Datenbaustein : =DB4 Erste_DBD_Adresse : =1280 Anzahl_Nocken : =32 Nocken_0_31 : =DB4.DBD2580 Nocken_32_63 : = NOP 0在程序块FB106中,角度的比较和计算方法如下:我们以KG主轴凸轮1 为例加以说明。(程序如下)Network 1: OPN #DatenbausteinNetwork 2: L #Erste_DBD_Adresse ITD SLD 3 T #DBD_Adresse L P#Nocken_0_31 T #Nocken_AdresseNetwork 3: L #Anzahl_NockenNock: T #Loop_Anz_Nocken L DBD #DBD_Adresse T #Einschaltpunkt L #DBD_Adresse L P#4.0 +D T #DBD_Adresse L DBD#DBD_Adresse L #Aktueller_Winkel_Real L #Ausschaltpunkt <=R = DIX #Nocken_AdresseNext: L #DBD_Adresse L P#4.0 +D T #DBD_Adresse L #Nocken_Adresse L P#0.1 +D T #Nocken_Adresse L #Loop_Anz_Nocken LOOP Nock L #Einschaltpunkt L #Ausschaltpunkt >R JC Win1 L #Aktueller_Winkel_Real L #Einschaltpunkt >=R = #Merker L #Aktueller_Winkel_Real L #Ausschaltpunkt <=R A #Merker = DIX #Nocken_Adresse JU NextWin1: L #Aktueller_Winkel_Real L #Einschaltpunkt >=R = DIX #Nocken_Adresse JC Next T #Ausschaltpunkt首先,程序打开数据块DB4 , 将凸轮1 的ON / OFF 设定值装入,接下来判断 ON / OFF 设定值的两种不同设置情况。第一种情况是 ON > OFF , 此时程序跳转到标号为 WIN1的语句开始执行。首先判断当前角度值 MD812 是否大于等于 ON 值,如果 MD812 大于等于 ON 值, 则将凸轮1 轨迹的状态位,即DB4.DBD2580.0 位置1。如果 MD812 小于 ON 值, 则继续判断 MD812 是否小于等于 OFF 值, 如果 MD812 小于等于OFF 值, 则 DB4.DBD2580.0 也置1 , 否则为0 . 综合以上分析可得: 当凸轮1 的ON > OFF 时, KG 主轴角度在ON , 360 和0 , OFF 区间内时,其凸轮轨迹状态位 DB4.DBD2580.0 为1 , 在此区间以外为0第二种情况是 ON < OFF , 此时如果 ON MD812 OFF , 则其凸轮轨迹状态位 DB4.DBD2580.0 为1 , 在此区间以外为0。综合以上两种情况,可得出如下图所示的结论。( 图中阴影部分即为凸轮轨迹状态为1的闭区间)以上我们分析了KG 主轴凸轮1 的计算比较结果,其他组凸轮的数据按同样方式处理。由于在程序中采用了指针变量间接寻址和循环结构,调用FB106一次即可完成全部凸轮数据的比较计算。即调用FB106一次,从DB4.DBD2580.0 位开始的连续32位将按照各个凸轮轨迹的比较计算结果而被相应的置1 或置0。紧接着在主程序OB1中,将各凸轮轨迹状态位的值,即存储在 DB4.DBD2580中的值(连续32位), 送入双字存储器 MD524 (连续4个字节)。 也就是说,用 M524.0 至M527.7 这连续32 位的状态参加机器各工位的控制。我们将以上分析结果列表如下:DB4.DBDDB4.DBDCamONOFFCam trackTrack scanDescription1128012842580.0M524.0Valve bag wall forward2128812922580.1M524.1Valve swivel cup3129613002580.2M524.24130413082580.3M524.35131213162580.4M524.4Valve carton pull off6132013242580.5M524.5Valve air carton erector7132813322580.6M524.68133613402580.7M524.79134413482580.8M525.0Valve coder10135213562580.9M525.1Valve presser17140814122580.16M526.0Valve hot melt apply cover (in front)18141614202580.17M526.1Valve hot melt apply cover (in rear)19142414282580.18M526.2Valve hotmelt apply cover20143214362580.19M526.321144014442580.20M526.4Start prospect pull off24146414682580.23M526.7Windows registration (valve prospect feed stop)23145614602580.22M526.6Monitoring prospect feed stop25147214762580.24M527.0Monitoring prospect jammed26148014842580.25M527.1Monitoring prospect missing in series下面以KG 部分打印批号的工位为例,说明凸轮轨迹状态位是如何参加控制的。这部分程序放在FC410 程序块中(程序如下)。 A M 525.0 FP M 1410.0 A M 622.0 A DB92.DBX 23.2 L DB410.DBW 2 SE T 73 NOP 0 NOP 0 NOP 0 A T 73 = A 218.4由上表可知,M525.0 为KG凸轮9 的轨迹状态位, 它的轨迹设定值为 ON =50 , OFF= 0 , 即当KG 转至50至360度区间时, M525.0 为1 。但在这里我们要求在KG 刚好转过50度时, 产生打号动作, 因此程序中使用了M525.0 的上升沿跳变指令以产生单脉冲效果。 也就是说虽然M 525.0 在50至360度区间内都为1, 但程序仅利用它在转过50度时由 0到 1 的跳变, 使M 1410.0 接通一个扫描周期, 在这之后, 虽然 M525.0 仍然为1 , 但M1410.0 已为0, 当KG 转过360度时, M525.0 才由1变为0。 只有当KG 再次转过50度时M525.0 才能再次产生由0到1的跳变, M1410.0则再次接通一个扫描周期, 如此周而复始。在 M1410.0 为1 时, 若另外两个条件也同时满足 ( 即M622.0 为1, 表示触摸屏上的操作按钮已按下, DB92.DBX23.2 是移位寄存器中的一位,该位为1时表示小盒已传送到该工位) , 则触发一个脉冲定时器T73 , 使PLC 输出A218.4 ( 驱动打号气缸) 接通一个预定的脉冲时间。 A218.4 关断后, 打号气缸返回, 完成一次打号动作。下一次KG转过50度时,再次执行这一动作, 如此反复执行。 如果在M1410.0 为1期间, 其他两个条件有任一个不满足时, 比如因某种原因小盒没有传到该工位上, 或操作员忘记按下触摸屏上的操作按钮, 则定时器T73 不会被触发, A218.4 不会接通 , 打号气缸不动作。以上我们较详细的分析了KG主轴凸轮数据的编程和应用,RG部分的编程和控制方法与KG部分完全相同。RG 主轴凸轮数据也存放在数据块 DB4中, 但其 ON/OFF数据字和的凸轮轨迹状态位的起始地址与KG主轴不同。即在中断程序 OB32 中,有两段调用FB106 的操作,一次是对KG凸轮数据进行计算,一次是对RG凸轮数据进行计算,两次调用所传送的参数不同,这样设计使程序在逻辑上更为清晰、简洁。在应用凸轮轨迹状态时,除了使用 ON / OFF 区间状态外, 还大量应用了 ON / OFF 的上升 / 下降沿跳变状态以实现单脉冲功能,从而使某些复杂的监控功能得以实现。这都是充分利用 PLC 的丰富功能和资源通过有效编程来实现的,这对我们有很好的借鉴价值。参考文献SIG PACK Beaufour Ipsen china RGS-8/KG1 RG014/KG1-002 PLC program documents.作者简介: 赵伟,1970年4月8日出生,博福-益普生(天津)制药有限公司设备部维修工程师。电话: 022-83710343-8581E-Mail : wei.zhao