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

📄 text1.c

📁 基于CoDeSys的筑路铣刨机,由CoDeSys2.3开发,属于工程机械类自动控制程序.
💻 C
字号:
/****************************************************************************
 *
 * File:         project.c
 * Project:      name
 * Author(s):    author
 * Date:         22.01.2002
 *
 * Description:  description
 *
 *               Copyright (C) 2001 by your company
 *                         your address
 *
 *
 ****************************************************************************/

/* include files ************************************************************/
#include "conv.h"     /* Definition of hardware independend data types      */
#include "koptotos.h" /* API-Function declarations                          */

#include "vartab.h"   /* Variable Table definition                          */
                      /* include this file in every C-Source to access      */
                      /* the variable table of your project                 */
                      /* vartab.h is generated automatically                */

/* macro definitions ********************************************************/

/* type definitions *********************************************************/

/* local prototypes *********************************************************/

/* global constants *********************************************************/

/* global variables *********************************************************/

/* local constants  *********************************************************/

/* local variables  *********************************************************/

/* functions        *********************************************************/

       int  page,a1;
 long  int i=0,    j=0,    n1=0,   n2=0,  n3=0,  n4=0,  n5=0;
 long  int par0,  par1,  par2, par3, par4, par5, par6, par7, par8, par9;
 long  int par10, par11,par12,par13,par14,par15,par16,par17,par18,par19;
 long  int par20, par21,par22,par23,par24,par25,par26,par27,par28,par29;
 long  int par30, par31,par32,par33,par34,par35,par36,par37,par38,par39;
 long  int pass1,pass2,pass3,pass4,pass5,pass6;
/****************************************************************************
  KOP Initialisation
 ****************************************************************************/
int KOP_Init(void)
{
  /* Enter your device startup code here ... */
CANEnableRxId(0,0x184);
CANEnableRxId(0,0x284);
CANEnableRxId(0,0x384);
CANEnableRxId(0,0x484);
CANEnableRxId(0,0x185);
CANEnableRxId(0,0x285);
CANEnableRxId(0,0x385);
CANEnableRxId(0,0x485);

  /* The return value is the interval of KOP-Timer in steps of 10 ms        */
  /* Returning 0 disables the function KOP_Timer                            */
  return 10;
}

/****************************************************************************
  KOP cyclic part
 ****************************************************************************/
void KOP_Cycle(void)
{ uint8 D0,D1,D2,D3,D4,D5,D6,D7;
 //只显示
  SetVar(m_engine_speed,par0);    SetVar(m_engine_tem,par1);
  SetVar(m_engine_oil,par2);      SetVar(m_oil_press,par3);
  SetVar(piece_left,par4);        SetVar(piece_right,par5);
  SetVar(deep_set_left,par6);     SetVar(deep_set_right,par7);
  SetVar(deep_left,par6);         SetVar(deep_right,par7);
  SetVar(memory_left,par8);       SetVar(memory_right,par9);
  SetVar(state,par10);            SetVar(engine_speed,0);
  SetVar(voltage,par38);
  if  (par12==1) {  if (n2<40) {n2=n2++; }        else  {n2=0;}
                    if (n2<20) {SetVar(engine_tem,0);} else  {SetVar(engine_tem,1);}
                 } else {SetVar(engine_tem,0);  n2=0;}
  if  (par13==1) {  if (n3<40) {n3=n3++; }        else  {n3=0;}
                    if (n3<20) {SetVar(engine_oil,0);} else  {SetVar(engine_oil,1);}
                 } else {SetVar(engine_oil,0);  n3=0;}
  if  (par14==1) {  if (n4<40) {n4=n4++; }        else  {n4=0;}
                    if (n4<20) {SetVar(oil_press,0);} else  {SetVar(oil_press,1);}
                  } else {SetVar(oil_press,0);  n4=0;}
  if  (par15==1) {  if (n5<40) {n5=n5++; }        else  {n5=0;}
                    if (n5<20) {SetVar(alarm,0);} else  {SetVar(alarm,1);}
                 } else {SetVar(alarm,0);  n5=0;}
 // 端子状态
  SetVar(hang_up,par16);   SetVar(left_rise,par17);   SetVar(left_fall,par18);
  SetVar(right_rise,par19);SetVar(right_fall,par20); SetVar(left_right_rise,par21);
  SetVar(left_right_fall,par22);    SetVar(height_adjust_left,par23);
  SetVar(height_adjust_right,par24);SetVar(unload_valve,par25);
  SetVar(left_distaff, par32);  SetVar(right_distaff ,par33);
  SetVar(pwm_left_rise,par34);  SetVar(pwm_left_fall,par35);
  SetVar(pwm_right_rise,par36); SetVar(pwm_right_fall,par37);
//页面选择
 page=GetCurrentPageShown();
 switch (page)
 {
   case 0 :  //主界面

             a1=0    ;
   SetVar(password,0); SetVar(password1,0); SetVar(password2,0); SetVar(password3,0);
        if (IsKeyPressedNew(2)){  PrioPageOff(0);  PrioPageOn(1); }
        if (IsKeyPressedNew(3)){  PrioPageOff(0);  PrioPageOn(4); }
        if (IsKeyPressedNew(4)){  PrioPageOff(0);  PrioPageOn(5); }
        SendCANTelegram(0x488,8,0,0,0,0,0,0,0,0);
   break;
   case 1 :  //找平界面
        if (IsKeyPressedNew(2)){  PrioPageOff(1);  PrioPageOn(0);
            SendCANTelegram(0x288,8,0x64,0,0,0,0,0,0,0);}
        if (IsKeyPressedNew(3)){  PrioPageOff(1);  PrioPageOn(3); }
        if (IsKeyPressedNew(4)){  PrioPageOff(1);  PrioPageOn(2); }
            SendCANTelegram(0x488,8,0,0,0,0,0,0,0,0);
   break;
   case 2 :  //清零界面
        if (IsKeyDown(2)){SetVar(left_zero,1);  SendCANTelegram(0x388,8,0x64,0,0,0,0,0,0,0); }
          else  {SetVar(left_zero,0);           SendCANTelegram(0x388,8,0,0,0,0,0,0,0,0);}
        if (IsKeyDown(3)){SetVar(right_zero,1); SendCANTelegram(0x388,8,0,0,0x64,0,0,0,0,0); }
          else  {SetVar(right_zero,0);          SendCANTelegram(0x388,8,0,0,0,0,0,0,0,0);}
        if (IsKeyPressedNew(4)){  PrioPageOff(2);  PrioPageOn(1); }
   break;
   case 3 :  //自动找平界面
        if (IsKeyPressedNew(2)){  SendCANTelegram(0x288,8,0,0,0x64,0,0,0,0,0);  }
        if (IsKeyPressedNew(3)){   }
        if (IsKeyPressedNew(4)){  PrioPageOff(3);  PrioPageOn(0); }
          //参数修改
             a1=a1+1;
            if (a1<20)
            { SetVar(left_deep_set,par6);
              SetVar(right_deep_set,par7);
            }
               if (a1>25)
            { SendCANTelegram(0x488,8,0,0,0,0,0,0,11,11);
              pass1=GetVar(left_deep_set);
              pass2=GetVar(right_deep_set);
            D0=pass1%256;D1=pass1/256;
            D2=pass2%256;D3=pass2/256;
           SendCANTelegram(0x188,8,D0,D1,D2,D3,D4,D5,D6,D7);
           a1=45; }
   break;
   case 4 :  //参数显示界面
        if (IsKeyPressedNew(2)){   }
        if (IsKeyPressedNew(3)){   }
        if (IsKeyPressedNew(4)){  PrioPageOff(4);  PrioPageOn(0); }
   break;
   case 5 :  //密码界面
        if (IsKeyPressedNew(2)){  PrioPageOff(5);  PrioPageOn(7); }
        if (IsKeyPressedNew(3)&& GetVar(password)==1 && GetVar(password1)==2&& GetVar(password2)==3&& GetVar(password3)==4)  //密码设定
           {PrioPageOff(5); PrioPageOn(9); }
        if (IsKeyPressedNew(4)){  PrioPageOff(5);  PrioPageOn(0); }
   break;
   case 6 :  //参数标定界面

   break;
      case 7 :  //密码跳转界面  输入端子状态
        SetVar(password,0);SetVar(password1,0);   SetVar(password2,0);   SetVar(password3,0);
        if (IsKeyPressedNew(4)){  PrioPageOff(7);  PrioPageOn(8); }
   break;
   case 8 :  //高级界面 输出端子状态
        if (IsKeyPressedNew(3)){  PrioPageOff(8);  PrioPageOn(7); }
        if (IsKeyPressedNew(4)){  PrioPageOff(8);  PrioPageOn(0); }
   break;
    case 9 :  //调试界面
        if (IsKeyPressedNew(2)){  PrioPageOff(9);  PrioPageOn(10); }
        if (IsKeyPressedNew(3)){  PrioPageOff(9);  PrioPageOn(11); }
        if (IsKeyPressedNew(4)){  PrioPageOff(9);  PrioPageOn(0); }
   break;
   case 10 :  //转速锁界面
         SendCANTelegram(0x488,8,0,0,0,0,0,0,22,22);
        if (IsKeyPressedNew(2)){ SendCANTelegram(0x189,8,0x64,0,0,0,0,0,0,0);  }
        if (IsKeyPressedNew(3)){ SendCANTelegram(0x189,8,0x96,0,0,0,0,0,0,0);  }
        if (IsKeyPressedNew(4)){ PrioPageOff(10);  PrioPageOn(0); }
   break;
   case 11 :  //参数标定界面
        if (IsKeyPressedNew(2)){   }
        if (IsKeyPressedNew(3)){   }
        if (IsKeyPressedNew(4)){  PrioPageOff(11);  PrioPageOn(0); }
   break;
 }
  /* Enter your cyclic code here */

}

/****************************************************************************
  KOP timer process
 ****************************************************************************/
void KOP_Timer(void)
{  if (j<50)
  {j=j++;}
  else
  {j=100;}
if (j<5)
  {PrioPageOff(0);PrioPageOn(15);}
if (j==20)
  {PrioPageOff(15);PrioPageOn(0);}

  /* Enter your time critical code here */
  /* Be aware that the execution time must not exceed the timer interval    */

}

/****************************************************************************
  KOP CAN Interrupt
 ****************************************************************************/
void KOP_CAN_Event(uint32 RxId, int len, uint8 D0, uint8 D1, uint8 D2, uint8 D3,
                                         uint8 D4, uint8 D5, uint8 D6, uint8 D7)
{
 long int  temp, temp0,temp1,temp2,temp3;
 if (RxId==0x184)
{temp=D1;
par0=D0+temp*256;
temp=D3;
par1=D2+temp*256;
temp=D5;
par2=D4+temp*256;
temp=D7;
par3=D6+temp*256;
}
if (RxId==0x284)
{  temp=D1;
par4=D0+temp*256;
temp=D3;
par5=D2+temp*256;
temp=D5;
par6=D4+temp*256;
temp=D7;
par7=D6+temp*256;
}
if (RxId==0x384)
{ temp=D1;
par8=D0+temp*256;
temp=D3;
par9=D2+temp*256;
  temp0=D4;
par10=temp0>>0&00000001;
par11=temp0>>1&001;
par12=temp0>>2&001;
par13=temp0>>3&001;
par14=temp0>>4&001;
par15=temp0>>5&001;
par16=temp0>>6&001;
par17=temp0>>7&001;
  temp1=D5;
par18=temp1>>0&001;
par19=temp1>>1&001;
par20=temp1>>2&001;
par21=temp1>>3&001;
par22=temp1>>4&001;
par23=temp1>>5&001;
par24=temp1>>6&001;
par25=temp1>>7&001;
}
if (RxId==0x484)
{temp=D1;
par32=D0+temp*256;
temp=D3;
par33=D2+temp*256;
temp=D5;
par34=D4+temp*256;
temp=D7;
par35=D6+temp*256;
}
if (RxId==0x185)
{
temp=D1;
par36 =D0+temp*256;
temp=D3;
par37 =D2+temp*256;
temp=D5;
par38 =D4+temp*256;
}
  /* Enter fast direct reactions on a CAN message here */
  /* Be aware that code programmed here does not lock up the system */

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -