123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191 |
- #include "XT11033.h"
- #include "sfr_r82d.h"
- extern char ReadTimeData(unsigned short ReadMode);
- /**************************************
- ** 函数名称:
- ** 函数功能:
- 新款超声贴布机
- ** 输入输出说明:
- 输入:
- //输入说明
- //X000 起动
- //X001 停止
- //X002 手动钩针
- //X003 手动分胶
- //X004 手动合模
- //X005 手动送胶
- //X006 手动超声
- //X007 自动位 (有屏的情况下为温控)
- //X010 上超
- //X011 过链接近开关
- //X012 前导板(分胶)前磁感
- //X013 前导板(分胶)后磁感
- //X014 下冲到位
- //X015 新款勾针复位,老款合模到位
- //X016 送胶到位磁感
- //X017 退胶到位磁感
- //X020 拖带到位
- //X021 缺胶信号
- //输出说明
- //Y000 离合器 (也控制方向,1往前,0往后)
- //Y001 勾针阀
- //Y002 导板阀(分胶)
- //Y003 下冲气缸
- //Y004 送胶阀
- //Y005 新款(压带阀)老款下模(发振部分)
- //Y006 吹气(昌盛 吹气,鑫业 夹胶)
- //Y007 计数
- //Y010 音波
- //Y011 拖带电机(继电器)
- D+ 接驱动器的(MF+或EN+)信号
- D- 接驱动器的(MF-或EN-)信号
- P+ 接驱动器的(PULSE+)信号
- P- 接驱动器的(PULSE-)信号
- P00 延时超声
- P01 延时上勾针
- P02 送胶到位延时返回
- P03 压带输出
- P04 延时分胶
- P05 延时停离合(打孔型时二次定位)
- P06 超声时间
- P07 固化时间
- P08 吹气时间
- P09 送胶时间(滚轮方式并且没有送胶前信号)
- P10 电机起动速度
- P11 电机加速度
- P12 最高速度
- P13 空位速度
- P14 送胶方式 0 气缸,1 滚轮
- P15 下模下模方式 0 下模活动,1下模不动
- P16 退勾针方式 0 先超声后下勾针,1 先下勾针后超声
- P17 双勾针选择 0 双勾针(新款) 1 单勾针
- P18 二次拖带选择 0 普通拖带 1 二次拖带()
- P19 滚轮送胶时到位信号是否有 0 有前限位 1 没前限位
- P20 拖带电机定位后是否反转(步进型有效) 0 不反转 1 反转
- P21 是否有导板阀(分胶阀)(0,有分胶阀,1没分胶阀)
- P22 反转速度
- P24 拖带自动停机时间(防坏压轮胶)
- P25 送胶完成后延时二次拖带
- P26 打孔型时一次定位时间
- P27 电机反转脉冲
- P28 温度到达超声时减少的时间(有屏状态才有效)
- P29 自动测长度时自动允许拉带长度偏差(设0 无效)
- P30 冷却时间
- P63 当用编码器时的编码使能,位0最上一个有效,位1中间一个有效,位2下面一个有效
- P64 超声时间参数方式选择,0老款拔码,1编码,2内部按键设(或通信设定)
- P65 接线方式(0 昌盛, 1 鑫业, 2 盈兴)
- P66 拔码时间顺序(0 正常, 1 最后一组为超声时间)
- ***************************************/
- #define ChangSheng 0 //昌盛代码
- #define XinYe 1 //鑫业代码
- #define YinXin 2 //鑫业代码
- #define SongJiaoMode cDataArea[14] //送胶方式
- #define XiaMoMode cDataArea[15] //下模方式
- #define TuiGZMode cDataArea[16] //退勾针方式
- #define SGZSelect cDataArea[17] //双勾针选择
- #define TWOTDSelect cDataArea[18] //二次拖带选择
- #define SongJiaoDaoWei cDataArea[19] //送胶时到位信号
- #define DianJiFanZ cDataArea[20] //电机是否反转
- #define FengJiaoSelect cDataArea[21] //是否有分胶阀
- #define CJSelect cDataArea[65] //厂家配置
- #define BMSeq cDataArea[66] //拔码时间顺序
- //警告
- #define NoZip_W 1 //没拉链警告
- #define TuiGZ_W 2 //退勾针不到位警告
- #define GZDaoWei_W 3 //勾针不到位警告
- #define SongJiao_W 4 //送胶不到位
- #define TuiJiao_W 5 //退胶不到位
- #define TuiFenJiao_W 6 //退分胶不到位
- #define NoJiao_W 7 //胶已用完
- #define ZipperLengPRO_W 8 //拉链长度保护
- #define FengJiao_W 9 //分胶不到
- #define HeMoDW_W 10 //合模不到
- #define Start_NOK 11
- void CSTB_SongJiao_CS(void);
- void CSTB_Auto_Con_CS(void);
- void CSTB_HeMo_CS_CS(void);
- void Hand_Action(void);
- void Auto_Run(void);
- void CSTieBu_Step_HMIJi(void)
- {
- unsigned short ch,j;
-
- WorkFreqTab[0] = 16059 *2;
- WorkFreqTab[1] = 14059 *2;
-
- for(ch = 0;ch < 80;ch++)
- {
- WorkFreqTab[ch + 2] = FreqTab[ch];
- }
-
- if(CJSelect == XinYe)//鑫业的Y06为夹胶
- {
- if(X17)
- SETQ06;
- }
- SETDR(); //步进电机松
- while(1)
- {
- cDataArea[121] = cStepMByte;
- cDataArea[122] = cStepMByte1;
- cDataArea[123] = cStepMByte2;
- cDataArea[124] = cStepMByte3;
- cDataArea[125] = cStepMByte4;
- cDataArea[126] = cStepMByte5;
- RunState();
- WriteOutput();
- Feed_dog();
- BlinkRunLED();
- ReadInput();
- CheckKey();
- if(cHMI_Test == 0)
- {
- if(!Y10 && (tstart0_trdstr == 0))
- {
- if(ReadTimeData(cDataArea[64]))
- {
- cDataArea[5] = cDataArea[60];
- if(BMSeq == 1)
- {
- cDataArea[6] = cDataArea[62];
- cDataArea[7] = cDataArea[61];
- }
- else
- {
- cDataArea[6] = cDataArea[61];
- cDataArea[7] = cDataArea[62];
- }
- }
- }
- }
- CheckReceData();
- CSTB_HeMo_CS_CS(); //合模超声动作
- CSTB_SongJiao_CS(); //送胶动作
- CSTB_Auto_Con_CS(); //电机拖带动作
- if((b10ms) != 0)
- {
- if(cCountTime > 0)
- {
- cCountTime--;
- if(cCountTime == 0)
- CLRQ07;
- }
- }
- if(M15) //M15 故障确定
- {
- M15 = 1;//cMidleCoil[0] &= ~(1<<15); //M13,M15
- cDataArea[100] = 0;
- cDataArea[75] = 1;
- cDelayTime7 = dwTickCount + (unsigned long)1010;
- }
- if(M01) //清产量
- {
- if(dwTickCount >= cDelayTime8)
- {
- M01 = 0;//cMidleCoil[0] &= ~(1<<1);
- ClrcToTal();
- }
- }
- else
- {
- cDelayTime8 = dwTickCount + (unsigned long)120*10;
- }
- //设定音波参数使能
- if(M05)
- {
- if(dwTickCount >= cDelayTime9)
- {
- M05 = 0;//cMidleCoil[0] &= ~(1<<5); //M5
- M06 = 1;//cMidleCoil[0] |= (1<<6); //M6
- cDelayTime10 = dwTickCount + (unsigned long)5000;
- }
- }
- else
- cDelayTime9 = dwTickCount + (unsigned long)1300;
- if(M06 && (dwTickCount >= cDelayTime10))
- {
- M06 = 0;//cMidleCoil[0] &= ~(1<<6); //M6
- }
- if(CJSelect == ChangSheng)
- {
- if(Y06 && (dwTickCount >= cDelayTime6))
- {
- CLRQ06;
- }
- }
- else if(CJSelect == XinYe)
- {
- if(Y11 && (dwTickCount >= cDelayTime6))
- {
- CLRQ11;
- }
- }
- //停止
- if(X01 || (X07_DW && (cHMI_Test == 0)) || bStop || M14)
- {
- if(X01)
- {
- // cMidleCoil[1] = 0;
- // cDataArea[100] = 0;
- // cDataArea[101] = 0;
- }
- M19 = 0;
- M14 = 0;
- M15 = 0;//cMidleCoil[0] &= ~0x8000;
- M02 = 0;//
- cOutVal[1].byte = 0;
- cOutVal[0].byte &= 0xc0; //Y07,Y06 不能关
- cStepMByte = 0;
- cStepMByte1 = 0;
- cStepMByte2 = 0;
- cStepMByte3 = 0;
- cStepMByte4 = 0;
- bRunning = 0;
- StopPWM();
- bStop = 0;
- SETDR(); //步进电机松
- if(cHMI_Test == 0)
- cCountTime = 5;
- else //冷却时间
- {
- cCountTime = cDataArea[30] * 100 + 2;
- }
- cOneTimes = 0;
- }
-
- if((X00_UP || M00 || M16) && !X01)
- {
- M00 = 0;//cMidleCoil[0] &= ~(1<<0);
- //分胶 送胶 分胶前 分胶后 送胶到位 退胶到位 双勾针方式时勾针要退到位 单勾针方式
- if((!Y02) && (!Y04) && (!X12) && (X13 || FengJiaoSelect) && (((!X16) && X17) || (SongJiaoMode == 1)) && (((SGZSelect == 0) && X15 && !X20) || (SGZSelect == 1))
- && ((X07 && (cHMI_Test == 0)) || cHMI_Test) && !bRunning && (!Y01 || (TWOTDSelect == 0) || SongJiaoMode))
- {
- bRunning = 1;
- cStepMByte = 1;
- M02 = 1;//cMidleCoil[0] |= (1<<2);
- cDataArea[100] = 0;
- cOneTimes = 0;
- cCountTime = 0;
- if(M16)
- {
- cOneTimes = 1;
- M17 = 1;
- M02 = 0;
- }
- if(cHMI_Test == 1)
- SETQ07; //计数器输出
- else
- CLRQ07;
- }
- else if(!bRunning)
- {
- cDataArea[75] = ActionPage;
- cDataArea[100] = Start_NOK;
- bStop = 1;
- }
- M16 = 0;
- M00 = 0;
- }
- //手动模式
- if(((!X07 && (cHMI_Test == 0)) ||cHMI_Test) && !bRunning && !X01)
- {
- if(X07_DW && (cHMI_Test == 0))
- {
- CLRQ00;
- CLRQ01;
- CLRQ02;
- CLRQ03;
- CLRQ04;
- CLRQ05;
- if(CJSelect == XinYe)//鑫业的Y06为夹胶
- {
- if(X17 && !Y04)
- SETQ06;
- }
- else
- CLRQ06;
- CLRQ10;
- bRunning = 0;
- cStepMByte1 = 0;
- cStepMByte2 = 0;
- cStepMByte3 = 0;
- cStepMByte4 = 0;
- }
- Hand_Action();
- }
- else if(bRunning)
- {
- Auto_Run();
- }
- else if((X07_UP && (cHMI_Test == 0))|| X01)
- {
- CLRQ00;
- CLRQ01;
- CLRQ02;
- CLRQ03;
- CLRQ04;
- CLRQ05;
- if(CJSelect == XinYe)//鑫业的Y06为夹胶
- {
- if(X17)
- SETQ06;
- }
- else
- CLRQ06;
- CLRQ10;
- bRunning = 0;
- }
- if(CJSelect != XinYe)
- {
- if(Y10)
- SETQ11;
- else
- CLRQ11;
- }
- /* if((cHMI_Test == 0) && (cDataArea[100] != 0))
- {
- if(cDataArea[75] == 6) //输入
- cDataArea[100] += 48;
- else if(cDataArea[75] == 7) //输出
- cDataArea[100] += 32;
- }
- */
- }
- }
- void StartCuiQi(void)
- {
- if(CJSelect == ChangSheng)//鑫业的Y06为夹胶不能输出
- SETQ06; //吹气
- else if(CJSelect == XinYe)
- SETQ11;
- cDelayTime6 = dwTickCount + (unsigned long)10 * cDataArea[8];
- }
- //电机控制
- void CSTB_Auto_Con_CS(void)
- {
- switch(cStepMByte2)
- {
- case 0:
- CLRQ00;
- StopPWM();
- break;
- case 1: //离合器起动
- cStepMByte2 = 2;
- SETQ00; //离合器输出
- if(cDataArea[90] == 55)
- cDelayTime3 = dwTickCount + (unsigned long)300;
- //步进启动
- cSPAdd = cDataArea[11]; //加速度
- cSPDec = 2; //减速度
- cStepSet = cDataArea[12]; //最高速度
- cStepNum = cDataArea[10]; //起动速度
- cLowSpeadLimit = cDataArea[13]; //空位速度
- cPulseStepCount = 0;
- cStepMode = 1;
-
- cErrorTime2 = dwTickCount + (unsigned long)100*cDataArea[24];
-
- if(!X11)
- {
- cStepNum = cLowSpeadLimit;
- }
- StartPWM(cStepNum);
- break;
- case 2: //过链接近下降沿
- if((!X11) || ((cDataArea[90] == 55) && (dwTickCount >= cDelayTime3)))
- {
- cStepMByte2 = 3;
- if(cDataArea[90] == 55)
- cDelayTime3 = dwTickCount + (unsigned long)200;
- else
- cDelayTime3 = dwTickCount + (unsigned long)5
- ;
- cErrorTime2 = dwTickCount + (unsigned long)ERRORTIME;
- cStepMode = 2; //电机减速
-
- }
- else if((dwTickCount>=cErrorTime2) && (cDataArea[24] != 0))
- {
- cDataArea[75] = ActionPage;
- cDataArea[100] = NoZip_W; //检查过链接近开关或没有拉链
- M15 = 0;//cMidleCoil[0] &= ~(1<<15); //M15
- bStop = 1;
- }
- else if((cDataArea[29] > 5) && (cEncodePulse >= (cSetEncode + cDataArea[29] * 10)) && (cTest1 > 1))
- {
- cDataArea[75] = ActionPage;
- cDataArea[100] = ZipperLengPRO_W; //检查过链接近开关或没有拉链
- M15 = 0;//cMidleCoil[0] &= ~(1<<15); //M15
- bStop = 1;
- }
- break;
- case 3:
- //过链接近上升沿 //拖带到
- if(((X11_UP) || !Y00 || (cDataArea[90] == 55)) && (dwTickCount >= cDelayTime3))
- {
-
- if(TWOTDSelect == 0) //普通拖带
- {
- cStepMode = 2; //电机减速
- cStepMByte2 = 4;
- cErrorTime2 = dwTickCount + (unsigned long)500;
- cDelayTime3 = dwTickCount + (unsigned long)cDataArea[5];
- cDelayTime4 = dwTickCount + (unsigned long)cDataArea[1]; // 延时上勾针
- }
- else
- {
- cDelayTime3 = dwTickCount + (unsigned long)cDataArea[26];
- cStepMByte2 = 40;
- }
- }
- else if(dwTickCount >= cErrorTime2) //拖带警告
- {
- //cMidleCoil[5] |= (1<<0); //记录
- cDataArea[75] = ActionPage;
- cDataArea[100] = NoZip_W; //检查过链接近开关或没有拉链
- M15 = 0;//cMidleCoil[0] &= ~(1<<15); //M15
- bStop = 1;
- }
- break;
- case 40:
- if(dwTickCount >= cDelayTime3)
- {
- CLRQ00; //离合停
- StopPWM(); //步进电机停
- // if(X16) //送胶到位后就可以上勾针
- // SETQ01; //上勾针
- if(cStepMByte1 == 0) //送胶完成
- {
- SETQ01; //上勾针
- cDelayTime3 = dwTickCount + (unsigned long)10 * cDataArea[25];
- cStepMByte2 = 41;
- }
- }
- break;
- case 41:
- if(dwTickCount >= cDelayTime3)
- {
- cStepMByte2 = 4;
- cErrorTime2 = dwTickCount + (unsigned long)500;
- cDelayTime3 = dwTickCount + (unsigned long)cDataArea[5];
- StartPWM(cStepNum);
- SETQ00; //离合开
- }
- break;
- case 4:
- //要加延时上勾针
- if(dwTickCount >= cDelayTime4)
- SETQ01; //上勾针
- if(((dwTickCount >= cDelayTime3) && (SGZSelect != 0)) || (X20 ||(cDataArea[90] == 55))) //到位或延时停时间到
- {
- SETQ01; //上勾针
- CLRQ00; //离合停
- StopPWM(); //步进电机停
- if(SGZSelect == 0) //双勾针
- {
- cStepMByte2 = 5;
- cDelayTime3 = dwTickCount + (unsigned long)1; //延时压带
- }
- else //单勾针
- {
- cStepMByte2 = 0;
- //SETDR(); //步进电机松
- }
- }
- else if((dwTickCount >= cErrorTime2) && (SGZSelect == 0)) //拖带警告
- {
- cDataArea[75] = ActionPage;
- cDataArea[100] = GZDaoWei_W; //检查过链接近开关或没有拉链
- M15 = 0;//cMidleCoil[0] &= ~(1<<15); //M15
- bStop = 1;
- }
- break;
- case 5:
- if(dwTickCount >= cDelayTime3)
- {
- cStepMByte2 = 6;
- SETQ05;
- cDelayTime3 = dwTickCount + (unsigned long)10 * cDataArea[3]; //压带输出延时退勾针
- }
- break;
- case 6:
- if(dwTickCount >= cDelayTime3) //压带输出延时退勾针
- {
- CLRQ01; //勾针退
- cStepMByte2 = 7; //拖带完成
- SETDR(); //步进电机松
- cErrorTime2 = dwTickCount + (unsigned long)ERRORTIME;
- }
- break;
- case 7:
- if(X15) //勾针退到位
- {
- cStepMByte2 = 0;
- }
- else if(dwTickCount >= cErrorTime2)
- {
- cDataArea[75] = ActionPage;
- cDataArea[100] = TuiGZ_W; //勾针退不到位警告
- M15 = 0;//cMidleCoil[0] &= ~(1<<15); //M15
- }
- break;
- case 20: //到位后反转一点
- CLRDR();
- cEncodePulse = 0;
- cDataArea[121] = 0;
- cStepMByte2 = 21;
- cDelayTime3 = dwTickCount + (unsigned long)40;
- if(DianJiFanZ == 0)
- cStepMByte2 = 0;
- break;
- case 21:
- if(dwTickCount >= cDelayTime3)
- {
- cStepMByte2 = 22;
- cWorkPulseNum = cDataArea[27];
- // cDelayTime3 = dwTickCount + (unsigned long)10 * 5;
- cStepMode = 4;
- cDataArea[99] = 2;
- cLowSpeadLimit = cDataArea[22]; //空位速度
- cStepNum = cLowSpeadLimit;
- if(cWorkPulseNum != 0)
- {
- cDataArea[99] = 1;
- StartPWM(cStepNum);
- cPulseStepDEC = cWorkPulseNum;
- }
- }
- break;
- case 22:
- if(cWorkPulseNum == 0)
- {
- cStepMByte2 = 0;
- StopPWM(); //步进电机停
- // SETDR(); //步进电机松
- }
- break;
- }
- }
- //送胶动作
- void CSTB_SongJiao_CS(void)
- {
- switch(cStepMByte1)
- {
- case 0:
- break;
- case 1: //动作开始,延时分胶
- cStepMByte1 = 2;
- cDelayTime2 = dwTickCount + (unsigned long)10 * cDataArea[4]; //分胶延时输出
- break;
- case 2:
- if((dwTickCount >= cDelayTime2) || !X11)
- {
- cStepMByte1 = 3;
- SETQ02; //分胶阀
- if(CJSelect == XinYe)//鑫业的Y06为夹胶
- SETQ06;
- cDelayTime2 = dwTickCount + (unsigned long)10 * 6; //分胶延时输出
- cErrorTime = dwTickCount + (unsigned long)10 * 70; //分胶延时输出
- }
- break;
- case 3:
- if(X11_UP || (cDataArea[90] == 55) || ((!bRunning || (Y01 && cOneTimes)) && (dwTickCount >= cDelayTime2))) //过链上到链上的时候送胶开始
- {
- cStepMByte1 = 4;
- }
- break;
- case 4:
- //单勾针方式上升开始送胶 双勾针方式电机完成后才能送 分胶到位
- if(((SGZSelect == 1) || (cStepMByte2 == 0)) && (dwTickCount >= cDelayTime2))
- {
- if(X12 && Y02 && (!Y01 || (TWOTDSelect == 0) || SongJiaoMode)) //分胶到位
- {
- cStepMByte1 = 5;
- SETQ04;
- cErrorTime1 = dwTickCount + (unsigned long)ERRORTIME;
- cDelayTime2 = dwTickCount + (unsigned long)10 * cDataArea[9];
- }
- }
- if(!X12 && (dwTickCount >= cErrorTime))
- {
- cDataArea[75] = ActionPage;
- cDataArea[100] = FengJiao_W; //送胶不到位警告
- M15 = 0;//cMidleCoil[0] &= ~(1<<15); //M15
- bStop = 1;
- }
- break;
- case 5:
- if(X16_UP || ((SongJiaoMode == 1) && (SongJiaoDaoWei == 1) && (dwTickCount >= cDelayTime2)))
- {
- // cDelayTime2 = dwTickCount + (unsigned long)10 * cDataArea[2];
- if(bRunning || M19) //在工作状态
- {
- cStepMByte1 = 6;
- cDelayTime2 = dwTickCount + (unsigned long)15;
- }
- else
- cStepMByte1 = 0;
-
- }
- else if(dwTickCount >= cErrorTime1)
- {
- cDataArea[75] = ActionPage;
- cDataArea[100] = SongJiao_W; //送胶不到位警告
- M15 = 0;//cMidleCoil[0] &= ~(1<<15); //M15
- bStop = 1;
- }
- if(X21 && bRunning)
- {
- cDataArea[75] = ActionPage;
- cDataArea[100] = NoJiao_W; //没胶警告
- M15 = 0;//cMidleCoil[0] &= ~(1<<15); //M15
- // bStop = 1;
- cOneTimes = 1;
- }
- break;
- case 6:
- if((dwTickCount >= cDelayTime2))//(cStepMByte2 == 0) || (TWOTDSelect == 1)) //普通拖带
- {
- cStepMByte1 = 7;
- CLRQ02;//关分胶
-
- if(CJSelect == XinYe)//鑫业的Y06为夹胶
- {
- CLRQ06;
- cDelayTime2 = dwTickCount + (unsigned long)45;
- }
- cErrorTime1 = dwTickCount + (unsigned long)ERRORTIME;
- }
- break;
- case 7:
- if((CJSelect == XinYe) && X12)//鑫业的Y06为夹胶
- {
- cDelayTime2 = dwTickCount + (unsigned long)35;
- }
- if(/*(X13 || FengJiaoSelect) && */!X12 && (dwTickCount >= cDelayTime2))
- {
- cStepMByte1 = 8;
-
- if((SongJiaoMode == 0) || (!bRunning)) //气缸送胶先退,滚轮送胶先不退或是触摸屏手动退送胶
- CLRQ04;
- cErrorTime1 = dwTickCount + (unsigned long)ERRORTIME;
- }
- else if(dwTickCount >= cErrorTime1)
- {
- cDataArea[75] = ActionPage;
- cDataArea[100] = TuiFenJiao_W; //退分胶不到位警告
- bStop = 1;
- }
- break;
- case 8:
- //送胶模式 0 气缸 1 滚轮(没后接近)/感应前点离开
- if(((SongJiaoMode == 1) || (!X16 && X17)))
- {
- cStepMByte1 = 0;
- M19 = 0;
- }
- else if(dwTickCount >= cErrorTime1)
- {
- cDataArea[75] = ActionPage;
- cDataArea[100] = TuiJiao_W; //退送胶不到位警告
- bStop = 1;
- }
- break;
- }
- }
- //合模超声动作
- void CSTB_HeMo_CS_CS(void)
- {
- switch(cStepMByte3)
- {
- case 0:
- break;
- case 1:
- //分胶 送胶 滚轮模式不退 分胶前 分胶后 送胶到位 退胶胶到位 滚轮方式 //单勾针方式
- if((!Y02) && ((!Y04) || (SongJiaoMode == 1)) && (!X12) && (X13 || FengJiaoSelect) && (((!X16) && X17) || (SongJiaoMode == 1)) && (X15 || (SGZSelect != 0)))
- {
- SETQ03; // 下冲
- //下模方式 0 下模活动,1 下模不动
- if((XiaMoMode == 0) && (SGZSelect != 0))//单勾针方式
- {
- SETQ05;
- }
-
-
- cStepMByte3 = 2;
- cErrorTime3 = dwTickCount + (unsigned long)ERRORTIME;
- }
- else if(!bRunning)
- cStepMByte3 = 0;
- break;
- case 2:
- //上模下到位 单勾针方式X15才接到下模上到位 或下模不动
- if(X14 && ((X15 && (SGZSelect != 0)) || (XiaMoMode != 0)))
- {
- cDelayTime5 = dwTickCount + (unsigned long)10 * cDataArea[0]; //延时超声
- cStepMByte3 = 3;
- if(TuiGZMode == 1) //0 先超声后下勾针,1 先下勾针后超声
- CLRQ01;
- }
- else if((dwTickCount >= cErrorTime3) && !X14) //合模不到位
- {
- cDataArea[75] = ActionPage;
- cDataArea[100] = HeMoDW_W; //退送胶不到位警告
- bStop = 1;
- }
- break;
- case 3:
- if(dwTickCount >= cDelayTime5)
- {
- if((cDataArea[90] != 55))
- {
- M09 = 0;
- SETQ10; //超声开
- SETQ11;
- if(cDataArea[6] > 150)
- cDelayTime5 = dwTickCount + (unsigned long)10 * 150; //超声时间
- else
- {
- if(X07 && (cHMI_Test) && (cDataArea[28] < cDataArea[6]))
- cDelayTime5 = dwTickCount + (unsigned long)10 * (cDataArea[6] - cDataArea[28]); //超声时间
- else
- cDelayTime5 = dwTickCount + (unsigned long)10 * cDataArea[6]; //超声时间
- }
- CLRQ04; //滚轮方式退送胶
- }
- else
- {
- cDelayTime5 = dwTickCount + (unsigned long)30;
- }
- cStepMByte3 = 4;
- }
- break;
- case 4:
- if(dwTickCount >= cDelayTime5)
- {
- cStepMByte3 = 5;
- CLRQ10;
- CLRQ11;
- StartCuiQi(); //启动吹气
- cDelayTime5 = dwTickCount + (unsigned long)5 * cDataArea[7]; //固化时间一半
- }
- break;
- case 5:
- if(dwTickCount >= cDelayTime5)
- {
- cStepMByte3 = 6;
- CLRQ01; //勾针下
- cDelayTime5 = dwTickCount + (unsigned long)5 * cDataArea[7]; //固化时间一半
- }
- break;
- case 6:
- if(dwTickCount >= cDelayTime5)
- {
- CLRQ03; //上模关
- CLRQ05; //下模或压带关
- cStepMByte3 = 0;
- cDelayTime5 = dwTickCount + (unsigned long)10 * 35;
- }
- break;
- }
- }
- void Hand_Action(void)
- {
- unsigned char ch;
- //手动勾针,屏单独控制
- if(M04)
- {
- M04 = 0;//cMidleCoil[0] &= ~(1<<4); //M4
- if(Y01)
- CLRQ01;
- else if((TWOTDSelect == 0) || SongJiaoMode || !Y04)
- SETQ01;
- }
- //手动勾针
- if(X02)
- {// 送胶前 单勾针方式 滚轮送胶方式
- if(X02_UP && (!X16 || (SGZSelect == 1) || (SongJiaoMode == 1)))
- {
- SETQ01;
- }
- // 双勾针选择0 双勾针(新款) 1 单勾针
- if((SGZSelect == 0)) //没触摸屏时自动压带
- {
- //勾针到位
- if(Y01 && X20 && !Y05)
- {
- SETQ05;
- cDelayTime2 = dwTickCount + (unsigned long)10 * cDataArea[3]; //压带输出时间
- }
- if(Y05 && (dwTickCount >= cDelayTime2))
- {
- CLRQ01;
- }
- }
- }
- else if(X02_DW)
- {
- CLRQ01;
- if((SGZSelect == 0) && X02_DW)//没触摸屏时自动退压带
- CLRQ05;
- }
- //压带,在双勾针方式时有效
- if(M03)
- {
- M03 = 0;//cMidleCoil[0] &= ~(1<<3); //M3
- //双勾针方式 下模不动
- if((SGZSelect == 0) && (XiaMoMode == 1))
- {
- if(Y05)
- CLRQ05;
- else
- SETQ05;
- }
- }
- //手动前导板(分胶)
- //改动06.12.27 合模或双勾针 合模到位 上模 下模下到位 手动超声
- if((X03_UP || M13) && ((!Y05 &&(!X15) && (SGZSelect == 1)) || ((SGZSelect == 0) && X15 && !X20)) &&
- (!Y03) && (!X14) && (!X06))
- {
- M13 = 0;//cMidleCoil[0] &= ~(1<<13); //M13
- if(Y02 && !X03)
- CLRQ02;
- else
- SETQ02;
- }
- else if(X03_DW)
- CLRQ02;
- //手动送胶 当单勾针时下模信号不能有 当为双勾针时要勾针退到位(X15是复用)
- if(Y04 && X16_UP)
- {
- //CLRQ06;
- }
- // 合模或双勾针 合模到位
- if((X05 || M07) && ((!Y05 &&(!X15) && (SGZSelect == 1)) || ((SGZSelect == 0) && X15 && !X20))
- //上模 下模下到位 手动超声
- && (!Y03) && (!X14) && (!X06) && (!Y04 || X05_UP))
- {
- if(CJSelect == XinYe)//鑫业的Y06为夹胶
- {
- if(!Y01 || (TWOTDSelect == 0) || SongJiaoMode)
- {
- if(X05_UP || (!Y06 && M07))
- {
- SETQ06;
- cDelayTime1 = dwTickCount + (unsigned long)70;
- }
- else if(Y06 && (dwTickCount >= cDelayTime1))
- {
- SETQ04;
- M07 = 0;//cMidleCoil[0] &= ~(1<<7); //M7
- }
- }
- else
- M07 = 0;
- }
- else if(CJSelect == ChangSheng)//鑫业的Y06为夹胶
- {//手动送胶 普通拖带 二次拖带时勾针不能有输出
- if((X05_UP || M07) && ((TWOTDSelect == 0) || ((TWOTDSelect == 1) && !Y01)))
- {
- SETQ04;
- M07 = 0;//cMidleCoil[0] &= ~(1<<7); //M7
- }
- }
- }
- else if(!X05)
- {
- if(CJSelect == XinYe)//鑫业的Y06为夹胶
- {
- if(X05_DW || M07)
- {
- M07 = 0;//cMidleCoil[0] &= ~(1<<7); //M7
- CLRQ06;
- cDelayTime1 = dwTickCount + (unsigned long)120;
- }
- else if(!Y06 && (dwTickCount >= cDelayTime1))
- {
- CLRQ04;
- }
- if(!Y04 && X17_UP)
- {
- SETQ06;
- }
- }
- else if(CJSelect == ChangSheng)//鑫业的Y06为夹胶
- {
- if(X05_DW || M07)
- {
- CLRQ04;
- M07 = 0;//cMidleCoil[0] &= ~(1<<7); //M7
- }
- }
- }
- //手动合模
- //手动下冲 分胶后 分胶前 送胶到位 退胶到位 或滚轮送胶
- if((X04 || M08) && (X13 || FengJiaoSelect) && (!X12) && (((!X16) && X17) || (SongJiaoMode == 1))
- //超声输出
- && (!Y10))
- {
- if(M08 && Y03 && !X04)
- {
- CLRQ03;
- if(((SGZSelect == 0) && (XiaMoMode == 1)) || (XiaMoMode == 0))
- {
- CLRQ05;
- }
- }
- //合模输出
- else if((X04_UP || M08) && !Y03 &&((SGZSelect == 0) && X15 && !X20) || (SGZSelect == 1))
- {
- SETQ03;
- if(XiaMoMode == 0) //下模活动方式
- SETQ05;
- }
- M08 = 0;//cMidleCoil[0] &= ~(1<<8); //M8
- }
- else if(X04_DW)
- {
- CLRQ03;
- if(((SGZSelect == 0) && (XiaMoMode == 1)) || (XiaMoMode == 0))
- {
- CLRQ05;
- }
- }
- if(X14_UP) //合模到位
- {
- if(CJSelect != XinYe)
- StartCuiQi(); //启动吹气
- }
- //手动超声
- // 分胶 送胶 分胶前 分胶后 送胶到位 退胶到位 送胶为滚轮方式
- if((X06 || ((M09 || M10) && !X06_DW)) && (!Y02) && (!Y04) && (!X12) && (X13 || FengJiaoSelect) && (((!X16) && X17) || (SongJiaoMode == 1)) && (dwTickCount >= cDelayTime5))
- {// 上超
- if((((SGZSelect == 0) && X15 && !X20) || (SGZSelect == 1)) && (!X10) && !M12 )
- {
- if(XiaMoMode == 1) //下模不动
- {
- if(X14)//已经合模
- {
- if((X06_UP || M09) && (cStepMByte3 == 0))
- {
- cStepMByte3 = 3; //直接发超声(按设定时间)
- // M09 = 0;//cMidleCoil[0] &= ~(1<<9); //M9
- M10 = 1;//cMidleCoil[0] |= (1<<10); //M10
- }
- }
- else
- {
- if((X06_UP || M09) && !M10)
- {
- M10 = 1;//cMidleCoil[0] |= (1<<10); //M10
- SETQ10; //发超声
- cDelayTime5 = dwTickCount + (unsigned long)10 * cDataArea[6]; //限长时间2秒
- }
- else if(((!M09 && !X06) || (dwTickCount >= cDelayTime5)) && Y10)
- {
- M09 = 0;//cMidleCoil[0] &= ~(1<<9); //M9
- M10 = 0;
- CLRQ10;
- StartCuiQi();
- }
- }
- }
- else if(SGZSelect == 1)//下模活动,勾针为单勾针
- {
- if((X06_UP || M09) && !M10)
- {
- M09 = 1;M10 = 1;//cMidleCoil[0] |= ((1<<10) | (1<<9)) ; //M10
- SETQ05; //先下模升上去
- if(X15) //先合模的情况下直接发超声
- {
- SETQ10; //发超声
- cDelayTime5 = dwTickCount + (unsigned long)10 * 200; //限长时间2秒
- }
- }
- if(Y05 && X15_UP)
- {
- SETQ10; //发超声
- cDelayTime5 = dwTickCount + (unsigned long)10 * 200; //限长时间2秒
- }
- if((!M09 || (dwTickCount >= cDelayTime5)) && Y10)
- {
- M09 = 0;//cMidleCoil[0] &= ~(1<<9); //M9
- CLRQ10;
- cStepMByte3 = 4;
- }
- }
- //手动超声完成
- if(!M09 && !Y10 && !X06)
- {
- M10 = 0;//cMidleCoil[0] &= ~(1<<10); //M10
- cStepMByte3 = 0;
- cDataArea[128] = 0;
- if(XiaMoMode == 0) //下模活动
- {
- CLRQ05;
- }
- }
- }
- else
- M09 = 0;//cMidleCoil[0] &= ~(1<<9); //M9
- }
- else if(X06_DW)
- {
- M10 = 0;//cMidleCoil[0] &= ~(1<<10); //M10
- M09 = 0;//cMidleCoil[0] &= ~(1<<9); //M9
- CLRQ10;
- cStepMByte3 = 0;
- cDelayTime5 = dwTickCount + (unsigned long)10 * 30;
- if(XiaMoMode == 0) //下模活动
- {
- CLRQ05;
- }
- }
- //手动 上超
- // 分胶 分胶前 分胶后 送胶 送胶到位 退胶到位 手动超声
- if((X10_UP || M11) && !M12 && (!Y02) && (!X12) && (X13 || FengJiaoSelect) && (((!Y04) && (!X16) && X17) || (SongJiaoMode == 1))&& (!X06) && (dwTickCount >= cDelayTime5))
- {
-
- if(((SGZSelect == 0) && X15 && !X20) || (SGZSelect == 1))
- {
- M12 = 1;//cMidleCoil[0] |= (1<<12); //M12
- cStepMByte3 = 1; //整个合模超声过程
- if(CJSelect == XinYe)//鑫业的Y06为夹胶
- SETQ06;
- }
- M11 = 0;//cMidleCoil[0] &= ~(1<<11); //M11
- }
- else if(X10_DW || (M12 && ((cStepMByte3 == 0) || M11)))
- {
- M11 = 0;//cMidleCoil[0] &= ~(1<<11); //M11
- M12 = 0;//cMidleCoil[0] &= ~(1<<12); //M12
- CLRQ03; //上模关
- CLRQ10; //超声关
- if((SGZSelect == 1) && (XiaMoMode == 0)) //下模活动
- CLRQ05; //下模或压带关
- cStepMByte3 = 0;
- cDelayTime5 = dwTickCount + (unsigned long)10 * 30;
- }
- //自动送胶动作
- if(M18)
- {
- M18 = 0;
- if(!Y03 && !X14 && !Y05 && (XiaMoMode == 1) && !Y04 && (!Y01 || (TWOTDSelect == 0) || SongJiaoMode))
- {
- M19 = 1;
- cStepMByte1 = 1; //分胶送开始
- }
- }
- }
- void Auto_Run(void)
- {
- switch(cStepMByte)
- {
- case 0:
- break;
- case 1:
- cStepMByte = 2;
- CLRDR();
-
- // CLRQ01; //勾针先下去
- cDelayTime1 = dwTickCount + (unsigned long)200; //先锁轴
- cTest1 = 0;
- cSetEncode = 0;
- break;
- case 2: //第一条时
- if(dwTickCount >= cDelayTime1)
- {
- cStepMByte = 3;
- cStepMByte1 = 1; //分胶送开始
- cEncodePulse = 0;
- if(!Y01)
- cStepMByte2 = 1; //拖带电机开始
- }
- break;
- case 3:
- // 送胶完成
- if((cStepMByte1 == 0) && (cStepMByte2 == 0))
- {
- cStepMByte = 4;
- if(cTest1 == 1)
- cSetEncode = cEncodePulse;
- if(DianJiFanZ == 1)
- cStepMByte2 = 20; //拖带电机反转一点
- else
- SETDR();
- }
- break;
- case 4:
- //分胶 分胶前 分胶后 送胶 送胶到位 退胶到位 滚轮方式 双勾针方式时勾针要退到位 单勾针方式
- if((!Y02) && (!X12) && (X13 || FengJiaoSelect) && (((!Y04) &&(!X16) && X17) || (SongJiaoMode == 1))&& (((SGZSelect == 0) && X15 && !X20) || (SGZSelect == 1)))
- {
- if(cStepMByte2 == 0)
- {
- cStepMByte = 5;
- cStepMByte3 = 1;
- if(CJSelect == XinYe)//鑫业的Y06为夹胶
- SETQ06;
- if(cHMI_Test == 0)
- SETQ07; //计数器输出
- }
- }
- break;
- case 5:
- if(cStepMByte3 == 0)
- {
- cStepMByte = 6;
-
- CLRQ01;
- if(cOneTimes == 1)
- {
- SETDR();
- bStop = 1;
- }
- else
- {
- CLRDR();
- CalProSP(); //计算生产速度
- }
- AddAndSavecToTal(); //产量加1保存
- }
- break;
- case 6:
- if(!X14 && (((SGZSelect == 0) && X15 && !X20) || ((XiaMoMode == 0) && !X15) || ((XiaMoMode == 1) && (SGZSelect == 1)))) //上模离开
- {
- cStepMByte = 7;
- cDelayTime1 = dwTickCount + (unsigned long)30; //先锁轴
- }
- break;
- case 7:
- if(dwTickCount >= cDelayTime1)
- {
-
- cStepMByte = 2;
- cTest1++;
- if(cTest1 > 2)
- cTest1 = 3;
- if(cHMI_Test == 0)
- CLRQ07;
- }
- break;
- }
- }
|