[西门子] 旋盖机控制系统——伺服轴控制

[复制链接]
查看107 | 回复0 | 前天 14:15 | 显示全部楼层 |阅读模式
>

灌装产品的生产过程中通常包含旋盖这一流程,传统的半自动半人工旋盖和固定式旋盖机工作时在拧盖等环节需要停机,工作效率低下已经不能适应生产生活的需求。因此,全自动旋盖机的研究与开发,已成为推动行业进步、满足市场高质量发展的关键环节。

一、系统总体设计和控制方案

二、系统控制方案的确定

此旋盖机系统设计包含跟踪旋盖这一环节,应用电子凸轮来实现,属于高级运动控制,故需采用信捷XDH系列PLC,该系列支持电子凸轮这一功能。此外,由于跟踪旋盖对精度要求较高,尽管一般的脉冲式伺服也有很高的精度,但仍会产生丢脉冲的情况进而造成误差,故本设计使用总线式伺服可以避免出现丢脉冲的情况,并且总线式伺服也避免了现场复杂的接线。为了适应不同的生产需求,还需使用触摸屏进行控制及参数修改。综上,系统的整体搭建已经完成:采用PLC作为核心控制器,通过EtherCAT总线与四台伺服电机进行连接通讯,并结合触摸屏和其他硬件进行控制。

三、总体程序流程设计

当整个系统上电后,选择模式后在触摸屏上调整参数,若为自动模式,则按下启动按钮或者按触摸屏启动,传送带就会以设定好的速度带动瓶子前进,瓶罐在经过挡板扩大间距并经过挂盖单元取得瓶盖后会扫过光眼,再经过一定的距离后拧盖单元会在追剪伺服的带动下快速追上瓶罐,对准瓶盖并达到速度一致,同时升降电机带动抓手下降进行拧盖,拧盖完成后迅速回到原点进行下一次旋盖,如此循环;若为手动模式,则按下触摸屏的对应按钮,便可以进行单步动作,帮助操作员对系统进行调试工作。若生产需求发生变化,只需暂停后在触摸屏上修改对应的传送带速度、拧盖时间等参数就可以修改相应的电子凸轮曲线,进行凸轮改点,从而加快生产效率。

1、电子凸轮曲线程序设计

void FUN1_WR(PINT16S W,PBIT B)
{
#define SysRegAddr_D_HD_HM_FS_HSD_HSCD_SD_SFD_SM_M_HCD_HTD_T
#define DFD *(FP64*)&D
#define DFHD *(FP64*)&HD
//写点
#define MasterPos1 DFHD[1112]
#define SlaverPos1 DFHD[1116]
#define MasterPos2 DFHD[1132]
#define SlaverPos2 DFHD[1136]
#define MasterPos3 DFHD[1152]
#define SlaverPos3 DFHD[1156]
#define MasterPos4 DFHD[1172]
#define SlaverPos4 DFHD[1176]
#define MasterPos5 DFHD[1192]
#define SlaverPos5 DFHD[1196]
#define MasterPos6 DFHD[1212]
#define SlaverPos6 DFHD[1216]
//输入参数
#define L DFHD[4]
#define BigD HD[8]
#define v DFHD[1250]
#define t DFHD[12]
//输出参数
#define d DFD[0]
#define tz D[4]
#define error D[8]
#define vmax DFD[12]
#define back DFD[16]
//理论参数
d = fabs( 1.0 * v * ( 1.0 * t / 1000 ) );
tz= abs ( ( L / v ) * 1000 );
//参数限制
if( L < 180 )
{
L = 180;
}
if( L > 288 )
{
L = 288;
}
if( v < 100 )
{
v = 100;
}
if( v > 200 )
{
v = 200;
}
//开始写点1
L = 200;
v = 125;
t = 1000;
BigD = 500;
MasterPos1 = 10 * 1;
SlaverPos1 = 5 * 1;
MasterPos2 = MasterPos1 + d;
SlaverPos2 = SlaverPos1 + d;
MasterPos3 = MasterPos2 + 10;
SlaverPos3 = SlaverPos2 + 5;
MasterPos4 = MasterPos3 + 1;
SlaverPos4 = SlaverPos3;
MasterPos5 = L - 1;
SlaverPos5 = 0;
MasterPos6 = L;
SlaverPos6 = 0;
/* //开始写点2
MasterPos1 = d / 3 * 1;
SlaverPos1 = d / 6 * 1;
MasterPos2 = d / 3 * 4;
SlaverPos2 = d / 6 * 7;
MasterPos3 = d / 3 * 5;
SlaverPos3 = d / 6 * 8;
MasterPos4 = MasterPos3 + 1;
SlaverPos4 = SlaverPos3;
MasterPos5 = L - 1;
SlaverPos5 = 0;
MasterPos6 = L;
SlaverPos6 = 0; */
//输入错误检测
error = 0;
back = MasterPos5 - MasterPos4;
if ( BigD < 0 )
{
error = 1;
}
if ( L < 0 )
{
error = 2;
}
if ( t < 0 )
{
error = 3;
}
if ( MasterPos4 < MasterPos3 )
{
error = 4;
}
if ( MasterPos3 > L || MasterPos4 > L )
{
error = 5; //加速+同步+减速不能大于总长度
}
if ( back < 0 )
{
error = 6;
}
if ( SlaverPos3 > BigD )
{
error = 7;
}
if ( ! ( MasterPos6 > MasterPos5 &&
MasterPos5 > MasterPos4 &&
MasterPos4 > MasterPos3 &&
MasterPos3 > MasterPos2 &&
MasterPos2 > MasterPos1  ) )
{
error = 8;
}
}

四、HMI

五、电路图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则