📄 md142as.c
字号:
//-------------------------------------------------------------------------
// Filename : Md142AS.C
// Language : C for AT89S8252
// Revision : 1.0
// Initial Date : 13/03/2003
// Last Modify :
// System clock : 24.00MHZ
// Description : ARMATURE EPOXY COATING
//-------------------------------------------------------------------------
#include <reg52.h>
#include "plc64i32.h"
#include "serial.h"
//define input signal
enum {LOAD_VERTUP=1,LOAD_VERTDN,LOAD_HORNFD,LOAD_HORNBD,INDUCTION1FD,INDUCTION1BD,
ARM1UP=7,ARM1DN,ARM2UP,ARM2DN,ARM3UP,ARM3DN,AIR_MAGNET1UP,ARMAT_CHECK=14,
AIR_MAGNET2UP=15,ARMAT_FULL,AIR_CHUCKUP,AIR_CHUCKDN,TRAN_HORNFD,TRAN_HORNBD,
SHAFT_HOLDFD=21,SHAFT_HOLDBD,JIG_EJECTFD,JIG_EJECTBD,JIG_REMOVEFD,JIG_REMOVEBD,
COMM_LOADFD=31,COMM_LOADBD,COMM_INSERTFD,COMM_INSERTBD,INDUCTION2FD,INDUCTION2BD,
UNLOADUP=37,UNLOADDN,HEAT1=41,COOLANT1,HEAT2,COOLANT2,STARTL,STARTR=46};
//-----------------------------------------
//define output signal
enum {LOAD_VERT=1,LOAD_HORN10,LOAD_HORN11,INDUCTION1,ARM1=6,ARM2,ARM3,AIR_MAGNET1=9,
MAGFORCE1=10,AIR_MAGNET2,MAGFORCE2,AIR_CHUCK,TRAN_HORN10=15,TRAN_HORN11,
SHAFT_HOLD=17,SPRAY_L,SPRAY_R=20,JIG_EJECT,JIG_REMOVE,COMM_LOAD10,COMM_LOAD11,
COMM_INSERT=25,INDUCTION2=27,UNLOAD=29,VIBRATE,ROTATE,AIR=32};
//--------------------------------------------------------------------------------
//define manual operate valves' value
enum {VALVE1=1,VALVE2,VALVE3,VALVE4,VALVE5,VALVE6,VALVE7,VALVE8,VALVE9,VALVE10,
VALVE11,VALVE12,VALVE13,VALVE14,VALVE15,VALVE16,VALVE17,VALVE18,VALVE19};
//----------------------------------------------------------
void _init_machine();
void _step_by_step();
void _manual_operate();
void _auto_operate();
void _setup();
unsigned char xdata datalist[8];
char proc=0;
unsigned heat1_time,heat1_time_set;
unsigned heat2_time,heat2_time_set;
unsigned spray_time,spray_time_set;
bit spray_end,heat1_end,heat2_end;
//---------------------------------------------------
void main()
{ char i;
_init_system ();
ReceStream.address = ID_Plc64I;
// setup serial port control hardware (19200 BAUD @24MHZ)
_init_serial (BAUD19200);
_set_delay (100);
for (i=0;i<10;i++)
TranStream.datablk[i] = _read_eepbyte(&datalist[i]);
_trf_msge (ID_Panel,Datatrans,0x07);
_set_delay (50);
_init_machine();
_outp_bit(LOAD_HORN10,OFF);
_outp_bit(LOAD_HORN11,ON);
_outp_bit(TRAN_HORN10,OFF);
_outp_bit(TRAN_HORN11,ON);
_set_delay (100);
while(TRUE)
{
if(rece_com==Auto)
_auto_operate();
if(rece_com==Manual)
_manual_operate();
if(rece_com==Dataset)
_setup();
}
}
//----------------------------------------------------------------------
void _auto_operate()
{
unsigned cycle;
char heat1_on,heat2_on,sequ=1;
TranStream.datablk[2]=_read_eepbyte(&datalist[2]);
TranStream.datablk[3]=_read_eepbyte(&datalist[3]);
TranStream.datablk[4]=_read_eepbyte(&datalist[4]);
_trf_msge (ID_Panel,Datatrans,0x05);
_set_delay(10);
if(TranStream.datablk[2]<11)
heat2_time_set=TranStream.datablk[2]*100;
else
heat2_time_set=TranStream.datablk[2]*10;
if(TranStream.datablk[3]<11)
heat1_time_set=TranStream.datablk[3]*100;
else
heat1_time_set=TranStream.datablk[3]*10;
if(TranStream.datablk[4]<11)
spray_time_set=TranStream.datablk[4]*100;
else
spray_time_set=TranStream.datablk[4]*10;
while( rece_com!=Exit )
{
if(rece_com==Start)
{rece_com=OFF;
while( rece_com!=Exit )
{
switch(proc)
{
case 0:
if(_inp_bit(INDUCTION1BD)&&_inp_bit(INDUCTION2BD)&&
_inp_bit(TRAN_HORNBD))
{
_outp_bit(LOAD_VERT,ON);
_outp_bit(AIR_MAGNET1,ON);
_outp_bit(ARM1,ON);
proc++;
}
break;
case 1:
if(_inp_bit(ARM1DN))
{
_set_delay(15);
_outp_bit(ARM1,OFF);
_outp_bit(UNLOAD,OFF);
/* _outp_bit(AIR_CHUCK,ON);
_set_delay(15);
_outp_bit(AIR_CHUCK,OFF); //
_set_delay(15); //
_outp_bit(AIR_CHUCK,ON); //
_set_delay(15); //
_outp_bit(ARM3,OFF);
while(!_inp_bit(ARM3UP));
_set_delay(20);
_outp_bit(COMM_INSERT,ON);
_set_delay(60);
_outp_bit(COMM_INSERT,OFF); */
proc++;
}
break;
case 2:
if(_inp_bit(LOAD_VERTUP)&&_inp_bit(INDUCTION1BD)&&_inp_bit(COMM_INSERTFD)&&_inp_bit(JIG_EJECTBD)&&
_inp_bit(JIG_REMOVEBD)&&_inp_bit(ARM1UP)&&_inp_bit(ARM2UP)&&_inp_bit(ARM3UP))
{
_outp_bit(LOAD_HORN11,OFF);
_outp_bit(LOAD_HORN10,ON);
_outp_bit(TRAN_HORN11,OFF);
_outp_bit(TRAN_HORN10,ON);
/* if(_inp_bit(COMM_LOADFD))
{
_outp_bit(COMM_LOAD10,OFF);
_outp_bit(COMM_LOAD11,ON);
}
if(_inp_bit(COMM_LOADBD))
{
_outp_bit(COMM_LOAD11,OFF);
_outp_bit(COMM_LOAD10,ON);
} */
proc++;
}
break;
case 3:
if(_inp_bit(LOAD_HORNFD)&&_inp_bit(TRAN_HORNFD))
{
if(_inp_bit(ARMAT_CHECK))
{
heat1_on=TRUE;
cycle=0; //
}
else
{
heat1_on=FALSE;
cycle++; //
}
_outp_bit(LOAD_VERT,OFF);
_outp_bit(ARM1,ON);
_outp_bit(ARM2,ON);
if(_inp_bit(INDUCTION2BD)&& !_inp_bit(ARMAT_FULL))
_outp_bit(ARM3,ON);
else
if(_inp_bit(ARMAT_FULL))
{
while(_inp_bit(ARMAT_FULL));
rece_com=0;
while( rece_com!=Start );
_outp_bit(ARM3,ON);
rece_com=0;
}
proc++;
}
break;
case 4:
if(_inp_bit(ARM1DN))
{
_set_delay(5);
_outp_bit(AIR_MAGNET1,OFF);
_outp_bit(ARM1,OFF);
_outp_bit(SHAFT_HOLD,ON);
_outp_bit(ROTATE,ON);
_set_delay(10);
_outp_bit(VIBRATE,ON);
_outp_bit(SPRAY_L,ON); //START TO SPRAY
_outp_bit(SPRAY_R,ON);
spray_time=spray_time_set+tick_clock;
proc++;
}
break;
case 5:
if(_inp_bit(LOAD_VERTDN)&&_inp_bit(ARM2DN)&&_inp_bit(ARM3DN))
{
_outp_bit(LOAD_HORN10,OFF);
_outp_bit(LOAD_HORN11,ON);
_outp_bit(AIR_MAGNET2,OFF);
if(_inp_bit(ARM3DN)&&_inp_bit(TRAN_HORNFD))
_outp_bit(AIR_CHUCK,OFF);
proc++;
}
break;
case 6:
if(_inp_bit(AIR_MAGNET2UP)&&_inp_bit(AIR_CHUCKUP)&&_inp_bit(UNLOADDN))
{
if(_inp_bit(ARMAT_FULL)) //IF HAS ARMATURE
heat2_on=TRUE;
else
heat2_on=FALSE;
_outp_bit(ARM2,OFF);
_outp_bit(ARM3,OFF);
_outp_bit(INDUCTION1,ON);
_outp_bit(INDUCTION2,ON);
while(!_inp_bit(INDUCTION1FD)||!_inp_bit(INDUCTION2FD));
// if(heat1_on==FALSE) // no armature will stop heating
if(cycle>=5) // heat five cycles if no arm.
_outp_bit(MAGFORCE1,OFF);
else
_outp_bit(MAGFORCE1,ON); //heating
if(heat2_on==FALSE) // no armature will stop heating
_outp_bit(MAGFORCE2,OFF);
else
_outp_bit(MAGFORCE2,ON); //heating
heat1_time=heat1_time_set+tick_clock;
heat2_time=heat2_time_set+tick_clock;
proc++;
}
break;
case 7:
if(_inp_bit(LOAD_HORNBD)&&
_inp_bit(ARM1UP)&&_inp_bit(ARM2UP)&&_inp_bit(ARM3UP))
{
_outp_bit(TRAN_HORN10,OFF);
_outp_bit(TRAN_HORN11,ON);
proc++;
}
break;
case 8:
if(_inp_bit(TRAN_HORNBD))
{
_outp_bit(ARM3,ON);
proc++;
}
break;
case 9:
if(_inp_bit(TRAN_HORNBD)&&_inp_bit(ARM3DN))
{
_set_delay(10);
_outp_bit(AIR_CHUCK,ON);
_set_delay(15); //
_outp_bit(AIR_CHUCK,OFF);
_set_delay(15);
_outp_bit(AIR_CHUCK,ON);
proc++;
}
break;
case 10:
_set_delay(30);
_outp_bit(ARM3,OFF);
proc++;
break;
case 11:
if(_inp_bit(ARM3UP))
{
/* _set_delay(10);
_outp_bit(COMM_INSERT,ON);
_set_delay(60);
_outp_bit(COMM_INSERT,OFF); */
proc++;
}
break;
case 12:
/* if(_inp_bit(COMM_INSERTFD))
{
_set_delay(20);
if(_inp_bit(COMM_LOADFD))
{
_outp_bit(COMM_LOAD10,OFF);
_outp_bit(COMM_LOAD11,ON);
}
if(_inp_bit(COMM_LOADBD))
{
_outp_bit(COMM_LOAD11,OFF);
_outp_bit(COMM_LOAD10,ON);
} */
proc++;
// }
break;
case 13:
while(spray_end!=1);
_outp_bit(VIBRATE,OFF);
spray_end=0;
proc++;
break;
case 14:
_set_delay(50);
_outp_bit(SPRAY_L,OFF);
_outp_bit(SPRAY_R,OFF);
_outp_bit(ROTATE,OFF);
proc++;
break;
case 15:
if(_inp_bit(TRAN_HORNBD)&&_inp_bit(AIR_MAGNET2UP))
{
_outp_bit(AIR_MAGNET2,ON);
_outp_bit(ARM2,ON);
proc++;
}
break;
case 16:
if(_inp_bit(TRAN_HORNBD)&&_inp_bit(ARM2DN))
{
_outp_bit(SHAFT_HOLD,OFF);
_outp_bit(JIG_REMOVE,ON);
proc++;
}
break;
case 17:
if(_inp_bit(JIG_REMOVEFD))
{
_set_delay(10);
_outp_bit(ARM2,OFF);
proc++;
}
break;
case 18:
if(_inp_bit(ARM2UP))
{
_set_delay(10);
_outp_bit(JIG_EJECT,ON);
proc++;
}
break;
case 19:
if(_inp_bit(JIG_EJECTFD))
{
_set_delay(25);
_outp_bit(JIG_REMOVE,OFF);
_set_delay(50);
proc++;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -