压力机中基于hmi编辑的电子凸轮同步取放件控制系统
阅读说明:本技术 压力机中基于hmi编辑的电子凸轮同步取放件控制系统 (Electronic cam synchronous picking and placing part control system based on HMI editing in press ) 是由 曹希发 曾自立 于 2021-08-19 设计创作,主要内容包括:本发明公开了压力机中基于HMI编辑的电子凸轮同步取放件控制系统,压力机数量为多个,压力机之间通过机械手完成上料和下料工作,控制系统包括有电子凸轮控制器,电子凸轮控制器采用编码器进行编码,电子凸轮控制器生成电子凸轮曲线,电子凸轮曲线通过伺服放大器分别控制各个机械手的伺服电机,利用HMI对各个凸轮曲线关键点的编辑和存储。本发明的压力机中基于HMI编辑的电子凸轮同步取放件控制系统,压力机控制采用同步连续运行方式,同时送料系统需与压力机同步运行,整线可在连续或单次运行两种方式下进行自动化生产。HMI存储多种产品型号的数据,实现一键换型。离合制动器不需要频繁动作,寿命长,维护费用低,噪音低。(The invention discloses an electronic cam synchronous picking and placing control system based on HMI editing in a press machine, wherein the number of the press machines is multiple, the press machines finish feeding and discharging work through mechanical arms, the control system comprises an electronic cam controller, the electronic cam controller adopts an encoder for encoding, the electronic cam controller generates an electronic cam curve, the electronic cam curve respectively controls a servo motor of each mechanical arm through a servo amplifier, and the HMI is used for editing and storing key points of each cam curve. According to the electronic cam synchronous picking and placing part control system based on HMI editing in the press machine, the press machine is controlled in a synchronous and continuous operation mode, meanwhile, the feeding system and the press machine need to be operated synchronously, and the whole line can be automatically produced in a continuous or single operation mode. The HMI stores data of various product models to realize one-key model changing. The clutch brake does not need to be frequently operated, and has long service life, low maintenance cost and low noise.)
技术领域
本发明属于压力机控制技术领域,具体涉及压力机中基于HMI编辑的电子凸轮同步取放件控制系统。
背景技术
压力机间的上下料搬运过程为:压力机停在上死点→下料机械手进入压力机内下料→下料完成出压力机→上料机械手进入压力机内上料→上料完成出压力机→压力机离合器动作→等待整个冲程完成后进行下一循环。在整个上下料的过程中压力机停止运行3-5秒(取决于机械手运行性能),致使生产线的生产效率低下。压力机离合器的频繁动作,设备维护成本和能耗较高。
发明内容
为解决上述技术问题,本申请采用电子凸轮优化出机械手的最优轨迹曲线,保证机械手能快速、平稳、准确的完成规定动作,满足高速冲压自动化线生产的需求。
为实现上述目的,本发明采用的技术方案是:压力机中基于HMI编辑的电子凸轮同步取放件控制系统,所述压力机数量为多个,压力机之间通过机械手完成上料和下料工作,所述控制系统包括有用于控制机械手行动轨迹的电子凸轮控制器,电子凸轮控制器采用编码器进行编码,电子凸轮控制器生成电子凸轮曲线,电子凸轮曲线通过伺服放大器分别控制各个机械手的伺服电机,利用HMI对各个凸轮曲线关键点的编辑和存储。
作为上述技术方案的优选,所述压力机加装伺服作为模态主轴,电子凸轮控制器与模态主轴耦合。
作为上述技术方案的优选,所述HMI中包括有机械手在压力机中上料和下料过程的安全角度数据。
作为上述技术方案的优选,所述控制系统采用嵌入式PC倍福CX5140,通讯方式为EtherCat。
作为上述技术方案的优选,所述电子凸轮控制器中程序的扫描周期为4ms。
本发明的有益效果是:本发明的压力机中基于HMI编辑的电子凸轮同步取放件控制系统,压力机控制采用同步连续运行方式,同时送料系统需与压力机同步运行,整线可在连续或单次运行两种方式下进行自动化生产。在冲压线以同步连续方式生产时,各压力机之间、压力机与机械手之间保持同步运行。HMI存储多种产品型号的数据,每种产品包含多组凸轮曲线关键点,根据这些关键点形成不同的凸轮曲线,实现一键换型。离合制动器不需要频繁动作,寿命长,维护费用低,噪音低。
具体实施方式
下面将对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
压力机中基于HMI编辑的电子凸轮同步取放件控制系统,所述压力机数量为多个,压力机之间通过机械手完成上料和下料工作,所述控制系统包括有用于控制机械手行动轨迹的电子凸轮控制器,电子凸轮控制器采用编码器进行编码,电子凸轮控制器生成电子凸轮曲线,电子凸轮曲线通过伺服放大器分别控制各个机械手的伺服电机,利用HMI对各个凸轮曲线关键点的编辑和存储。
作为上述技术方案的优选,所述压力机加装伺服作为模态主轴,电子凸轮控制器与模态主轴耦合。
作为上述技术方案的优选,所述HMI中包括有机械手在压力机中上料和下料过程的安全角度数据。
作为上述技术方案的优选,所述控制系统采用嵌入式PC倍福CX5140,通讯方式为EtherCat。
作为上述技术方案的优选,所述电子凸轮控制器中程序的扫描周期为4ms。
控制系统的部分关键代码:
横移X轴电子凸轮表:table1X_point
cam_table1X.ArraySize:=SIZEOF(table1);
cam_table1X.NoOfColumns:=1;
cam_table1X.NoOfRows:=10;
cam_table1X.pArray:=ADR(table1);
cam_table1X.TableType:=MC_TABLETYPE_MOTIONFUNCTION;
table1[1].FunctionType:=MOTIONFUNCTYPE_POLYNOM5;
table1[1].MasterPos:=CamTables.MasterXPos1;
table1[1].SlavePos:=CamTables.SlaveXPos1;
table1[1].PointIndex:=1;
table1[1].PointType:=MOTIONPOINTTYPE_MOTION;
table1[2].FunctionType:=MOTIONFUNCTYPE_POLYNOM5;
table1[2].MasterPos:=CamTables.MasterXPos2;
table1[2].SlavePos:=CamTables.SlaveXPos2;
table1[2].PointIndex:=2;
table1[2].PointType:=MOTIONPOINTTYPE_MOTION;
table1[3].FunctionType:=MOTIONFUNCTYPE_POLYNOM5;
table1[3].MasterPos:=CamTables.MasterXPos3;
table1[3].SlavePos:=CamTables.SlaveXPos3;
table1[3].PointIndex:=3;
table1[3].PointType:=MOTIONPOINTTYPE_MOTION;
table1[4].FunctionType:=MOTIONFUNCTYPE_POLYNOM5;
table1[4].MasterPos:=CamTables.MasterXPos4;
table1[4].SlavePos:=CamTables.SlaveXPos4;
table1[4].PointIndex:=4;
table1[4].PointType:=MOTIONPOINTTYPE_MOTION;
table1[5].FunctionType:=MOTIONFUNCTYPE_POLYNOM5;
table1[5].MasterPos:=CamTables.MasterXPos5;
table1[5].SlavePos:=CamTables.SlaveXPos5;
table1[5].PointIndex:=5;
table1[5].PointType:=MOTIONPOINTTYPE_MOTION;
table1[6].FunctionType:=MOTIONFUNCTYPE_POLYNOM5;
table1[6].MasterPos:=CamTables.MasterXPos6;
table1[6].SlavePos:=CamTables.SlaveXPos6;
table1[6].PointIndex:=6;
table1[6].PointType:=MOTIONPOINTTYPE_MOTION;
table1[7].FunctionType:=MOTIONFUNCTYPE_POLYNOM5;
table1[7].MasterPos:=CamTables.MasterXPos7;
table1[7].SlavePos:=CamTables.SlaveXPos7;
table1[7].PointIndex:=7;
table1[7].PointType:=MOTIONPOINTTYPE_MOTION;
table1[8].FunctionType:=MOTIONFUNCTYPE_POLYNOM5;
table1[8].MasterPos:=CamTables.MasterXPos8;
table1[8].SlavePos:=CamTables.SlaveXPos8;
table1[8].PointIndex:=8;
table1[8].PointType:=MOTIONPOINTTYPE_MOTION;
table1[9].FunctionType:=MOTIONFUNCTYPE_POLYNOM5;
table1[9].MasterPos:=CamTables.MasterXPos9;
table1[9].SlavePos:=CamTables.SlaveXPos9;
table1[9].PointIndex:=9;
table1[9].PointType:=MOTIONPOINTTYPE_MOTION;
table1[10].FunctionType:=MOTIONFUNCTYPE_POLYNOM5;
table1[10].MasterPos:=CamTables.MasterXPos10;
table1[10].SlavePos:=CamTables.SlaveXPos10;
table1[10].PointIndex:=10;
table1[10].PointType:=MOTIONPOINTTYPE_MOTION;
纵移Y轴电子凸轮表:table2Y_point
cam_table2Y.ArraySize:=SIZEOF(table2);
cam_table2Y.NoOfColumns:=1;
cam_table2Y.NoOfRows:=5;
cam_table2Y.pArray:=ADR(table2);
cam_table2Y.TableType:=MC_TABLETYPE_MOTIONFUNCTION;
table2[1].FunctionType:=MOTIONFUNCTYPE_POLYNOM5;
table2[1].MasterPos:=CamTables.MasterYPos1;
table2[1].SlavePos:=CamTables.SlaveYPos1;
table2[1].PointIndex:=1;
table2[1].PointType:=MOTIONPOINTTYPE_MOTION;
table2[2].FunctionType:=MOTIONFUNCTYPE_POLYNOM5;
table2[2].MasterPos:=CamTables.MasterYPos2;
table2[2].SlavePos:=CamTables.SlaveYPos2;
table2[2].PointIndex:=2;
table2[2].PointType:=MOTIONPOINTTYPE_MOTION;
table2[3].FunctionType:=MOTIONFUNCTYPE_POLYNOM5;
table2[3].MasterPos:=CamTables.MasterYPos3;
table2[3].SlavePos:=CamTables.SlaveYPos3;
table2[3].PointIndex:=3;
table2[3].PointType:=MOTIONPOINTTYPE_MOTION;
table2[4].FunctionType:=MOTIONFUNCTYPE_POLYNOM5;
table2[4].MasterPos:=CamTables.MasterYPos4;
table2[4].SlavePos:=CamTables.SlaveYPos4;
table2[4].PointIndex:=4;
table2[4].PointType:=MOTIONPOINTTYPE_MOTION;
table2[5].FunctionType:=MOTIONFUNCTYPE_POLYNOM5;
table2[5].MasterPos:=CamTables.MasterYPos5;
table2[5].SlavePos:=CamTables.SlaveYPos5;
table2[5].PointIndex:=5;
table2[5].PointType:=MOTIONPOINTTYPE_MOTION;
上下轴Z电子凸轮表:table3Z_point
cam_table3Z.ArraySize:=SIZEOF(table3);
cam_table3Z.NoOfColumns:=1;
cam_table3Z.NoOfRows:=10;
cam_table3Z.pArray:=ADR(table3);
cam_table3Z.TableType:=MC_TABLETYPE_MOTIONFUNCTION;
table3[1].FunctionType:=MOTIONFUNCTYPE_POLYNOM5;
table3[1].MasterPos:=CamTables.MasterZPos1;
table3[1].SlavePos:=CamTables.SlaveZPos1;
table3[1].PointIndex:=1;
table3[1].PointType:=MOTIONPOINTTYPE_MOTION;
table3[2].FunctionType:=MOTIONFUNCTYPE_POLYNOM5;
table3[2].MasterPos:=CamTables.MasterZPos2;
table3[2].SlavePos:=CamTables.SlaveZPos2;
table3[2].PointIndex:=2;
table3[2].PointType:=MOTIONPOINTTYPE_MOTION;
table3[3].FunctionType:=MOTIONFUNCTYPE_POLYNOM5;
table3[3].MasterPos:=CamTables.MasterZPos3;
table3[3].SlavePos:=CamTables.SlaveZPos3;
table3[3].PointIndex:=3;
table3[3].PointType:=MOTIONPOINTTYPE_MOTION;
table3[4].FunctionType:=MOTIONFUNCTYPE_POLYNOM5;
table3[4].MasterPos:=CamTables.MasterZPos4;
table3[4].SlavePos:=CamTables.SlaveZPos4;
table3[4].PointIndex:=4;
table3[4].PointType:=MOTIONPOINTTYPE_MOTION;
table3[5].FunctionType:=MOTIONFUNCTYPE_POLYNOM5;
table3[5].MasterPos:=CamTables.MasterZPos5;
table3[5].SlavePos:=CamTables.SlaveZPos5;
table3[5].PointIndex:=5;
table3[5].PointType:=MOTIONPOINTTYPE_MOTION;
table3[6].FunctionType:=MOTIONFUNCTYPE_POLYNOM5;
table3[6].MasterPos:=CamTables.MasterZPos6-2;
table3[6].SlavePos:=CamTables.SlaveZPos6;
table3[6].PointIndex:=6;
table3[6].PointType:=MOTIONPOINTTYPE_MOTION;
table3[7].FunctionType:=MOTIONFUNCTYPE_POLYNOM5;
table3[7].MasterPos:=CamTables.MasterZPos7;
table3[7].SlavePos:=CamTables.SlaveZPos7;
table3[7].PointIndex:=7;
table3[7].PointType:=MOTIONPOINTTYPE_MOTION;
table3[8].FunctionType:=MOTIONFUNCTYPE_POLYNOM5;
table3[8].MasterPos:=CamTables.MasterZPos8+2;
table3[8].SlavePos:=CamTables.SlaveZPos8;
table3[8].PointIndex:=8;
table3[8].PointType:=MOTIONPOINTTYPE_MOTION;
table3[9].FunctionType:=MOTIONFUNCTYPE_POLYNOM5;
table3[9].MasterPos:=CamTables.MasterZPos9;
table3[9].SlavePos:=CamTables.SlaveZPos9;
table3[9].PointIndex:=9;
table3[9].PointType:=MOTIONPOINTTYPE_MOTION;
table3[10].FunctionType:=MOTIONFUNCTYPE_POLYNOM5;
table3[10].MasterPos:=CamTables.MasterZPos10;
table3[10].SlavePos:=CamTables.SlaveZPos10;
table3[10].PointIndex:=10;
table3[10].PointType:=MOTIONPOINTTYPE_MOTION;
程序采用模块化设计,电子凸轮组成的机械手程序流程:
master();虚拟主轴
encoder();压力机编码器轴
slavex1();横移轴X1与实体轴链接
slaveX2();横移轴X2与实体轴链接
slaveY1();横移轴Y1与实体轴链接
slaveZ1();横移轴Z1与实体轴链接
ModeSel();操作模式选择
Error();故障报警信息
PressData();压力机交互信号
aManuall();停机手动单步操作
TableSetValue();电子凸轮表位置数据设定
power();各伺服轴使能
aGearIn();X1轴与X2轴电子齿轮耦合
(*
ID:=TO_UDINT(ioRobots.Code*3);
acamming();X1,Y1,Z1电子凸轮耦合
PressSim();压力机与虚拟轴电子齿轮耦合
aAxisReset();各轴故障时报警
aAxisJog();各轴点动操作
aAxisAbsolute();各轴进行绝对定位
SetAxisVelocity();设定各轴速度值
aAxisVelocity();各轴以速度移动
table1X_point();横移轴电子凸轮表
Table2Y_point();纵移轴电子凸轮表
table3Z_point();上下轴电子凸轮表
Calib();各轴原点位校正
StateLamp();各轴到达位标识
Oil();移动导轨注润滑油
aMode1();待机位模式手动操作
aMode2();断续生产模式操作(压力机停在上死点)
aMode3();连续生产模式操作(压力机连续冲压,上死点不停)
值得一提的是,本发明专利申请涉及的伺服电机、编码器等技术特征应被视为现有技术,这些技术特征的具体结构、工作原理以及可能涉及到的控制方式、空间布置方式采用本领域的常规选择即可,不应被视为本发明专利的发明点所在,本发明专利不做进一步具体展开详述。
以上详细描述了本发明的较佳具体实施例,应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思做出诸多修改和变化,因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。
- 上一篇:一种医用注射器针头装配设备
- 下一篇:一种便于维护的单螺杆喂料机及其使用方法