轮毂柔性自动加工单元中联动程序设计.doc_第1页
轮毂柔性自动加工单元中联动程序设计.doc_第2页
轮毂柔性自动加工单元中联动程序设计.doc_第3页
轮毂柔性自动加工单元中联动程序设计.doc_第4页
轮毂柔性自动加工单元中联动程序设计.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

轮毂柔性自动加工单元中的联动程序设计Program Designing of Wheel Automatic Flexible Machine Unit于存谦,魏巍,张吉(沈阳机床股份有限公司,沈阳 110142)Yu Cunqian, Wei Wei, Zhang Ji ( Shenyang Machine Tools Co.,Ltd.)摘要:随着汽车市场的蓬勃发展,国内对于汽车关键零部件的生产工艺,质量和生产效率也有了更高的要求,同时随着经济的发展,现有的用工成本也越来越高,加之国家大力扶植国内数控生产线的发展,沈阳机床集团设计研究院在大量的调查和研究基础之上,设计了轮毂柔性自动加工单元。作者为该单元设计了联动程序,参考了工艺和工序的要求,并充分考虑到多工件时候容易产生的多动作时序需求,以及在程序中依据传感器检测和逻辑控制要求,达到向单元中其他部分发送命令和监控的要求。整个加工单元经受住了300小时不间断无故障运行的考验,现已经进入可以实际生产销售的阶段。关键词:网络化制造;数控机床;联动程序AbstractWith the development of automobiles, the require for manufacture technics, quality and efficiency of key parts of automobiles at home, and at the meanwhile, the cost of workers is running higher with the development of society, and together with the powerful supporting to the development of domestic numerical machine tools from government, the wheel auto-machine unit has been designed and produced by the Designing and Researching Institute of SYMG after much researching and inquisition. The writer designed the the linkage program that consults the require of manufacture technics and working procedure and multiple-movements for multiple-wheels to be machined, and also consults the require of usage of sensors and logic control, which fulfils the require of sending commands to other sections in unit and the require of supervising others. The whole unit has stand up to the 300 hours non-stop running trial without fault, and now it is at the stage of production for sale.Keyword:network manufacturing;CNC machine;linkage program1、引言随着汽车市场产品的更新要求加快,汽车制造越来越呈现出注重产品多元化、小批量生产和以市场需求为导向等发展新趋势。因此,汽车零部件生产线也向着适应多品种、小批量、低成本的高速化、柔性化和高效设备的生产方式发展。轮毂的制造工艺、装备和检测一直是发动机生产中的重点,其加工精度和一致性的好坏对汽车整体性能的影响很大。面对我国广阔的汽车市场,汽车关键零部件升级换代的速度加快,生产厂家必须考虑生产线不仅要满足当前生产,而且也要考虑将来生产线改造的可能。在未来几年,国内汽车关键零部件生产线的市场非常广阔。在国家的大力扶持下,国内数控机床行业在近年来有了很大的进步,对生产线的部分关键技术展开研究,取得了一定的成果,在国内汽车零部件生产线制造市场占有一定的份额。由于我国机床制造商仅能提供一些较低水平的生产线,还不能满足中国汽车行业发展需要。因此,开展汽车发动机关键零部件生产线技术研究,对于满足我国汽车行业快速发展和提升机床制造企业的竞争能力都是十分迫切和必要的。2、轮毂柔性自动加工单元简介单元功能:本单元为自动生产线,可同时加工15个轮毂,加工过程安全高效。设备组成:本轮毂加工单元由立式车削中心,立式加工中心,机器人,PLC单元,上位机监控系统,厚度测量装置,视觉检测装置,传感器等设备组成。单元结构:本单元共设9个工位(具体分布详见图1.1):1.上料台,2.储料区,3.立车前工位,4.立车加工区,5.立车冲洗区,6.厚度测量站,7.视觉检测区,8.立加加工区,9.不合格品区。图1.1 轮毂单元位置示意图本单元可实现15个轮毂的自动加工,为了清楚的展示多轮毂的加工过程,我们首先介绍单个轮毂的加工流程。如下图:图1.2 轮毂加工流程图多轮毂是的状态较单个轮毂复杂得多,因为涉及到单元中各部分可能同时加工,同时发出动作请求的情况,即多轮毂多动作,此时如何安排各动作的次序和前后逻辑关系,以及如何向立车、立加和机器人发出信号,并保证整个单元能够有序无误的运行下去,就是一个难点。我们遵循着工件先出后进的原则,同时使用大量的存储器和计时器,保证机器人在执行某个搬运动作的同时也可以接受单元中其他部分传来的动作请求,并保证单元多工件时的高效运行。例如,当“8-1运送”和“5-6运送”请求同时到来时,机器人将首先执行“8-1运送”,完成后再执行动作“5-6运送”。3、加工单元中联动程序的设计3.1、设计思路首先与机械设计人员沟通制定工件加工工序,与单元其他部分电气设计人员沟通论证时序和工序的逻辑合理性,这是编写程序的基础。其次确定负责通信的变量名称和物理地址,名称统一使用汉语拼音或英文命名,并与上位机设计人员、机床电气设计人员和机器人程序设计人员沟通一致,确保双方变量名称一致。整个程序设计一个主程序,作为整个程序的入口,并设计有开关和初始化部分如测量站部分的置量程和零点过程。对于逻辑部分和私服控制部分分别设计两个主程序,在PLC中循环扫面执行,并设置逻辑部分扫描时间大于私服控制程序扫描时间且为整数倍。将涉及9个工位的9个搬运动作和测量动作等,分别作为13个子程序单独设计,独立运行,而后由主程序进行调用,因为涉及到“多轮毂多动作”的要求,程序设计的难点就在于充分考虑其中的逻辑矛盾和关系。对于IO变量,因为需要和两台机床及机器人进行通信,所以需要将其设计成全局变量ix%、ox%(这是施奈德PLC所要求的),然后将这些全局分别转换成内部变量mx%以便在程序中进行逻辑运算。针对一些危险动作和可能发生错误的动作,我们均设计了急停,并将急停命令同时传送给机床和机器人,并做标记,以便监测人员进行后续的修改和调试。针对一些传感器容易受到外界条件影响而导致误操作的(如光电传感器受高强光线影响而传递假信号),我们在程序中为每一个传感器分别设置了信号门限,对于达到一定时间长度的传感器信号才予以考虑。最后 ,在充分仿真模拟的基础上,进行实物调试。3.2、硬件选用与组态3.2.1、硬件构成本PLC单元设备及伺服控制器均选用施奈德电气产品。选型如下表:表3.1 硬件选型表使用SoMachine软件中的检索和拖动功能,选取所需模块,托至指定区域,软件将自动连线并配置相应接口。双击单个模块可对其具体参数进行配置。如图3.1所示,为各模块连接情况。图3.1 SoMachine软件中硬件的组态图3.2.2、主要组态(1)变量的地址分配先将所需变量填写在全局变量表中(局部变量不能被IO绑定),然后在模块中绑定。如图3.2为数字量输入模块TM2DDI16DT的变量绑定实例。变量一列为已经在全局变量表GVL_IO中设定好的变量名称,地址一列为实际物理地址,类型列说明变量类型,带有贯穿横线的说明已经被绑定。图3.2 I/O地址与全局变量的绑定(2)任务配置两个任务逻辑任务MAST,伺服任务SERVO,扫描类型均设置为循环,循环间隔分别设置为40ms和20ms。这样设置的目的有两个,一是SERVO扫描的时间较短,保证可以接收到MAST传来的任何指令,二是40ms和20ms都可以整除心跳时间200ms,保证CANopen总线的通信连接,理由参见(3)b中解释。(3)伺服控制器组态a、使用SoMove软件为伺服控制器配置组态,在本方案中我们主要设置了伺服波特率为500k(波特率为数据传输的速率,距离越远波特率需要设置的越低衰减原因,反之越高),节点ID为3;b、同时在SoMachine软件中配置CANopen总线组态,且保证波特率和节点ID与SoMove中设置一致;心跳时间设置为200ms,心跳时间的作用为每隔一段时间,伺服控制器与PLC进行一次“握手”,确保两端为连接状态,心跳时间需设置成所有任务扫描时间的整数倍,如此例中设置为20ms和40ms的公倍数。(4)以太网模块组态为PLC与上位机通信服务,采用MODBUS总线,以太网协议,介质为RS485。需在模块中设置寻址为从站,给定地址,同时配置IP地址、子网掩码和缺省网关,详见图3.3。 图3.3 通信组态3.3、程序设计与调试采用结构化文本STL语言编写,程序主要分为三部分:1.程序主入口Start块;2.子程序执行部分,各单步块,测量块,数据传输块;3.伺服控制部分Servo块;4、此外还有全局变量模块和专为伺服控制器设计的结构体模块。3.3.1、逻辑部分主程序程序主入口Start块功能如下:(1)、测量站零点和量程的初始化;(2)、伺服使能赋值;(3)、工作模式选择自动或者手动。(4)、工作正常信号检测:必须在立车、立加和机器人同时存在工作正常信号的情况下,才能启用单步运行程序,调用程序块Unit_run。程序段initial CeLiangZhan负责初始化测量站,包括置零点和测量程两部分;程序段for CeLiangZhuangZhi ShenSuo的目的是为了保证测量装置在未收到伸出命令时保持缩回状态,以防止意外伸出造成损害和人员伤害;程序段Enable the Servo的作用是为伺服程序的使能变量赋1,而后伺服开始初始化,保证程序在每次运行时,伺服都能够正常工作;程序段Select the Model of service的作用是选择整个单元的服务方式,其中包含自动和手动两种方式;最后的程序段check if the servo is running的作用是检查伺服是否旋转,并将伺服状态信息传递给上位机以进行实时监控。整个程序的核心为程序段Select the Model of service,该段中不仅包含模式选择功能,同时也会读取实际IO物理地址变量信息,调用子程序VAR_TRANS_READSTATUS将这些变量转换为PLC内部变量为其后的逻辑运算部分做准备,原因是与物理地址捆绑的全局变量无法准确参与逻辑运算。同时,该段中还包括急停后的程序自动恢复功能,保证操作员即使在无编程基础的情况下,也能轻松恢复整个单元状态,保证生产继续进行。代码如下:(*initial CeLiangZhan*)/first-initial the state of CeLiangZhanIF initialCZ_f=1 THENIF me_f=0 THENMeasStep:=10;me_f:=1;END_IFMeasure();ton3(in:=me_f,pt:=T#13S);IF ton3.Q=1 THENinitialCZ_f:=0;END_IFEND_IF(*for CeLiangZhuangZhi ShenSuo*)IF clZzSc_QM=1 THENclZzSh_QM:=0;ELSEclZzSh_QM:=1;END_IF(*Enable the Servo*)IF servo_enable=0 THENMasterAxie.Power:=1;servo_enable:=1;END_IF(*Select the Model of service*)IF fwMs_M=0 THENfwMs_num:=0;ELSIF fwMs_M=1 THENfwMs_num:=2;END_IFCASE fwMs_num OFAUTO_RUN:/the whole unit keep auto-running VAR_TRANS_READSTATUS();(*Check if there emergency stop*)IF dyJt_M=1 THEN ELSIF (lcGzZc_IM=1 AND ljGzZc_IM=1 AND jrGzZc_IM=1) OR temp_switch=1) THENme_c:=0;me_f:=0;Unit_run();/start running the whole unitEND_IFMANUAL_CONTROL:/the whole unit running controled by the up-level PC (*Check if there is an emergency stop*)VAR_TRANS_Q();IF dyJt_M=1 THEN ELSIF (lcGzZc_IM=1 AND ljGzZc_IM=1 AND jrGzZc_IM=1) OR temp_switch=1) THENme_f:=0;me_c:=0;Unit_run();/start running the whole unitEND_IFEND_CASE(*check if the servo is running*)IF ABS(MasterAxie.ActVelocity)=2 THEN slXz_M:=1;ELSEslXz_M:=0;END_IF3.3.2、子程序执行部分13个子程序,包括读写IO程序(1个),逻辑部分程序(11个),测量站模拟量换算程序(1个)。(1)、Unit_run:各单步程序入口,按顺序调用各自单步动作程序,也包括关机急停功能,再启动自动清除急停功能;(2)、Step1_2:上料台旋转、1-2运送功能;(3)、Step3:2-3运送功能;(4)、Step4:3-5准备和运送功能;(5)、Step5:工件清洗和5-6运送功能;(6)、Step6:6号位工件检测,控制顶针和测量装置动作,同时调用Measure子程序;(7)、Step7:6-3运送功能;(8)、Step8:3-7运送功能;(9)、Step9:3-7相应功能;(10)、Step10_11:拍照和7-8运送功能;(11)、Step12:8-1准备和运送功能;(12)、VAR_TRANS_Q:负责实际IO和PLC内部寄存器变量的转换;(13)、Measure:通过设置一个整形变量lgFmHd_I利用模拟量输入模块的电流原理,测算轮毂厚度。由于篇幅有限,下面我们仅就子程序Step1_2进行举例介绍。该子程序主要实现目的有:轮毂在一号位的识别、顶针伸出定心与固定工件、旋转工件以识别并调整工件气门孔位置、发送1号位到2号位的运送通知命令、通知立车轮毂已进入,同时还有急停保护功能等。首先,如果1号位的红外线传感器检测没有轮毂,同时顶针没有伸出,且此时也无8号位到1号位的运送动作的话,启动DingZhen ShenChu程序块。在该程序块中,当程序检测到轮毂已放置好后,顶针伸出,顶针有3个,每个相隔120度,伸出后既可以起到固定轮毂的作用,同时也将使轮毂的中心与1号位的中心重合。然后,先后有6个计时器,分段工作,负责控制伺服的六个动作的计时功能,伺服旋转的作用是让接近开关检测轮毂上的突台,该突台的作用是识别轮毂的角度,当接近开关检测到突台后,电机向反方向旋转一个特定角度后,轮毂位置固定完毕。而后启动DingZhen SuoHui程序段,该段中使用一个计时器,负责在几秒钟的时间之中将顶针缩回到位,释放轮毂,并将赋值给一些标识变量,以通知后续程序继续进行,同时又不会重复之前的旋转动作。最后启动1-2 YunSong程序段,其作用是向机器人发出1-2号位的运送通知、在运送动作完成后告知立车轮毂已经到位,以及将所有计时器全部重新置位,标识变量全部清零,准备接收下一个轮毂;该段中还有在负责危险动作的急停功能。“Avoid the servo is failed, and make the program keep running on”程序段较特殊,其作用是在伺服与PLC的通信意外中断或伺服程序出现混乱的情况下,将程序强行执行下去,其中包含的一些标识变量可以保证程序继续顺利运行,避免重复之前动作,并将自动将程序切换到无伺服控制状态。代码如下:(*DingZhen ShenChu*)IF (slGjJc_IM=1 AND dzsc=0 AND fwXl_M=0 AND ysxy81_IM=0) THEN/when ShangLiaoTai testing sensor is 1, which stands for no wheel.ton1(in:=slGjJc_IM,pt:=T#15S);IF ton1.Q=1 THENslDzSc_QM:=1;END_IFIF error_happen=0 THENton2(in:=slDzSc_QM,pt:=T#2S);IF ton2.Q=1 THEN IF cont=0 AND turn_a=0 THENcont:=6;turn_a:=1;END_IFIF cont=6 (*AND forward_turn=0*) AND AxisStep=30 AND round_cont1=0 THENMasterAxie.ParaVelocity:=300;MasterAxie.ParaDistance:=327680;/program for servo:looking for TutaiMasterAxie.MoveAdditive := 1;round_cont1:=round_cont1+1;END_IFEND_IFEND_IFEND_IF(*Avoid the servo is failed, and make the program keep running on*)IF (AxisStep=150 OR AxisStep=160) AND slGjJc_IM=1 AND slDzSc_QM=1 AND dzsc=0 AND fwXl_M=0 AND ysxy81_IM=0) THENtt_got:=1;error_happen:=1;dzsc:=1;END_IFIF (AxisStep=60 AND slGjJc_IM=1 AND slDzSc_QM=1 AND dzsc=0 AND fwXl_M=0 AND ysxy81_IM=0) THENton_error(in:=slDzSc_QM, pt:=T#15S);IF ton_error.Q=1 THENtt_got:=1;error_happen:=1;dzsc:=1;END_IFEND_IF(*DingZhen SuoHui*)IF (slGjJc_IM=1 AND dzsc=1 AND fwXl_M=0 AND ysxy81_IM=0) THENIF (*cont=0 AND *)tt_got=1 AND slXz_M=0) THENton3(in:=tt_got,PT:=T#3S);slDzSc_QM:=NOT ton3.Q;slDwwc_M:=1; /Fixing position is doneton4(IN:=NOT slDzSc_QM,PT:=T#2S);ysjc:=ton4.Q;tt_got:=NOT ton4.Q;END_IFEND_IF(*1-2 YunSong*)ton_2wJc1(in:=NOT clGjJc_IM,pt:=T#2S,Q=_2wYw1);/avoid the short 0 signal from influence of wildIF (_2wYw1=1 AND ysjc=1 AND tt_got=0 AND slXz_M=0) THENystz12_QM:=1;ysjc:=0;END_IFIF (ysxy12_IM=1 OR step1_2_TimerReset1=1) THENystz12_QM:=0;IF dzsc=1 THENturn_a:=0;END_IFEND_IFIF (yswc12_IM=1 OR step1_2_TimerReset2=1) THEN fmLcQq_QM:=1;slDwwc_M:=0; /Fixing position is reset to 0dzsc:=0;cont:=0;END_IF3.3.3、伺服程序施奈德专门为伺服编写的结构体和伺服FB程序,可满足Jog模式,走速度,走增量,走绝对值等功能。只要在逻辑子程序中修改相应变量,即可实现功能。设计中使用该程序块的走增量功能,控制上料台电机旋转,来帮助轮毂定位。其中用到等待WAIT,上电POWER_ON,待命READY等功能,通过结构体变量AxisStep来选择使用哪个功能块。伺服控制模块代码我们节选如下:CASE AxisStep OF(* WAIT *)STATE_WAIT:(* STATE: Wait *)StringLen:=LEN (Wait);StringInfor := LEFT (Wait,StringLen);IF MasterAxie.Power=1 THENAxisStep := STATE_POWER_ON;ELSEMC_Power_0.Enable := 0;END_IF(* POWER ON *)STATE_POWER_ON: (* STATE: Power on *)StringLen:=LEN (PowerOn);StringInfor := LEFT (PowerOn,StringLen);MC_Power_0.Enable := 1;IF (MC_Power_0.Status = 1) THENAxisStep := STATE_READY;END_IF(* READY *)STATE_READY: (* STATE: Waiting for commands *)StringLen:=LEN (Ready);StringInfor := LEFT (Ready,StringLen);IF (MasterAxie.Home = 1)THENMasterAxie.Home := 0;AxisStep := STATE_HOME;ELSIF (MasterAxie.MoveAdditive = 1) THENMasterAxie.MoveAdditive := 0;AxisStep := STATE_MOVE_ADDITIVE;END_IF(* START ADDITIVE MOVEMENT *)STATE_MOVE_ADDITIVE: (* STATE: Start additive movement *)StringLen:=LEN (Additive);StringInfor := LEFT (Additive,StringLen);MC_MoveAdditive_0.Distance:= MasterAxie.ParaDistance;MC_MoveAdditive_0.Velocity:= MasterAxie.ParaVelocity;MC_MoveAdditive_0.Execute := 1;(* check if commanded distance is reached *)IF (MasterAxie.Stop = 1) THENMasterAxie.Stop := 0;MC_MoveAdditive_0.Execute := 0;AxisStep := STATE_STOP;END_IF(* MC_POWER *)MC_Power_0(Axis:= Master );IF(MC_Power_0.Status = 1)THEN(* MC_READACTUALPOSITION *)MC_ReadActualPosition_0(Enable:=TRUE,Axis:= Master);IF(MC_ReadActualPosition_0.Valid = TRUE)THENMasterAxie.ActPosition := MC_ReadActualPosition_0.Position;END_IF(* MC_READACTUALVELOCITY *)MC_ReadActualVelocity_0(Enable:=TRUE,Axis:= Master);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论