轮毂柔性自动加工单元中的联动程序设计
2012-10-23于存谦
于存谦 魏 巍 张 吉
(沈阳机床股份有限公司,辽宁沈阳 110142)
随着汽车市场产品的更新要求加快,汽车制造越来越呈现出注重产品多元化、小批量生产和以市场需求为导向等发展新趋势。因此,汽车零部件生产线也向着适应多品种、小批量、低成本的高速化、柔性化和高效设备的生产方式发展。轮毂的制造工艺、装备和检测一直是发动机生产中的重点,其加工精度和一致性的好坏对汽车整体性能的影响很大。面对我国广阔的汽车市场,汽车关键零部件升级换代的速度加快,生产厂家必须考虑生产线不仅要满足当前生产,而且也要考虑将来生产线改造的可能。在未来几年,国内汽车关键零部件生产线的市场非常广阔。
在国家的大力扶持下,国内数控机床行业在近年来有了很大的进步,对生产线的部分关键技术展开研究,取得了一定的成果,在国内汽车零部件生产线制造市场占有一定的份额。由于我国机床制造商仅能提供一些较低水平的生产线,还不能满足中国汽车行业发展需要。因此,开展汽车发动机关键零部件生产线技术研究,对于满足我国汽车行业快速发展和提升机床制造企业的竞争能力都是十分迫切和必要的。
1 轮毂柔性自动加工单元简介
单元功能:本单元为自动生产线,可同时加工1~5个轮毂,加工过程安全高效。
设备组成:本轮毂加工单元由立式车削中心、立式加工中心、机器人、PLC单元、上位机监控系统、厚度测量装置、视觉检测装置和传感器等设备组成。
单元结构:本单元共设9个工位(图1),有上料台、储料区、立车前工位、立车加工区、立车冲洗区、厚度测量站、视觉检测区、立加加工区和不合格品区。
本单元可实现1~5个轮毂的自动加工,为了清楚地展示多轮毂的加工过程,首先介绍单个轮毂的加工流程,如图2。
多轮毂状态较单个轮毂复杂得多,因为涉及到单元中各部分可能同时加工、同时发出动作请求的情况,即多轮毂多动作。此时,如何安排各动作的次序和前后逻辑关系以及如何向立车、立加和机器人发出信号,并保证整个单元能够有序无误地运行下去,就是一个难点。
我们遵循着工件先出后进的原则,同时使用大量的存储器和计时器,保证机器人在执行某个搬运动作的同时也可以接受单元中其他部分传来的动作请求,并保证单元多工件时的高效运行。例如,当“8-1运送”和“5-6运送”请求同时到来时,机器人将首先执行“8-1工位间工件运送”,完成后再执行动作“5-6运送”。
2 加工单元中联动程序的设计
2.1 设计思路
首先与机械设计人员沟通制定工件加工工序,与单元其他部分电气设计人员沟通论证时序和工序的逻辑合理性,这是编写程序的基础。其次确定负责通信的变量名称和物理地址,名称统一使用汉语拼音或英文命名,并与上位机设计人员、机床电气设计人员和机器人程序设计人员沟通一致,确保双方变量名称一致。
整个程序设计一个主程序,作为整个程序的入口,并设计有开关和初始化部分——如测量站部分的重置量程和零点过程。对于逻辑部分和伺服控制部分分别设计两个主程序,在PLC中循环扫描执行,并设置逻辑部分扫描时间大于伺服控制程序扫描时间且为整数倍。将涉及9个工位的9个搬运动作和测量动作等,分别作为13个子程序单独设计,独立运行,而后由主程序进行调用。因为涉及到“多轮毂多动作”的要求,程序设计的难点就在于充分考虑其中的逻辑矛盾和关系。对于IO变量,因为需要和两台机床及机器人进行通信,所以需要将其设计成全局变量ix%、ox%(这是施奈德PLC所要求的),然后将这些全局分别转换成内部变量mx%以便在程序中进行逻辑运算。
针对一些危险动作和可能发生错误的动作,我们均设计了急停,并将急停命令同时传送给机床和机器人,并做标记,以便监测人员进行后续的修改和调试。
针对一些传感器容易受到外界条件影响而导致误操作的(如光电传感器受高强光线影响而传递假信号),我们在程序中为每一个传感器分别设置了信号门限,对于达到一定时间长度的传感器信号才予以考虑。最后,在充分仿真模拟的基础上,进行实物调试。
2.2 硬件选用与组态
2.2.1 硬件构成
本PLC单元设备及伺服控制器均选用施奈德电气产品。选型见表1。
表1 硬件选型
使用SoMachine软件中的检索和拖动功能,选取所需模块,拖至指定区域,软件将自动连线并配置相应接口。双击单个模块可对其具体参数进行配置。如图3所示,为各模块连接情况。
2.2.2 主要组态
(1)变量的地址分配
先将所需变量填写在全局变量表中(局部变量不能被IO绑定),然后在模块中绑定。如图4为数字量输入模块TM2DDI16DT的变量绑定实例。变量一列为已经在全局变量表GVL_IO中设定好的变量名称,地址一列为实际物理地址,类型列说明变量类型,带有贯穿横线的说明已经被绑定。
(2)任务配置
两个任务——逻辑任务MAST,伺服任务SERVO,扫描类型均设置为循环,循环间隔分别设置为40 ms和20 ms。这样设置的目的有两个,一是SERVO扫描的时间较短,保证可以接收到MAST传来的任何指令;二是40 ms和20 ms都可以整除心跳时间200 ms,保证CANopen总线的通信连接,理由参见(3)②中解释。
(3)伺服控制器组态
①使用SoMove软件为伺服控制器配置组态,在本方案中我们主要设置了伺服波特率为500 k(波特率为数据传输的速率,距离越远波特率需要设置的越低——衰减原因,反之越高),节点ID为3;
②同时在SoMachine软件中配置CANopen总线组态,且保证波特率和节点ID与SoMove中设置一致;心跳时间设置为200 ms,心跳时间的作用为每隔一段时间,伺服控制器与PLC进行一次“握手”,确保两端为连接状态,心跳时间需设置成所有任务扫描时间的整数倍,如此例中设置为20 ms和40 ms的公倍数。
(4)以太网模块组态
为PLC与上位机通信服务,采用MODBUS总线,以太网协议,介质为RS485。需在模块中设置寻址为从站,给定地址,同时配置IP地址、子网掩码和缺省网关,详见图5。
2.3 程序设计与调试
采用结构化文本STL语言编写,程序主要分为四部分:(1)程序主入口Start块;(2)子程序执行部分,各单步块,测量块,数据传输块;(3)伺服控制部分Servo块;(4)此外还有全局变量模块和专为伺服控制器设计的结构体模块。
2.3.1 逻辑部分主程序——程序主入口Start块
功能如下:
(1)测量站零点和量程的初始化;
(2)伺服使能赋值;
(3)工作模式选择——自动或者手动;
(4)工作正常信号检测:必须在立车、立加和机器人同时存在工作正常信号的情况下,才能启用单步运行程序,调用程序块Unit_run。
程序段“initial CeLiangZhan”负责初始化测量站,包括置零点和测量程两部分;程序段“for CeLiang-ZhuangZhi 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内部变量为其后的逻辑运算部分做准备,原因是与物理地址捆绑的全局变量无法准确参与逻辑运算。同时,该段中还包括急停后的程序自动恢复功能,保证操作员即使在无编程基础的情况下,也能轻松恢复整个单元状态,保证生产继续进行。代码如下:
2.3.2 子程序执行部分
13个子程序,包括读写IO程序(1个),逻辑部分程序(10个),测量站模拟量换算程序(2个)。
(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:通过设置1个整形变量lgFmHd_I利用模拟量输入模块的电流原理,测算轮毂厚度。
由于篇幅有限,下面我们仅就子程序Step1_2进行举例介绍。
该子程序主要实现目的有:轮毂在1号位的识别、顶针伸出定心与固定工件、旋转工件以识别并调整工件气门孔位置、发送1号位到2号位的运送通知命令、通知立车轮毂已进入,同时还有急停保护功能等。
首先,如果1号位的红外线传感器检测没有轮毂,同时顶针没有伸出,且此时也无8号位到1号位的运送动作的话,启动“DingZhen ShenChu”程序块。在该程序块中,当程序检测到轮毂已放置好后,顶针伸出,顶针有3个,每个相隔120°,伸出后既可以起到固定轮毂的作用,同时也将使轮毂的中心与1号位的中心重合。然后,先后有6个计时器,分段工作,负责控制伺服的6个动作的计时功能,伺服旋转的作用是让接近开关检测轮毂上的突台,该突台的作用是识别轮毂的角度,当接近开关检测到突台后,电动机向反方向旋转一个特定角度后,轮毂位置固定完毕。而后启动“DingZhen SuoHui”程序段,该段中使用一个计时器,负责在几秒钟的时间之中将顶针缩回到位,释放轮毂,并将赋值给一些标识变量,以通知后续程序继续进行,同时又不会重复之前的旋转动作。最后启动“1-2 YunSong”程序段,其作用是向机器人发出1-2号位的运送通知、在运送动作完成后告知立车轮毂已经到位,以及将所有计时器全部重新置位,标识变量全部清零,准备接收下一个轮毂;该段中还有在负责危险动作的急停功能。
“Avoid the servo is failed,and make the program keep running on”程序段较特殊,其作用是在伺服与PLC的通信意外中断或伺服程序出现混乱的情况下,将程序强行执行下去,其中包含的一些标识变量可以保证程序继续顺利运行,避免重复之前动作,并自动将程序切换到无伺服控制状态。代码如下:
2.3.3 伺服程序
施奈德专门为伺服编写的结构体和伺服FB程序,可满足Jog模式,走速度,走增量,走绝对值等功能。只要在逻辑子程序中修改相应变量,即可实现功能。
设计中使用该程序块的走增量功能,控制上料台电动机旋转,来帮助轮毂定位。其中用到等待WAIT,上电POWER_ON,待命READY等功能,通过结构体变量AxisStep来选择使用哪个功能块。伺服控制模块代码我们节选如下:
2.3.4 结构体和全局变量块
结构体AxisM是Schneider提供的成型的结构体,与Servo程序块匹配使用,通过为其中一些变量赋值来控制伺服动作。
全局变量块GVL_IO中用来设置全局变量,主要包括I、O、IM、OM四种类型变量以及一些用来记录急停位置和特殊功能的变量。I和O变量用来直接与I/O端口捆绑;IM和OM变量属于内部变量,用在程序逻辑运算中,它们通过VAR_TRANS_Q块来相互赋值。结构体代码如下:
3 结语
在本柔性单元中,施奈德PLC所发挥的作用为信号传输,时序和逻辑判断的作用,我们单独为整个PLC单元和上位机配置了电气柜,负责监控整个单元。程序中不但要考虑单步运送的情况,更要兼顾所有子程序之间的关系,避免多轮毂多动作时逻辑上的混乱。
[1]王永华.现代电器控制机PLC应用技术[M].2版.北京:北京航空航天大学出版社,2009.
[2]郑莉,董渊,张瑞丰.C++语言程序设计[M].3版.北京:清华大学出版社,2008.
[3]王昊,王中庆.RIC-DNC数控设备远程异构通信物联网研究[J].现代制造工程,2010(7):21-25.
[4]黄国庆,蔡英,樊留群,等.数控机床的网络化[J].江南大学学报:自然科学版,2002(6).