123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758 |
- #include "global.h"
- #include "typedefine.h"
- #if 0//XIN_YE_MACHINE
- /**************************************
- ** 函数名称:void ChaXiaoJi(void)
- ** 函数功能:方块插稍机动作函数
- ** 输入输出说明:
- 输入:
- X0 插销启动
- X1 停止开关
- X2 方块启动
- X3 手动钩针
- X4 安全门
- X5 方块.插销选择
- X6 手动给料
- X7 手动夹料
- X010 手动送料
- X011 手动下冲
- X12 过链接近开关
- X13 下冲感应接近开关
- X14 夹插销光电开关
- X15 夹方块光电开关
- X16 送插销到位磁感
- X17 退送插销到位磁感
- X20 送方块到位磁感
- X021 退送方块到位磁感
- X022 压带磁感
- X023 给插销磁感
- X024 给方块磁感
- X025 冲针选择
- X026 冲针保护
- X27 打单边
- 输出:
- Y0 离合器
- Y1 计数
- Y2 插销运行指示 (触摸屏时为振动盘)
- Y3 方块运行指示 (触摸屏时为警告蜂鸣器)
- Y4 方块垫块电磁阀
- Y5 压带电磁阀
- Y6 下冲电磁阀
- Y7 插销垫块电磁阀
- Y10 给插销电磁阀
- Y11 夹插销电磁阀
- Y12 送插销电磁阀
- Y13 送方块电磁阀
- Y14 夹方块电磁阀
- Y017 给方块电磁阀
- Y016 勾针电磁阀
- Y017 冲子选择电磁阀
- D0 给插销(方块)到位后延时退回
- D1 送插捎(方块)到位夹打开延时退回
- D2 下冲输出时间
- D3 给料次数
- D4 给料故障后下一次给料时间
- D5 给料到前点的最长时间
- D6 延时停离合
- D7 延时上勾针
- D8 普通方块插销设置(2.55)
- 上下拉方块插销设置(0.55)
- D9 加速时间
- D10 起动速度
- D11 最高速度
- D12 下冲感应方式(0 老方式 1 新常亮方式)
- ***************************************/
- #define bStopOver cFangKuaiRunBit.bits.b0
- #define bStopXiao cFangKuaiRunBit.bits.b1
- #define bStopFang cFangKuaiRunBit.bits.b2
- #define bStopXiaCong cFangKuaiRunBit.bits.b3
- #define bXiaCong cFangKuaiRunBit.bits.b4
- #define bGeiXiao cFangKuaiRunBit.bits.b5
- #define bGeiFang cFangKuaiRunBit.bits.b6
- #define IN_EN 1
- #define IN_DIS 2
- #define OUT_EN 3
- #define OUT_DIS 4
- unsigned char FKCX_cReady,FKCX_cHalfRun,FKCX_cYaDai,FKCX_cSelectXiaChong,FKCX_YaDaiError,FKCX_cXiaChongStep = 0,FKCX_bRunning,FKCX_bStop;
- unsigned long cErrorTime,FKCX_cErrorTime1,FKCX_cStartKeyDelay,FKCX_cTotal,FKCX_cTestNum,FKCX_cErrorTime2;
- unsigned char cGeiLiaoNum,YaDaiError;
- unsigned short FKCX_cCountTime;
- unsigned char cReady,cHalfRun,cYaDai,cSelectXiaChong,YaDaiError;
- unsigned long FKCX_JiaXiao(unsigned long En_Dis);
- unsigned long FKCX_SongXiao(unsigned long En_Dis);
- unsigned long FKCX_Motor(unsigned long En_Dis);
- unsigned long FKCX_JiaFang(unsigned long En_Dis);
- unsigned long FKCX_SongFang(unsigned long En_Dis);
- unsigned long cProSpTime;
- unsigned short cStopOver;
- void FKCX_ManualAciton(void);
- void FKCX_XiaChongStep(void);
- void FK_Auto_Con_XY(void);
- byte_bits_t cFangKuaiRunBit;
- //故障报警
- void FKCX_SetAlarmCode(unsigned alarm_code)
- {
- SetAlarmCode(FKCX_ALARM_ADDR,alarm_code);
- FKCX_bStop = 1;
- }
- void FKCX_InitAction(void)
- {
- CalFreqTab_X_Free(50);
- XGearRatio = 1;
- YGearRatio = 1;
- FKCX_SETDR();
- }
- //夹销.给销动作
- void JiaXiao_XY(void)
- {
-
- switch(cStepMByte3) //离合器起动
- {
- case 0:
- break;
- case 1:
- if(X17) //退送插销到位磁感
- {
- cStepMByte3 = 2;
- SETQ10; //给插销打开
- SETQ11; //夹插销打开
- FKCX_cErrorTime1 = dwTickCount + (unsigned long)user_datas[5]*10;
- cDelayTime5 = dwTickCount + (unsigned long)1200;
- }
- else
- CLRQ10; //给插销关
- CLRQ12; //送稍电磁阀
- break;
- case 2: //给销到位
- if(X023) //给销到位
- {
- if(X23_UP)
- cDelayTime5 = dwTickCount + (unsigned long)35;
- else if(dwTickCount >= cDelayTime5)
- {
- CLRQ11; //夹插销夹
- cDelayTime5 = dwTickCount + (unsigned long)45;
- cStepMByte3 = 30;
- }
- }
- else if(dwTickCount >= FKCX_cErrorTime1)
- {
- CLRQ11; //夹插销夹
- CLRQ10; //给插销退回
- cGeiLiaoNum++;
- if(cGeiLiaoNum >= user_datas[3]) //给料次数到卡料警告
- {
- bStop = 1;
- cGeiLiaoNum = 0;
- //cMidleCoil[5] |= (1<<2); //插稍给料出错
- user_datas[75] = ActionPage;
- user_datas[100] = 3; //给料出错显示
- M15 = 0;//cMidleCoil[0] &= ~(1<<15); //M15
- user_datas[101] = 0;
- }
- else
- {
- cStepMByte3 = 4;
- }
- }
- break;
- case 30:
- if(dwTickCount >= cDelayTime5)
- {
- CLRQ10; //给插销退回
- cStepMByte3 = 3;
- cDelayTime5 = dwTickCount + (unsigned long)user_datas[0]*10 + 30;
- }
- break;
- case 3: //给料到位成功
- if(dwTickCount >= cDelayTime5)
- {
- CLRQ11; //夹插销夹
- CLRQ10; //给插销退回
- if(!X023)
- {
- // !X04 //不用料自动运行
- if(!bGeiXiao && (user_datas[90] != 55)) //没料
- {
- cStepMByte3 = 0;
- cGeiLiaoNum++;
- if(cGeiLiaoNum >= user_datas[3]) //送三次没料
- {
- bStop = 1;
- cGeiLiaoNum = 0;
- //cMidleCoil[5] |= (1<<2); //插稍给料出错
- user_datas[75] = ActionPage;
- user_datas[100] = 5; //给料出错显示
- M15 = 0;//cMidleCoil[0] &= ~(1<<15); //M15
- user_datas[101] = 0;
- }
- else
- {
- cStepMByte3 = 4;
- }
- }
- else
- {
- cStepMByte3 = 0;
- cGeiLiaoNum = 0;
- }
- }
- }
- break;
- case 4: //给料不成功
- if(!X023)
- {
- cStepMByte3 = 5;
- cDelayTime5 = dwTickCount + (unsigned long)user_datas[4]*10;
- }
- break;
- case 5:
- if((dwTickCount >= cDelayTime5))
- {
- if(!bGeiXiao) //!X14
- {
- cStepMByte3 = 2;
- SETQ10; //给插销打开
- SETQ11; //夹插销打开
- FKCX_cErrorTime1 = dwTickCount + (unsigned long)user_datas[5]*10;
- cDelayTime5 = dwTickCount + (unsigned long)1200;
- }
- else //其实已经有料
- {
- cStepMByte3 = 0;
- /* bStop = 1;
- cGeiLiaoNum = 0;
- //cMidleCoil[5] |= (1<<2); //插稍给料出错
- user_datas[75] = ActionPage;
- user_datas[100] = 3; //给料出错显示
- cMidleCoil[0] &= ~(1<<15); //M15
- user_datas[101] = 0;
- */
- }
- }
- break;
- }
- }
- //送销动作
- void SongXiao_XY(void)
- {
- switch(cStepMByte3)
- {
- case 0:
- break;
- case 1:
- FKCX_cErrorTime1 = dwTickCount + (unsigned long)FKCX_ERRORTIME;
- //X04
- if((bGeiXiao) || (user_datas[90] == 55)) //方块
- {
- SETQ12; //送销打开
- cStepMByte3 = 2;
- }
- break;
- case 2: //送销到位
- if((X16) && (!X17))
- {
- cStepMByte3 = 3;
- cDelayTime5 = dwTickCount + (unsigned long)20;
- }
- else if(dwTickCount >= FKCX_cErrorTime1) //送销不到位故障
- {
- // bStop = 1;
- //cMidleCoil[5] |= (1<<4); //插稍送料不到位
- user_datas[75] = ActionPage;
- user_datas[100] = 7; //插稍送料不到位
- M15 = 0;//cMidleCoil[0] &= ~(1<<15); //M15
- user_datas[101] = 0;
- }
- break;
- case 3:
- if(dwTickCount >= cDelayTime5)
- {
- cStepMByte3 = 4;
- SETQ11; //夹插销打开
- cDelayTime5 = dwTickCount + (unsigned long)user_datas[1]*10;
- }
- break;
- case 4:
- if(dwTickCount >= cDelayTime5)
- {
- cStepMByte3 = 5;
- CLRQ12; //退送插销
- bStopXiaCong = 1;
- FKCX_cErrorTime1 = dwTickCount + (unsigned long)FKCX_ERRORTIME;
- }
- break;
- case 5:
- if((X17) && (!X16))
- {
- cStepMByte3 = 6;
- CLRQ11; //夹插销关
- cDelayTime5 = dwTickCount + (unsigned long)150;
- }
- else if(dwTickCount >= FKCX_cErrorTime1) //退送出错警告
- {
- // bStop = 1;
- //cMidleCoil[5] |= (1<<6); //插稍送料退不到位
- user_datas[75] = ActionPage;
- user_datas[100] = 9; //插稍送料退不到位
- M15 = 0;//cMidleCoil[0] &= ~(1<<15); //M15
- user_datas[101] = 0;
- }
- break;
- case 6:
- if(!bGeiXiao) // !X04
- {
- cStepMByte3 = 0;
- bStopXiaCong = 1;
- }
- else if(dwTickCount >= cDelayTime5) //带料出来警告
- {
- bStop = 1;
- bStopXiaCong = 0;
- //cMidleCoil[5] |= (1<<9); //插稍带料退出
- user_datas[75] = ActionPage;
- user_datas[100] = 11; //插稍带料退出
- M15 = 0;//cMidleCoil[0] &= ~(1<<15); //M15
- user_datas[101] = 0;
- }
- break;
- }
- }
- //夹方块.给方块动作
- void JiaFang_XY(void)
- {
- switch(cStepMByte4)
- {
- case 0:
- break;
- case 1:
- if(X021)
- {
- cStepMByte4 = 2;
- SETQ17; //给方块打开
- SETQ14; //夹方块打开
- FKCX_cErrorTime2 = dwTickCount + (unsigned long)user_datas[5]*10;
- cDelayTime6 = dwTickCount + (unsigned long)1200;
- }
- else
- CLRQ17;
- CLRQ13;
- break;
- case 2: //给方块到位
- if(X024)
- {
- if(X24_UP)
- {
- cDelayTime6 = dwTickCount + (unsigned long)35;
- }
- else if(dwTickCount >= cDelayTime6)
- {
- CLRQ14; //夹方块夹
- CLRQ17; //给方块退回
- cStepMByte4 = 3;
- cDelayTime6 = dwTickCount + (unsigned long)user_datas[0]*10 + 30;
- }
- }
- else if(dwTickCount >= FKCX_cErrorTime2)
- {
- CLRQ14; //夹方块夹
- CLRQ17; //给方块退回
- cStepMByte4 = 0;
- cGeiLiaoNum++;
- if(cGeiLiaoNum >= user_datas[3]) //给料三次错误
- {
- bStop = 1;
- cGeiLiaoNum = 0;
- //cMidleCoil[5] |= (1<<3); //方块给料出错
- user_datas[75] = ActionPage;
- user_datas[100] = 4; //方块出错显示
- M15 = 0;//cMidleCoil[0] &= ~(1<<15); //M15
- user_datas[101] = 0;
- }
- else
- {
- cStepMByte4 = 4;
- }
- }
- break;
- case 3: //已给料到前面
- if(dwTickCount >= cDelayTime6)
- { // !X15 //没带空打
- if((!bGeiFang) && (user_datas[90] != 55)) //没料
- {
- cGeiLiaoNum++;
- if(cGeiLiaoNum >= user_datas[3]) //没料三次警告
- {
- bStop = 1;
- cGeiLiaoNum = 0;
- //cMidleCoil[5] |= (1<<3); //方块给料出错
- user_datas[75] = ActionPage;
- user_datas[100] = 6; //方块出错显示
- M15 = 0;//cMidleCoil[0] &= ~(1<<15); //M15
- user_datas[101] = 0;
- }
- else
- {
- cStepMByte4 = 4;
- }
- }
- else
- {
- cStepMByte4 = 0; //完成
- cGeiLiaoNum = 0;
- }
- }
- break;
- case 4://出错退回
- if(!X024)
- {
- cStepMByte4 = 5;
- cDelayTime6 = dwTickCount + (unsigned long)user_datas[4]*10;
- }
- break;
- case 5:
- if((dwTickCount >= cDelayTime6))
- { //!X15
- if(!bGeiFang)
- {
- cStepMByte4 = 2;
- SETQ17; //给插销打开
- SETQ14; //夹插销打开
- FKCX_cErrorTime2 = dwTickCount + (unsigned long)user_datas[5]*10;
- cDelayTime6 = dwTickCount + (unsigned long)1200;
- }
- else
- {
- cStepMByte4 = 0;
- /* bStop = 1;
- cGeiLiaoNum = 0;
- //cMidleCoil[5] |= (1<<3); //方块给料出错
- user_datas[75] = ActionPage;
- user_datas[100] = 4; //方块出错显示
- cMidleCoil[0] &= ~(1<<15); //M15
- user_datas[101] = 0;
- */
- }
- }
- break;
- }
- }
- //送方块动作
- void SongFang_XY(void)
- {
-
- switch(cStepMByte4)
- {
- case 0:
- break;
- case 1: //X15
- if((bGeiFang) || (user_datas[90] == 55))
- {
- cStepMByte4 = 2;
- SETQ13; //送方块打开
- FKCX_cErrorTime2 = dwTickCount + (unsigned long)FKCX_ERRORTIME;
- }
- break;
- case 2: //送销到位
- if((X20) && (!X021))
- {
- cStepMByte4 = 3;
- cDelayTime6 = dwTickCount + (unsigned long)20;
- }
- else if(dwTickCount >= FKCX_cErrorTime2) //送销不到位故障
- {
- // bStop = 1;
- //cMidleCoil[5] |= (1<<5); //方块送料不到位
- user_datas[75] = ActionPage;
- user_datas[100] = 8; //方块送料不到位
- M15 = 0;//cMidleCoil[0] &= ~(1<<15); //M15
- user_datas[101] = 0;
- }
- break;
- case 3:
- if(dwTickCount >= cDelayTime6)
- {
- cStepMByte4 = 4;
- SETQ14; //夹方块打开
- cDelayTime6 = dwTickCount + (unsigned long)user_datas[1]*10;
- }
- break;
- case 4:
- if(dwTickCount >= cDelayTime6)
- {
- cStepMByte4 = 5;
- CLRQ13; //退送方块
- bStopXiaCong = 1;
- FKCX_cErrorTime2 = dwTickCount + (unsigned long)FKCX_ERRORTIME;
- }
- break;
- case 5:
- if((X021) && (!X20))
- {
- cStepMByte4 = 6;
- CLRQ14; //夹方块关
- cDelayTime6 = dwTickCount + (unsigned long)150;
- }
- else if(dwTickCount >= FKCX_cErrorTime2) //退送方块出错警告
- {
- // bStop = 1;
- //cMidleCoil[5] |= (1<<7); //方块送料退不到位
- user_datas[75] = ActionPage;
- user_datas[100] = 10; //方块送料退不到位
- M15 = 0;//cMidleCoil[0] &= ~(1<<15); //M15
- user_datas[101] = 0;
- }
- break;
- case 6:
- if(!bGeiFang)//!X15
- {
- cStepMByte4 = 0;
- bStopXiaCong = 1;
- }
- else if(dwTickCount >= cDelayTime6) //带料出来警告
- {
- bStop = 1;
- bStopXiaCong = 0;
- //cMidleCoil[5] |= (1<<10); //方块带料退出
- user_datas[75] = ActionPage;
- user_datas[100] = 12; //方块带料退出
- M15 = 0;//cMidleCoil[0] &= ~(1<<15); //M15
- user_datas[101] = 0;
- }
- break;
- }
- }
- void Start_Xiao_XY(unsigned char ch)
- {
- FKCX_CLRDR();
- cHalfRun = ch;
- cProSpTime = dwTickCount;
- M00 = 0;M01 = 0;//cMidleCoil[0] &= ~((1<<0) | (1<<1));
- M24 = 0;//cMidleCoil[1] &= ~(1<<8); //M24
- user_datas[100] = 0;
- bStopXiao = 0;
- bStopOver = 0;
- FKCX_bRunning = 1;
- // if(cHMI_Test == 0)
- SETQ02; //运行指示灯
- cStepMByte2 = 0;
- cStepMByte3 = 0;
- cGeiLiaoNum = 0;
- CLRQ04;
- CLRQ07;
-
- if(bStopXiaCong != 0) //
- {
- cStepMByte = 4;
- cStepMByte4 = 1; //给方块开始
- if(user_datas[8] != 55) //不是双拉机型
- {
- SETQ07; //垫片
- SETQ06; //下冲
- cDelayTime1 = dwTickCount + (unsigned long)user_datas[2]*10;
- cErrorTime = dwTickCount + (unsigned long)FKCX_ERRORTIME;
- M14 = 0;//cMidleCoil[0] |= (1<<14); //M14
- }
- bStopXiao = 0;
- bStopXiaCong = 0;
- cYaDai = 0;
- }
- else
- cStepMByte = 1; //从插销开始
- // if(X02)
- // cYaDai = 1;
- }
- void Start_Fang_XY(unsigned char ch)
- {
- FKCX_CLRDR();
- cHalfRun = ch;
- cProSpTime = dwTickCount;
- M00 = 0;M01 = 0;//cMidleCoil[0] &= ~((1<<0) | (1<<1));
- M25 = 0;//cMidleCoil[1] &= ~(1<<9); //M25
- bStopOver = 0;
- FKCX_bRunning = 1;
- SETQ02; //运行指示
- cStepMByte3 = 0;
- cStepMByte2 = 0;
- cGeiLiaoNum = 0;
- bStopFang = 1;
- user_datas[100] = 0;
- //之前已经送好料 直接下冲
- CLRQ04;
- CLRQ07; //
- if((bStopXiaCong) != 0)
- {
- cStepMByte4 = 0;
- cStepMByte = 7;
- SETQ06; //下冲
- SETQ04; //方块垫片
- cDelayTime1 = dwTickCount + (unsigned long)user_datas[2]*10;
- cErrorTime = dwTickCount + (unsigned long)FKCX_ERRORTIME;
- M14 = 0;//cMidleCoil[0] |= (1<<14); //M14
- cYaDai = 0;
- }
- else
- {
- cStepMByte = 5; //从方块开始
- if(bGeiFang) //X15
- cStepMByte4 = 0; //已有方块给方块
- else
- cStepMByte4 = 1; //已经有料
- }
- // if(X02)
- // cYaDai = 1;
- }
- void FKCX_ManualAciton(void)
- {
- unsigned long Y14_flg = 0;
- unsigned long Y14_delay;
- unsigned long Y11_flg = 0;
- unsigned long Y11_delay;
- static unsigned long in_delay;
- //下冲时判断是否出错
-
- //
- //工作条件
- if(cReady != 0)
- {
- //按起动 全自动 单条
- if(((X00_UP) || M00 || M01))
- {
- //不是方块停止 夹方块光电
- if(!bStopFang && !bGeiFang)// && (X20 || (cHMI_Test)))
- {
- if(M01 || X02_UP)
- Start_Xiao_XY(2); //单条
- else
- Start_Xiao_XY(0); //全自动
- }
- else if(!bStopXiao && bStopFang)// && (X20 || (cHMI_Test))) //方块启动
- {
- if(M01 || X02_UP)
- Start_Fang_XY(2); //单条
- else
- Start_Fang_XY(0); //全自动
- }
- M00 = 0;M01 = 0;//cMidleCoil[0] &= ~((1<<0) | (1<<1)); //M0 = 0,M1 = 0;
- }
- else if(X022) //压带到位(要先压带)
- {
- if(X02_UP)
- {
- if(X05) //插销全循环
- {
- Start_Xiao_XY(2); //全循环方式
- }
- else //方块全循环
- {
- Start_Fang_XY(2); //全循环方式
- }
- }
- else
- {
- if(M24) //插销半循环
- {
- Start_Xiao_XY(1); //半循环方式
- }
- else if(M25) //方块半循环
- {
- Start_Fang_XY(1); //半循环方式
- }
- }
- }
- else
- {
- M24 = 0;M25 = 0;//cMidleCoil[1] &= ~((1<<8) | (1<<9)); //M24 = 0 ;M25 = 0;
- }
- }
- else
- {
- M00 = 0;M01 = 0;//cMidleCoil[0] &= ~((1<<0) | (1<<1)); //M0 = 0,M1 = 0;
- M24 = 0;M25 = 0;//cMidleCoil[1] &= ~((1<<8) | (1<<9)); //M24 = 0,M25 = 0;
- }
-
- //手动下冲
- if(X11_UP || M05)
- {
- M05 = 0;//cMidleCoil[0] &= ~(1<<5);
- if(dwTickCount >= cDelayTime7)
- {
- if(X011)
- cDelayTime7 = dwTickCount + (unsigned long)0;
- else
- cDelayTime7 = dwTickCount + (unsigned long)10;
- // 送插销 送方块 退送插销到位 退送方块到位
- if((!Y12) && (!Y13) && (X17) && (X021)
- //勾针电磁阀 压带磁感 上升延 左右埑片 单板方式
- &&(!Y016) && (X022)&& (Y004 || Y007))
- {
- SETQ06; //下冲电磁阀
- cDelayTime1 = dwTickCount + (unsigned long)user_datas[2]*10;
- cErrorTime = dwTickCount + (unsigned long)FKCX_ERRORTIME;
- M14 = 1;//cMidleCoil[0] |= (1<<14); //M14
- }
- else //下冲条件不满足警告
- {
- M15 = 0;//cMidleCoil[0] &= ~((1<<15)); //M15
- //cMidleCoil[5] |= (1<<12); //不用
- user_datas[75] = OutPage;
- if(Y12) //送稍
- {
- user_datas[100] = ERY12; //Y12 无输出
- user_datas[101] = OUT_DIS;
- }
- else if(Y13) //送方块
- {
- user_datas[100] = ERY13; //Y13 有输出
- user_datas[101] = OUT_DIS;
- }
- else if(Y016) //勾针
- {
- user_datas[100] = ERY16; //Y016 有输出
- user_datas[101] = OUT_DIS;
- }
- else if(!X17) //送插稍退到位磁感
- {
- user_datas[100] = ERX17; //X17 输入不满足
- user_datas[101] = IN_EN;
- user_datas[75] = InPage;
- }
- else if(!X021) //送方块退到位磁感
- {
- user_datas[100] = ERX21; //X021 输入不满足
- user_datas[101] = IN_EN;
- user_datas[75] = InPage;
- }
- else //if(!X22带磁感) //压
- {
- user_datas[100] = ERX22; //X02 输入不满足
- user_datas[101] = IN_EN;
- user_datas[75] = InPage;
- }
- }
- }
- }
- if(Y06Flg != 0)
- {
- if(dwTickCount >= cDelayTime1)
- {
- CLRQ06; //下冲
- }
- }
- //下冲感应开关
- // if((M14))
- // {
- if(X13)
- {
- CLRQ06; //下冲
- M14= 0;//cMidleCoil[0] &= ~(1<<14); //下冲指示状态
- }
- else if((M14) && (dwTickCount >= cErrorTime)) //下冲故障警告
- {
- M14 = 0;M15 = 0;//cMidleCoil[0] &= ~((1<<14) | (1<<15)); //M14 M15
- //cMidleCoil[5] |= (1<<11); //下冲故障警告位
- user_datas[75] = ActionPage;
- user_datas[100] = 16; //显示下冲条件
- CLRQ06; //下冲
- }
- // }
- //手动勾针
- if((X03) || (M03))
- {
-
- if(dwTickCount >= cDelayTime7)
- {
- if(X03)
- cDelayTime7 = dwTickCount + (unsigned long)0;
- else
- cDelayTime7 = dwTickCount + (unsigned long)35;
- if(Y016 && !X03)
- CLRQ16; //勾针输出
- // 方块垫片 插稍垫片 下冲
- else if((!Y04Flg) && (!Y07Flg) && (!Y06Flg) &&
- // 送插稍 送方块 送插稍到位 送方块到位
- (!Y12) && (!Y13) && (!X16) && (!X20) && (X17) && (X021))
- {
- SETQ16;
- }
- else if((X03_UP) || (M03))// if(!X03)//勾针条件不满足警告
- {
- //cMidleCoil[5] |= (1<<12); //不用记录
- user_datas[75] = 6;
- M15 = 0;//cMidleCoil[0] &= ~((1<<15)); //M15
- user_datas[75] = OutPage;
- if(Y07Flg) //插稍埑片
- {
- user_datas[100] = ERY07; //Y07Flg 不能亮
- user_datas[101] = OUT_DIS;
- }
- else if(Y06Flg) //下冲
- {
- user_datas[100] = ERY06; //Y06Flg 不能亮
- user_datas[101] = OUT_DIS;
- }
- else if(Y04Flg) //方块埑片
- {
- user_datas[100] = ERY04; //Y04Flg 不能亮
- user_datas[101] = OUT_DIS;
- }
- else if(Y12) //送插稍
- {
- user_datas[100] = ERY12; //Y12 不能亮
- user_datas[101] = OUT_DIS;
- }
- else if(Y13) //送方块
- {
- user_datas[100] = ERY13; //Y13 不能亮
- user_datas[101] = OUT_DIS;
- }
- else if(X16) //送插稍到位
- {
- user_datas[100] = ERX16; //X16 不能亮
- user_datas[101] = IN_DIS;
- user_datas[75] = InPage;
- }
- else //(X20 != 0) //送方块到位
- {
- user_datas[100] = ERX20; //X020 不能亮
- user_datas[101] = IN_DIS;
- user_datas[75] = InPage;
- }
- }
- }
- M03 = 0;//cMidleCoil[0] &= ~(1<<3); //M3
- } //手动勾针关
- //手动勾针完成
-
- //手动压带
- if((M04))
- {
- if(dwTickCount >= cDelayTime7)
- {
- cDelayTime7 = dwTickCount + (unsigned long)35;
- if(Y005)
- CLRQ05; //压带关
- else
- {
- SETQ05; //压带开
- FKCX_cErrorTime1 = dwTickCount + (unsigned long)FKCX_ERRORTIME;
- YaDaiError = 1;
- }
- }
- M04 = 0;//cMidleCoil[0] &= ~(1<<4); //M4
- if(Y005) //压带
- cYaDai = 1;
- else
- cYaDai = 0;
- M04 = 0;
- }
-
- if(X022) //压带到位
- {
- YaDaiError = 0;
- }// 压带 压带到位
- if(YaDaiError && Y005 && (!X022) && (dwTickCount >= FKCX_cErrorTime1))
- {
- //cMidleCoil[5] |= (1<<12); //不记录
- user_datas[75] = ActionPage;
- user_datas[100] = 2; //压带出错,没法压到位
- M15 = 0;//cMidleCoil[0] &= ~(1<<15); //M15
- user_datas[101] = 0;
- YaDaiError = 0;
- }
- //手动压带完成
- //手动定位
- if(X025 || M22 || M23)
- {
- if(Y007 && M22 && !X025) // 插销埑片
- {
- CLRQ07;
- }
- else if(M23 && Y004 && !X025)
- {
- CLRQ04;
- }// 送稍到位 送方块到位 送稍,方块退到位 勾针
- else if((!X16) && (!X20) && (X17) && (X021) && (!Y016))
- {
- if(M22 && !Y004) //插销一边
- {
- SETQ07;
-
- }
- else if(!Y007)
- {
- SETQ04;
- }
-
- M22 = 0;
- M23 = 0;
- }
- else if(X25_UP ||M22 || M23)//定位条件不满足警告 || M
- {
- //cMidleCoil[5] |= (1<<12); //不用记录
- user_datas[75] = 6;
- M15 = 0;//cMidleCoil[0] &= ~((1<<15)); //M15
- user_datas[75] = InPage;
- if(Y016) //勾针
- {
- user_datas[100] = ERY16; //Y016 不能亮
- user_datas[101] = OUT_DIS;
- user_datas[75] = OutPage;
- }
- else if(X16) //送稍到位
- {
- user_datas[100] = ERX16; //X16 不能亮
- user_datas[101] = IN_DIS;
- }
- else if(X20) //方块到位
- {
- user_datas[100] = ERX20; //X20 不能亮
- user_datas[101] = IN_DIS;
- }
- else if(!X17) //送稍退到位
- {
- user_datas[100] = ERX17; //X17 要亮
- user_datas[101] = IN_EN;
- }
- else //(!X021) //方块退到位
- {
- user_datas[100] = ERX21; //X021 要亮
- user_datas[101] = IN_EN;
- }
- }
- M22 = 0;M23 = 0;//cMidleCoil[1] &= ~((1<<6) | (1<<7)); //M22,M23
- }
- else if(X25_DW && (!X27))
- {
- CLRQ04;
- CLRQ07;
- }
-
- //手动定位完成
-
- //手动送料
- // 手动送料
- if((X010) || M20 || M21)
- {
- FKCX_SETDR();
- if(dwTickCount >= cDelayTime7)
- {
- if(X010)
- cDelayTime7 = dwTickCount + (unsigned long)0;
- else
- cDelayTime7 = dwTickCount + (unsigned long)35;
- if((M20)) //手动送插销
- {
- CLRQ13; //送方块
- if(Y12 && !X010)
- CLRQ12;
- // 方块有料!X15 勾针阀 插销垫片 方块垫片 下冲阀 给料电磁阀 给料前点
- else if((!bGeiFang) && (!Y016) && (!Y07Flg) && (!Y04Flg) && (!Y06Flg) && (!Y10) && (!X023))
- SETQ12;
- else if((X10_UP) || M20)//送料不满足条件
- {
- //cMidleCoil[5] |= (1<<12); //不用记录
- user_datas[75] = OutPage;
- M15 = 0;//cMidleCoil[0] &= ~(1<<15); //M13,M15
- if(Y016) //勾针阀
- {
- user_datas[100] = ERY16; //
- user_datas[101] = OUT_DIS;
- }
- else if(Y07Flg) //插销垫片
- {
- user_datas[100] = ERY07; //
- user_datas[101] = OUT_DIS;
- }
- else if(Y06Flg) //下冲阀
- {
- user_datas[100] = ERY06; //
- user_datas[101] = OUT_DIS;
- }
- else if(Y04Flg) //方块垫片
- {
- user_datas[100] = ERY04; //
- user_datas[101] = OUT_DIS;
- }
- else if(Y10) //给料电磁阀
- {
- user_datas[100] = ERY10; //
- user_datas[101] = OUT_DIS;
- }
- else if(bGeiFang)
- {
- user_datas[100] = ERX15; //
- if(X15)
- user_datas[101] = IN_DIS;
- else
- user_datas[101] = IN_EN;
- user_datas[75] = InPage;
- }
- else //(X023)
- {
- user_datas[100] = ERX23;
- user_datas[101] = IN_DIS;
- user_datas[75] = InPage;
- }
- }
- }
- else //手动送方块
- {
- CLRQ12;
- if(Y13 && !X010)
- CLRQ13;
- // 勾针阀 插销垫片 方块垫片 下冲阀 给料电磁阀 给料前点
- else if((!Y016) && (!Y07Flg) && (!Y04Flg) && (!Y06Flg) && (!Y017) && (!X024))
- SETQ13;
- else if((X10_UP) || M21)//送料不满足条件
- {
- //cMidleCoil[5] |= (1<<12); //不用记录
- user_datas[75] = OutPage;
- M15 = 0;//cMidleCoil[0] &= ~((1<<15)); //M15
- if(Y016) //勾针阀
- {
- user_datas[100] = ERY16;
- user_datas[101] = OUT_DIS;
- }
- else if(Y07Flg) //插销垫片
- {
- user_datas[100] = ERY07;
- user_datas[101] = OUT_DIS;
- }
- else if(Y06Flg) //下冲阀
- {
- user_datas[100] = ERY07;
- user_datas[101] = OUT_DIS;
- }
- else if(Y04Flg) //方块垫片
- {
- user_datas[100] = ERY04;
- user_datas[101] = OUT_DIS;
- }
- else if(Y017) //给料电磁阀
- {
- user_datas[100] = ERY15;
- user_datas[101] = OUT_DIS;
- }
- else //(X024) //给料前点
- {
- user_datas[100] = ERX24;
- user_datas[101] = IN_DIS;
- user_datas[75] = InPage;
- }
- }
- }
- }
- M20 = 0;M21 = 0;//cMidleCoil[1] &= ~((1<<4) | (1<<5)); //M20,M21
- }
- if(X06_UP || M18 || M19)
- {
- if(dwTickCount >= cDelayTime7)
- {
- if(X006)
- cDelayTime7 = dwTickCount + (unsigned long)0;
- else
- cDelayTime7 = dwTickCount + (unsigned long)35;
- if((M18)) //给插销
- {
- CLRQ14;
- CLRQ17; //夹方块关
- if((Y10) && !X006)
- {
- CLRQ10; //给方块关
- CLRQ11; //夹插稍关
- }
- //送料在原点 在夹紧情况下无料 或夹张开 送料 !X15
- else if((X17) && ((!Y11 && !bGeiXiao) || Y11) && (!Y12) && !bGeiFang)
- { // !X14
- SETQ10;
- SETQ11;
-
- }
- else if(X06_UP || M18)//不满足给料
- {
- CLRQ10;
- //cMidleCoil[5] |= (1<<12); //不用记录
- user_datas[75] = OutPage;
- M15 = 0;//cMidleCoil[0] &= ~((1<<15)); //M15稍条件不满足条件
- if(((!Y11) && (bGeiXiao))) //已经有料不能再送
- { //X14
- user_datas[100] = ERX14; //
- if(X14)
- user_datas[101] = IN_DIS;
- else
- user_datas[101] = IN_EN;
- user_datas[75] = InPage;
- }
- else if(Y12) //送料电磁阀
- {
- user_datas[100] = ERY12;
- user_datas[101] = OUT_DIS;
- }
- else if(!X17) //送料原点
- {
- user_datas[100] = ERX17;
- user_datas[101] = IN_EN;
- user_datas[75] = InPage;
-
- }
-
- }
- }
- else //给方块
- {
- CLRQ10; //给插稍关
- CLRQ11; //夹插稍关
- if((Y017) && !X006)
- {
- CLRQ17; //给方块关
- CLRQ14; //夹方块关
- }
- //送料在原点 在夹紧情况下无料 或夹张开 送料 没稍(X14)
- else if((X021) && (((!Y14) && (!bGeiFang)) || Y14) && (!Y13) && !bGeiXiao)
- { //!X15
- SETQ14; //夹方块开
- SETQ17; //给方块开
-
- }
- else if(X06_UP || M19) //不满足给料
- {
- CLRQ17;
- //cMidleCoil[5] |= (1<<12); //不用记录
- user_datas[75] = OutPage;
- M15 = 0;//cMidleCoil[0] &= ~((1<<15));
- if(((!Y14) && (bGeiFang))) //已经有料不能再送
- {
- user_datas[100] = ERX15; //
- if(X15)
- user_datas[101] = IN_DIS;
- else
- user_datas[101] = IN_EN;
- user_datas[75] = InPage;
- }
- else if(Y13) //送方块电磁阀
- {
- user_datas[100] = ERY13;
- user_datas[101] = OUT_DIS;
- }
- else if(!X021) //送料原点
- {
- user_datas[100] = ERX11;
- user_datas[101] = IN_EN;
- user_datas[75] = InPage;
- }
- else //插稍这边有料
- {
- user_datas[100] = ERX14;
- user_datas[101] = IN_EN;
- user_datas[75] = InPage;
- }
- }
- }
- }
- M18 = 0;M19 = 0;//cMidleCoil[1] &= ~((1<<2) | (1<<3)); //M18,M19
- }
- //手动送料完成
-
- //手动给料
- if(Y10 && Y11 && X23_UP) //插到位后自动夹料
- {
- in_delay = dwTickCount + (unsigned long)50;
- }
- else if(X023 && Y11 && !X007 && (dwTickCount >= in_delay))
- {
- CLRQ11;
- }
- if(Y14 && Y017 && X24_UP) //插到位后自动夹料
- {
- in_delay = dwTickCount + (unsigned long)50;
- }
- else if(Y14 && X024 && !X007 && (dwTickCount >= in_delay))
- {
- CLRQ14;
- }
- //手动给料完成
- //手动夹料
- if(X007 || M16 || M17)
- {
-
- if(dwTickCount >= cDelayTime7)
- {
- if(X007)
- cDelayTime7 = dwTickCount + (unsigned long)0;
- else
- cDelayTime7 = dwTickCount + (unsigned long)35;
- if((M16)) //给插销
- {
- if(Y11 && !X007)
- CLRQ11; //夹插稍关
- else
- SETQ11; //夹插稍开
- }
- else// if(M17 || (cHMI_Test == 0)) //给方块
- {
- if(Y14 && !X007)
- CLRQ14; //夹方块关
- else
- SETQ14; //夹方块开
- }
- }
- M16 = 0;M17 = 0;//cMidleCoil[1] &= ~((1<<0) | (1<<1)); //M16,M17
- }
- }
- void FKCX_AutoStep(void)
- {
- unsigned long ch;
-
- switch(cStepMByte)
- {
- case 1: //从插销步开始工作
-
- //电机开始 压带到位 或半循环
- if((Y005 && X022) || (cHalfRun == 1)) //先压带
- {
- cStepMByte2 = 0;
- }
- else
- {
- cStepMByte2 = 1; //拖带起动
- cStopOver = 0;
- }
- //给销开始
- cStepMByte3 = 1;
- cGeiLiaoNum = 0;
- //转下一步
- cStepMByte = 2;
- bStopXiaCong = 0;
- if(bGeiXiao) //X14
- cStepMByte3 = 0;
- break;
- //等待给料,电机拖带
- case 2:
- FK_Auto_Con_XY();
- bStopXiao = 1;
- //没料
- JiaXiao_XY();
- //拖带和给料已完成
- if((cStepMByte2 == 0) && (cStepMByte3 == 0))
- {
- cStepMByte = 3;
- cStepMByte3 = 1; //送梢启动
- }
- break;
- //送插销
- case 3:
- SongXiao_XY();
- //送料完毕(销)
- if(cStepMByte3 == 0)
- {
- cStepMByte = 4;
- //半循环 单边
- if((cHalfRun != 1) && (user_datas[8] != 56)) //半
- {
- if((!bGeiFang)) //!X15
- cStepMByte4 = 1;
- else
- cStepMByte4 = 0; //已经有料
- cGeiLiaoNum = 0;
- }
- cErrorTime = dwTickCount + (unsigned long)3 * FKCX_ERRORTIME;
- if(user_datas[8] != 55)
- {
- SETQ06; //下冲
- SETQ07; //插稍垫片
- cDelayTime1= dwTickCount + (unsigned long)user_datas[2]*10;
- M14 = 1;//cMidleCoil[0] |= (1<<14); //M14
- }
- }
- break;
- //下冲动作
- case 4:
- if(Y06Flg)
- {
- if(dwTickCount >= cDelayTime1)
- {
- CLRQ06; //下冲
- bStopFang = 1;
- bStopXiao = 0;
- bStopXiaCong = 0;
-
- }
- }
- //下冲感应开关
- if(X13 || (user_datas[8] == 55)) //双开方式
- {
- bStopXiao = 0;
- bStopXiaCong = 0;
- bStopFang = 1;
- CLRQ06; //下冲
- }
- if(X13_DW || (user_datas[8] == 55))
- {
- M14 = 0;//cMidleCoil[0] &= ~(1<<14); //M14
- CLRQ07; //插销垫片
- if(cHalfRun == 1) //半循环
- {
- cStepMByte = 0;
- FKCX_bRunning = 0;
- cHalfRun = 0;
- CLRQ02; //运行指示
- }
- else if(user_datas[8] == 56)
- {
- cStepMByte = 8; //直接跳到结束
- }else
- cStepMByte = 5;
- }
- if(dwTickCount >= cErrorTime)
- {
- //cMidleCoil[5] |= (1<<11); //记录
- user_datas[75] = ActionPage;
- user_datas[100] = 16; //不冲检测不到复位感应
- M15 = 0;//cMidleCoil[0] &= ~(1<<15); //M15
- user_datas[101] = 0;
- // bStop = 1;
- CLRQ07; //插销垫片
- }
- //给方块开始
- JiaFang_XY();
- break;
- case 5:
- JiaFang_XY();
- if(cStepMByte4 == 0) //给方块已经完成
- {
- cStepMByte = 6;
- cStepMByte4 = 1; //送方块开始
- }
-
- break;
- case 6:
- SongFang_XY();
- //送料完毕(销)
- if(cStepMByte4 == 0)
- {
- cStepMByte = 7;
- SETQ06; //下冲
- SETQ04; //方块垫片
- cDelayTime1 = dwTickCount + (unsigned long)user_datas[2]*10;
- cErrorTime = dwTickCount + (unsigned long)FKCX_ERRORTIME;
- M14 = 1;//cMidleCoil[0] |= (1<<14); //M14
- }
- break;
- //下冲动作
- case 7:
- if(Y06Flg)
- {
- if(dwTickCount >= cDelayTime1)
- {
- CLRQ06; //下冲
- }
- }
- //下冲感应开关
- if(X13)
- {
- CLRQ06; //下冲
- bStopFang = 0;
- bStopXiaCong = 0;
- bStopFang = 0;
- M14 = 0;//cMidleCoil[0] &= ~(1<<14); //M14
- FKCX_CLRDR();
- }
- if(X13_DW)
- {
- CLRQ04; //方块垫片
- cStepMByte = 8;
- FKCX_CLRDR();
- cDelayTime1 = dwTickCount + (unsigned long)user_datas[13]*10 + 40;
- //计数器
- if(cHalfRun != 1) //半循环不用计数
- {
- FKCX_cCountTime = 6;
- AddToTal(76);//存生产总量
- SETQ01;
- }
- }
- if(dwTickCount >= cErrorTime)
- {
- //cMidleCoil[5] |= (1<<11); //记录
- user_datas[75] = ActionPage;
- user_datas[100] = 16; //不冲检测不到复位感应
- M15 = 0;//cMidleCoil[0] &= ~(1<<15); //M15
- user_datas[101] = 0;
- // bStop = 1;
- CLRQ04; //方块垫片
- }
- break;
- //一个周期完成 方块没插在拉链上带出来
- case 8:
- ch = (((unsigned long)user_datas[85])<< 16 ) + user_datas[84];
- //在先手动压带情况下
- if((cYaDai && (cHalfRun == 0))|| (cHalfRun == 1) || (cHalfRun == 2)|| ((FKCX_cTotal >= ch) && ch))
- {
- // SETQ05;
- CLRQ02; //运行指示灯
- cYaDai = 0;
- FKCX_bRunning = 0;
- cHalfRun = 0;
- cStepMByte = 0;
- }
- //在其它启动情况下,启动下一周期
- else if(dwTickCount >= cDelayTime1)
- {
- cHalfRun = 0;
- // SETQ02; //运行指示灯
- CLRQ05; //松压带
- cStepMByte = 9;
- }
- cYaDai = 0;
- break;
- case 9:
- if(!X022) //松带离开
- {
- CalProSP(78); //计算生产速度
- cStepMByte = 1; //开始
- }
- break;
- }
- }
- void FKCX_AutoAction(void)
- {
- static unsigned long c10msDelay = 0;
-
- user_datas[121] = cStepMByte;
- user_datas[122] = cStepMByte1;
- user_datas[123] = cStepMByte2;
- user_datas[124] = cStepMByte3;
- user_datas[125] = cStepMByte4;
- user_datas[126] = cHalfRun;
- user_datas[127] = FKCX_bRunning;
- // user_datas[128] = cReady;
- if(dwTickCount >= c10msDelay)
- {
- c10msDelay = dwTickCount+10;
- if(FKCX_cCountTime > 0)
- {
- FKCX_cCountTime--;
- if(FKCX_cCountTime == 0)
- CLRQ01; //计数器
- }
- }
-
- bGeiXiao = X14; //插稍光电
- bGeiFang = X15; //方块光电
- if(M15) //M15 故障确定
- {
- M15 = 0;//cMidleCoil[0] &= ~(1<<15); //M13,M15
- user_datas[100] = 0;
-
- user_datas[75] = 0;
- cDelayTime7 = dwTickCount + (unsigned long)1010;
- }
- if(M09) //清产量
- {
- if(dwTickCount >= cDelayTime8)
- {
- M09 = 0;//cMidleCoil[0] &= ~(1<<9);
- ClrcToTal(76);
- }
- }
- else
- {
- cDelayTime8 = dwTickCount + (unsigned long)120*10;
- }
-
-
- //下冲到位信号时关垫片
- if(X13_DW)
- {
- M16 = 0;//cMidleCoil[1] &= ~(1<<0); //M16
- }
- //手动模式
- if(FKCX_bRunning == 0)
- {
- //手条件 停止(常闭) 左右垫片
- if(((!Y02)) && (!X01 || Y04Flg || Y07Flg))
- {
- //手动钩针 钩针输出 手动下冲 下冲输出
- if( (!X03) && (!Y016) && (!X011) && (!Y06Flg) &&
- //手动给料 插稍给料 方块给料 手动夹料
- (!X006) && (!Y10) && (!Y017) && (!X007) &&
- //插稍夹料 方块夹料 手动送料 插稍送料 块送料
- (!Y11) && (!Y14) && (!X010) && (!Y12) && (!Y13) &&
- //方块选择 插稍送料原点 方块送料原点
- /*((X20) || (cHMI_Test != 0)) && */(X17) && (X021))
- {
- cReady = 1;
- }
- else
- cReady = 0;
-
- FKCX_ManualAciton();
- }
-
- }
- else if(!X01) //停止开关
- {
- M00 = 0;M01 = 0;//cMidleCoil[0] &= ~((1<<0) | (1<<1)); //M0 = 0,M1 = 0;
- M24 = 0;M25 = 0;//cMidleCoil[1] &= ~((1<<8) | (1<<9)); //M24 = 0,M25 = 0;
- FKCX_AutoStep();
- }
- //送料和埑块(定位)互锁保护
- if((Y04Flg) || (Y07Flg)) //埑块输出
- {
- CLRQ12;
- CLRQ13;
- }
- if((Y12) || (Y13)) //送料输出
- {
- CLRQ04;
- CLRQ07;
- }
- //3540 2550
- //手动下冲完成
- //自动
- //
-
- //停止 故障停机 按停止键
- if((FKCX_bStop) || M02 || ((X01_UP)) || X04)
- {
- cHalfRun = 0;
- FKCX_bRunning = 0;
-
- AxisEgmStop(X_AXIS);
- if(!Y05Flg)FKCX_SETDR(); //电机放松
-
- if(X04)
- {
- user_datas[75] = 6;
- user_datas[100] = 4+48; //给料出错显示
- M15 = 0;//cMidleCoil[0] &= ~(1<<15); //M15
- user_datas[101] = 2;
- }
-
- if((X01 || M02)) //停止按下
- {
- M16 = 0;M17 = 0;M18 = 0;M19 = 0;M20 = 0;M21 = 0;M22 = 0;
- M23 = 0;M24 = 0;M25 = 0;M26 = 0;M27 = 0;M28 = 0;M29 = 0;
- M30 = 0;M31 = 0;////cMidleCoil[1] = 0;
-
- if(!X04)
- {
- user_datas[100] = 0;
- user_datas[101] = 0;
- user_datas[75] = 0;
- }
- }
- cStopOver++;
- // cStopOver = 0;
- M02 = 0;//cMidleCoil[0] &= ~(1<<2);
- // 压带到位 完全停止 手动压带
- if((!X022) || ((cStopOver > 2) && (X01_UP)))
- {
- Y000 = 0;
- Y001 = 0;
- Y002 = 0;
- Y003 = 0;
- Y004 = 0;
- Y005 = 0;
- Y006 = 0;
- Y007 = 0;
- Y010 = 0;
- Y011 = 0;
- Y012 = 0;
- Y013 = 0;
- Y014 = 0;
- Y016 = 0;
- Y017 = 0;
- if(cStopOver == 0)
- cStepMByte = 25;
- else if(!X022)
- cStepMByte = 26;
- else
- cStepMByte = 27;
- cStepMByte1 = 0;
- cStepMByte2 = 0;
- cStepMByte3 = 0;
- cStepMByte4 = 0;
- cStopOver = 3;
- bStopXiao = 0;
- bStopFang = 0;
- bStopXiaCong = 0;
-
- }
- else //故障停止
- {
- // if(FKCX_bStop)
- // {
- // cStopOver = 0;
- // }
- if((FKCX_bStop == 0) || ((cStopOver == 2) && X01_UP))
- cYaDai = 0;
- Y000 = 0;
- Y001 = 0;
- Y002 = 0;
- Y003 = 0;
- Y004 = 0;
- Y006 = 0;
- Y007 = 0;
- Y010 = 0;
- Y011 = 0;
- Y012 = 0;
- Y013 = 0;
- Y014 = 0;
- Y016 = 0;
- Y017 = 0;
- cStepMByte = 98;
- cStepMByte1 = 0;
- cStepMByte2 = 0;
- cStepMByte3 = 0;
- cStepMByte4 = 0;
- }
- FKCX_bStop = 0;
- }
- }
- void FKCX_Action(void)
- {
-
- FKCX_AutoAction();
- if(Y05Flg)Y05 = 1;
- else Y05 = 0;
- if(Y04Flg)Y04 = 1;
- else Y04 = 0;
-
- if(Y07Flg)Y07 = 1;
- else Y07 = 0;
-
- if(Y06Flg)Y06 = 1;
- else Y06 = 0;
- }
- void FK_Auto_Con_XY()
- {
- switch(cStepMByte2)
- {
- case 0:
- CLRQ00;
- AxisEgmStop(X_AXIS);
- break;
- case 1: //离合器起动
- cStepMByte2 = 2;
- SETQ00; //离合器输出
- //if(user_datas[90] == 55)
- // cDelayTime3 = dwTickCount + (unsigned long)600;
- //步进启动
- FKCX_CLRDR();
- if(!X_DRV)MoveAction_Const_AccDec(X_AXIS,MXC_DIR_P,user_datas[11],user_datas[10],user_datas[9],5);
- cErrorTime = dwTickCount + (unsigned long)100 * user_datas[14];
- break;
- case 2: //过链接近下降沿
- if((X12_DW) || ((user_datas[90] == 55) && (dwTickCount >= cDelayTime3)))
- {
- cStepMByte2 = 3;
- cDelayTime3 = dwTickCount + (unsigned long)3;
-
- cErrorTime = dwTickCount + (unsigned long)FKCX_ERRORTIME * 2;
- cDelayTime4 = dwTickCount + (unsigned long)user_datas[7]; // 延时上勾针
- AxisChangeSpeed(X_AXIS,user_datas[12]);
- }
- else if((dwTickCount >= cErrorTime) && user_datas[14]) //拖带警告
- {
- //cMidleCoil[5] |= (1<<0); //记录
- user_datas[75] = ActionPage;
- user_datas[100] = 1; //检查过链接近开关或没有拉链
- M15 = 0;//cMidleCoil[0] &= ~(1<<15); //M15
- user_datas[101] = 0;
- bStop = 1;
- }
-
- break;
- case 3:
- //过链接近上升沿 //拖带到
- if(((X12_UP) || (user_datas[90] == 55)) && (dwTickCount >= cDelayTime3))
- {
- AxisChangeSpeed(X_AXIS,user_datas[12]);
- cStepMByte2 = 4;
- cDelayTime3 = dwTickCount + (unsigned long)user_datas[6];
- }
- else if(dwTickCount >= cErrorTime) //拖带警告
- {
- //cMidleCoil[5] |= (1<<0); //记录
- user_datas[75] = ActionPage;
- user_datas[100] = 1; //检查过链接近开关或没有拉链
- M15 = 0;//cMidleCoil[0] &= ~(1<<15); //M15
- user_datas[101] = 0;
- bStop = 1;
- }
- //要加延时上勾针
- if(dwTickCount >= cDelayTime4)
- SETQ16; //上勾针
- break;
- case 4:
- //要加延时上勾针
- if(dwTickCount >= cDelayTime4)
- SETQ16; //上勾针
- if((dwTickCount >= cDelayTime3) || X026) //到位或延时停时间到
- {
- cStepMByte2 = 5;
- CLRQ00; //离合停
- SETQ05; //压带
- cErrorTime = dwTickCount + (unsigned long)FKCX_ERRORTIME;
- AxisEgmStop(X_AXIS); //步进电机停
- }
- break;
- case 5: //压带到
- if(X022 != 0)
- {
- cStepMByte2 = 6; //拖带完成
- cDelayTime3 = dwTickCount + (unsigned long)55;
- }
- else if(dwTickCount >= cErrorTime) //压带警告
- {
- //cMidleCoil[5] |= (1<<1); //记录
- user_datas[75] = ActionPage;
- user_datas[100] = 2; //压带出错,没法压到位
- M15 = 0;//cMidleCoil[0] &= ~(1<<15); //M15
- user_datas[101] = 0;
- bStop = 1;
- }
- break;
- case 6:
- if(dwTickCount >= cDelayTime3)
- {
- CLRQ16; //下勾针
- cStepMByte2 = 0; //拖带完成
- // FKCX_SETDR(); //步进电机松
- }
- break;
- }
- }
- #endif
|