⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 md142as.c

📁 64输入32输出单片机程序
💻 C
📖 第 1 页 / 共 2 页
字号:
//-------------------------------------------------------------------------
//	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 + -