📄 plc_other.c
字号:
LPC_GPIO1->FIOSET=O2;
IO_CMD=0;}
}
}
}
#define X_DIY 10 //滤波时间
uint8 X_FilterDiy[40];
unsigned long long X_FilterData;
void PLC_X_Filter(void)
{if((LPC_GPIO2->FIOPIN&X0)!=X0){if(X_FilterDiy[0]<X_DIY){X_FilterDiy[0]++;}else{X_FilterData|=0x0000000001;}}//X00
else{X_FilterDiy[0]=0;X_FilterData&=0xFFFFFFFFFE;}
if((LPC_GPIO2->FIOPIN&X1)!=X1){if(X_FilterDiy[1]<X_DIY){X_FilterDiy[1]++;}else{X_FilterData|=0x0000000002;}}//X01
else{X_FilterDiy[1]=0;X_FilterData&=0xFFFFFFFFFD;}
if((LPC_GPIO2->FIOPIN&X2)!=X2){if(X_FilterDiy[2]<X_DIY){X_FilterDiy[2]++;}else{X_FilterData|=0x0000000004;}}//X02
else{X_FilterDiy[2]=0;X_FilterData&=0xFFFFFFFFFB;}
if((LPC_GPIO2->FIOPIN&X3)!=X3){if(X_FilterDiy[3]<X_DIY){X_FilterDiy[3]++;}else{X_FilterData|=0x0000000008;}}//X03
else{X_FilterDiy[3]=0;X_FilterData&=0xFFFFFFFF7;}
if((LPC_GPIO0->FIOPIN&X4)!=X4){if(X_FilterDiy[4]<X_DIY){X_FilterDiy[4]++;}else{X_FilterData|=0x0000000010;}}//X04
else{X_FilterDiy[4]=0;X_FilterData&=0xFFFFFFFFEF;}
if((LPC_GPIO0->FIOPIN&X5)!=X5){if(X_FilterDiy[5]<X_DIY){X_FilterDiy[5]++;}else{X_FilterData|=0x0000000020;}}//X05
else{X_FilterDiy[5]=0;X_FilterData&=0xFFFFFFFFDF;}
if((LPC_GPIO0->FIOPIN&X6)!=X6){if(X_FilterDiy[6]<X_DIY){X_FilterDiy[6]++;}else{X_FilterData|=0x0000000040;}}//X06
else{X_FilterDiy[6]=0;X_FilterData&=0xFFFFFFFFBF;}
if((LPC_GPIO0->FIOPIN&X7)!=X7){if(X_FilterDiy[7]<X_DIY){X_FilterDiy[7]++;}else{X_FilterData|=0x0000000080;}}//X07
else{X_FilterDiy[7]=0;X_FilterData&=0xFFFFFFFF7F;}
if(MyD_I_DATA&0x00000001){if(X_FilterDiy[0x08]<X_DIY){X_FilterDiy[0x08]++;}else{X_FilterData|=0x0000000100;}}//X10
else{X_FilterDiy[0x08]=0;X_FilterData&=0xFFFFFFFEFF;}
if(MyD_I_DATA&0x00000002){if(X_FilterDiy[0x09]<X_DIY){X_FilterDiy[0x09]++;}else{X_FilterData|=0x0000000200;}}//X11
else{X_FilterDiy[0x09]=0;X_FilterData&=0xFFFFFFFDFF;}
if(MyD_I_DATA&0x00000004){if(X_FilterDiy[0x0A]<X_DIY){X_FilterDiy[0x0A]++;}else{X_FilterData|=0x0000000400;}}//X12
else{X_FilterDiy[0x0A]=0;X_FilterData&=0xFFFFFFFBFF;}
if(MyD_I_DATA&0x00000008){if(X_FilterDiy[0x0B]<X_DIY){X_FilterDiy[0x0B]++;}else{X_FilterData|=0x0000000800;}}//X13
else{X_FilterDiy[0x0B]=0;X_FilterData&=0xFFFFFFF7FF;}
if(MyD_I_DATA&0x00000010){if(X_FilterDiy[0x0C]<X_DIY){X_FilterDiy[0x0C]++;}else{X_FilterData|=0x0000001000;}}//X14
else{X_FilterDiy[0x0C]=0;X_FilterData&=0xFFFFFFEFFF;}
if(MyD_I_DATA&0x00000020){if(X_FilterDiy[0x0D]<X_DIY){X_FilterDiy[0x0D]++;}else{X_FilterData|=0x0000002000;}}//X15
else{X_FilterDiy[0x0D]=0;X_FilterData&=0xFFFFFFDFFF;}
if(MyD_I_DATA&0x00000040){if(X_FilterDiy[0x0E]<X_DIY){X_FilterDiy[0x0E]++;}else{X_FilterData|=0x0000004000;}}//X16
else{X_FilterDiy[0x0E]=0;X_FilterData&=0xFFFFFFBFFF;}
if(MyD_I_DATA&0x00000080){if(X_FilterDiy[0x0F]<X_DIY){X_FilterDiy[0x0F]++;}else{X_FilterData|=0x0000008000;}}//X17
else{X_FilterDiy[0x0F]=0;X_FilterData&=0xFFFFFF7FFF;}
if(MyD_I_DATA&0x00000100){if(X_FilterDiy[0x10]<X_DIY){X_FilterDiy[0x10]++;}else{X_FilterData|=0x0000010000;}}//X20
else{X_FilterDiy[0x10]=0;X_FilterData&=0xFFFFFEFFFF;}
if(MyD_I_DATA&0x00000200){if(X_FilterDiy[0x11]<X_DIY){X_FilterDiy[0x11]++;}else{X_FilterData|=0x0000020000;}}//X21
else{X_FilterDiy[0x11]=0;X_FilterData&=0xFFFFFDFFFF;}
if(MyD_I_DATA&0x00000400){if(X_FilterDiy[0x12]<X_DIY){X_FilterDiy[0x12]++;}else{X_FilterData|=0x0000040000;}}//X22
else{X_FilterDiy[0x12]=0;X_FilterData&=0xFFFFFBFFFF;}
if(MyD_I_DATA&0x00000800){if(X_FilterDiy[0x13]<X_DIY){X_FilterDiy[0x13]++;}else{X_FilterData|=0x0000080000;}}//X23
else{X_FilterDiy[0x13]=0;X_FilterData&=0xFFFFF7FFFF;}
if(MyD_I_DATA&0x00001000){if(X_FilterDiy[0x14]<X_DIY){X_FilterDiy[0x14]++;}else{X_FilterData|=0x0000100000;}}//X24
else{X_FilterDiy[0x14]=0;X_FilterData&=0xFFFFEFFFFF;}
if(MyD_I_DATA&0x00002000){if(X_FilterDiy[0x15]<X_DIY){X_FilterDiy[0x15]++;}else{X_FilterData|=0x0000200000;}}//X25
else{X_FilterDiy[0x15]=0;X_FilterData&=0xFFFFDFFFFF;}
if(MyD_I_DATA&0x00004000){if(X_FilterDiy[0x16]<X_DIY){X_FilterDiy[0x16]++;}else{X_FilterData|=0x0000400000;}}//X26
else{X_FilterDiy[0x16]=0;X_FilterData&=0xFFFFBFFFFF;}
if(MyD_I_DATA&0x00008000){if(X_FilterDiy[0x17]<X_DIY){X_FilterDiy[0x17]++;}else{X_FilterData|=0x0000800000;}}//X27
else{X_FilterDiy[0x17]=0;X_FilterData&=0xFFFF7FFFFF;}
if(MyD_I_DATA&0x00010000){if(X_FilterDiy[0x18]<X_DIY){X_FilterDiy[0x18]++;}else{X_FilterData|=0x0001000000;}}//X30
else{X_FilterDiy[0x18]=0;X_FilterData&=0xFFFEFFFFFF;}
if(MyD_I_DATA&0x00020000){if(X_FilterDiy[0x19]<X_DIY){X_FilterDiy[0x19]++;}else{X_FilterData|=0x0002000000;}}//X31
else{X_FilterDiy[0x19]=0;X_FilterData&=0xFFFDFFFFFF;}
if(MyD_I_DATA&0x00040000){if(X_FilterDiy[0x1A]<X_DIY){X_FilterDiy[0x1A]++;}else{X_FilterData|=0x0004000000;}}//X32
else{X_FilterDiy[0x1A]=0;X_FilterData&=0xFFFBFFFFFF;}
if(MyD_I_DATA&0x00080000){if(X_FilterDiy[0x1B]<X_DIY){X_FilterDiy[0x1B]++;}else{X_FilterData|=0x0008000000;}}//X33
else{X_FilterDiy[0x1B]=0;X_FilterData&=0xFFF7FFFFFF;}
if(MyD_I_DATA&0x00100000){if(X_FilterDiy[0x1C]<X_DIY){X_FilterDiy[0x1C]++;}else{X_FilterData|=0x0010000000;}}//X34
else{X_FilterDiy[0x1C]=0;X_FilterData&=0xFFEFFFFFFF;}
if(MyD_I_DATA&0x00200000){if(X_FilterDiy[0x1D]<X_DIY){X_FilterDiy[0x1D]++;}else{X_FilterData|=0x0020000000;}}//X35
else{X_FilterDiy[0x1D]=0;X_FilterData&=0xFFDFFFFFFF;}
if(MyD_I_DATA&0x00400000){if(X_FilterDiy[0x1E]<X_DIY){X_FilterDiy[0x1E]++;}else{X_FilterData|=0x0040000000;}}//X36
else{X_FilterDiy[0x1E]=0;X_FilterData&=0xFFBFFFFFFF;}
if(MyD_I_DATA&0x00800000){if(X_FilterDiy[0x1F]<X_DIY){X_FilterDiy[0x1F]++;}else{X_FilterData|=0x0080000000;}}//X37
else{X_FilterDiy[0x1F]=0;X_FilterData&=0xFF7FFFFFFF;}
if(MyD_I_DATA&0x01000000){if(X_FilterDiy[0x20]<X_DIY){X_FilterDiy[0x20]++;}else{X_FilterData|=0x0100000000;}}//X40
else{X_FilterDiy[0x20]=0;X_FilterData&=0xFEFFFFFFFF;}
if(MyD_I_DATA&0x02000000){if(X_FilterDiy[0x21]<X_DIY){X_FilterDiy[0x21]++;}else{X_FilterData|=0x0200000000;}}//X41
else{X_FilterDiy[0x21]=0;X_FilterData&=0xFDFFFFFFFF;}
if(MyD_I_DATA&0x04000000){if(X_FilterDiy[0x22]<X_DIY){X_FilterDiy[0x22]++;}else{X_FilterData|=0x0400000000;}}//X42
else{X_FilterDiy[0x22]=0;X_FilterData&=0xFBFFFFFFFF;}
if(MyD_I_DATA&0x08000000){if(X_FilterDiy[0x23]<X_DIY){X_FilterDiy[0x23]++;}else{X_FilterData|=0x0800000000;}}//X43
else{X_FilterDiy[0x23]=0;X_FilterData&=0xF7FFFFFFFF;}
if(MyD_I_DATA&0x10000000){if(X_FilterDiy[0x24]<X_DIY){X_FilterDiy[0x24]++;}else{X_FilterData|=0x1000000000;}}//X44
else{X_FilterDiy[0x24]=0;X_FilterData&=0xEFFFFFFFFF;}
if(MyD_I_DATA&0x20000000){if(X_FilterDiy[0x25]<X_DIY){X_FilterDiy[0x25]++;}else{X_FilterData|=0x2000000000;}}//X45
else{X_FilterDiy[0x25]=0;X_FilterData&=0xDFFFFFFFFF;}
if(MyD_I_DATA&0x40000000){if(X_FilterDiy[0x26]<X_DIY){X_FilterDiy[0x26]++;}else{X_FilterData|=0x4000000000;}}//X46
else{X_FilterDiy[0x26]=0;X_FilterData&=0xBFFFFFFFFF;}
if(MyD_I_DATA&0x80000000){if(X_FilterDiy[0x27]<X_DIY){X_FilterDiy[0x27]++;}else{X_FilterData|=0x8000000000;}}//X47
else{X_FilterDiy[0x27]=0;X_FilterData&=0x7FFFFFFFFF;}
}
void PLC_IO_BREAK(void)
{PLC_RAM32(PLC_R_START_ADD+0x0080)=X_FilterData;
PLC_RAM8 (PLC_R_START_ADD+0x0084)=X_FilterData/0x100000000;
if(Y0_H_OE==0)
{if(PLC_BIT_TEST(0x0500)){LPC_GPIO2->FIOCLR =Y0;}
else{LPC_GPIO2->FIOSET =Y0;}}
else {if((LPC_GPIO2->FIOPIN&Y0)!=Y0){PLC_BIT_ON(0x0500);}
else{PLC_BIT_OFF(0x0500);}
}
if(Y1_H_OE==0)
{if(PLC_BIT_TEST(0x0501)){LPC_GPIO2->FIOCLR =Y1;}
else{LPC_GPIO2->FIOSET =Y1;}}
else {if((LPC_GPIO2->FIOPIN&Y1)!=Y1){PLC_BIT_ON(0x0501);}
else{PLC_BIT_OFF(0x0501);}
}
if(PLC_BIT_TEST(0x0502)){LPC_GPIO2->FIOCLR =Y2;}
else{LPC_GPIO2->FIOSET =Y2;}
if(PLC_BIT_TEST(0x0503)){LPC_GPIO2->FIOCLR =Y3;}
else{LPC_GPIO2->FIOSET =Y3;}
if(PLC_BIT_TEST(0x0504)){LPC_GPIO2->FIOCLR =Y4;}
else{LPC_GPIO2->FIOSET =Y4;}
if(PLC_BIT_TEST(0x0505)){LPC_GPIO2->FIOCLR =Y5;}
else{LPC_GPIO2->FIOSET =Y5;}
if(PLC_BIT_TEST(0x0506)){LPC_GPIO2->FIOCLR =Y6;}
else{LPC_GPIO2->FIOSET =Y6;}
if(PLC_BIT_TEST(0x0507)){LPC_GPIO2->FIOCLR =Y7;}
else{LPC_GPIO2->FIOSET =Y7;}
MyD_O_DATA=PLC_RAM8(PLC_R_START_ADD+0x00A1)+(PLC_RAM8(PLC_R_START_ADD+0x00A2)<<8)+(PLC_RAM8(PLC_R_START_ADD+0x00A3)<<16)+(PLC_RAM8(PLC_R_START_ADD+0x00A4)<<24);
}
void PLC_AllInit(void)
{PLC_Init();
PLC_PowerUpReset();
UARTInit(0, 9600);
LPC_TIM0->MR0 = SystemFrequency/4/999;
LPC_TIM0->MCR = 3;
NVIC_EnableIRQ(TIMER0_IRQn);
LPC_TIM0->TCR = 1;
bod_init();
PLC_IO_INIT();
BOT_BIT=0x55;
}
void PLC_PWM_RUN(uint16 PWM_Width,uint16 PWM_Cycle,uint16 Y_num)
{if (Y_num==0x0500)
{if(PWM_Width<PWM_Cycle&&Y0_H_OE==0)
{Y0_H_OE=1;
LPC_TIM2->TCR = 2;
PWM_Y0_ON_TIMER=PWM_Width;
PWM_Y0_CYCLE=PWM_Cycle;
LPC_TIM2->MR0 =SystemFrequency/4/(999+D8138);
LPC_TIM2->MCR = 3;
NVIC_EnableIRQ(TIMER2_IRQn);
LPC_TIM2->TCR = 1;
return;
}
}
else if(Y_num==0x0501)
{if(PWM_Width<PWM_Cycle&&Y1_H_OE==0)
{Y1_H_OE=1;
LPC_TIM3->TCR = 2;
PWM_Y1_ON_TIMER=PWM_Width;
PWM_Y1_CYCLE=PWM_Cycle;
LPC_TIM3->MR0 =SystemFrequency/4/(999+D8139);
LPC_TIM3->MCR = 3;
NVIC_EnableIRQ(TIMER3_IRQn);
LPC_TIM3->TCR = 1;
return;
}
}
}
void PLC_PWM_STOP(uint16 Y_num)
{if (Y_num==0x0500&&Y0_H_OE==1)
{Y0_H_OE=3;
LPC_TIM2->TCR = 2;
LPC_TIM2->TCR = 0;
LPC_GPIO2->FIOSET =Y0;
PLC_BIT_OFF(0x0500);
LPC_GPIO2->FIOSET =Y0;
PLC_BIT_OFF(0x0500);
Y0_H_OE=0;
return;}
else if(Y_num==0x0501&&Y1_H_OE==1)
{Y1_H_OE=3;
LPC_TIM3->TCR = 2;
LPC_TIM3->TCR = 0;
LPC_GPIO2->FIOSET =Y1;
PLC_BIT_OFF(0x0501);
LPC_GPIO2->FIOSET =Y1;
PLC_BIT_OFF(0x0501);
Y1_H_OE=0;
return;}
}
void PLC_PLSY_RUN(uint32 PLSY_Frequency,uint32 PLSY_Count,uint16 Y_num)
{if (Y_num==0x0500)
{if(Y0_H_OE==0)
{Y0_H_OE=2;
LPC_TIM2->TCR = 2;
PLSY_Y0_COUNT=PLSY_Count;
if(PLSY_Frequency==0){PLSY_Frequency=2;}
else if(PLSY_Frequency>20000){PLSY_Frequency=20000;}
LPC_TIM2->MR0 =SystemFrequency/4/(PLSY_Frequency*2);
LPC_TIM2->MCR = 3;
NVIC_EnableIRQ(TIMER2_IRQn);
LPC_TIM2->TCR = 1;
}
if(PLSY_Count==0){PLSY_Y0_COUNT=0x1000000;}
if(PLSY_Count!=0&&PLSY_Y0_COUNT==0){PLC_BIT_ON(M8029);}
return;}
else if(Y_num==0x0501)
{if(Y1_H_OE==0)
{Y1_H_OE=2;
LPC_TIM3->TCR = 2;
PLSY_Y1_COUNT=PLSY_Count;
if(PLSY_Frequency==0){PLSY_Frequency=2;}
else if(PLSY_Frequency>20000){PLSY_Frequency=20000;}
LPC_TIM3->MR0 =SystemFrequency/4/(PLSY_Frequency*2);
LPC_TIM3->MCR = 3;
NVIC_EnableIRQ(TIMER3_IRQn);
LPC_TIM3->TCR = 1;
}
if(PLSY_Count==0){PLSY_Y1_COUNT=0x1000000;}
if(PLSY_Count!=0&&PLSY_Y1_COUNT==0){PLC_BIT_ON(M8029);}
return;}
}
void PLC_PLSY_STOP(uint16 Y_num)
{if (Y_num==0x0500&&Y0_H_OE==2)
{Y0_H_OE=3;
LPC_TIM2->TCR = 2;
LPC_TIM2->TCR = 0;
//if(LPC_GPIO2->FIOPIN&Y0!=Y0)
/*{*/LPC_GPIO2->FIOSET =Y0;
PLC_BIT_OFF(0x0500);
//D8140_1++;}
Y0_H_OE=0;
return;}
else if(Y_num==0x0501&&Y1_H_OE==2)
{Y1_H_OE=3;
LPC_TIM3->TCR = 2;
LPC_TIM3->TCR = 0;
if(LPC_GPIO2->FIOPIN&Y1!=Y1)
{LPC_GPIO2->FIOSET =Y1;
PLC_BIT_OFF(0x0501);
D8142_3++;}
Y1_H_OE=0;
return;}
}
void H_Y0_Y1_STOP(void)
{if(Y0_H_OE!=0)
{LPC_TIM2->TCR = 2;
LPC_TIM2->TCR = 0;
LPC_GPIO2->FIOSET =Y0;
PLC_BIT_OFF(0x0500);}
if(Y1_H_OE!=0)
{LPC_TIM3->TCR = 2;
LPC_TIM3->TCR = 0;
LPC_GPIO2->FIOSET =Y1;
PLC_BIT_OFF(0x0501);}
}
uint32 PLC_MMS_TIME;
void PLC_M_MS(void)
{PLC_MMS_TIME++;
if(PLC_MMS_TIME%5==0) {if(PLC_BIT_TEST(M8011)){PLC_BIT_OFF(M8011);}else{PLC_BIT_ON(M8011);}}
if(PLC_MMS_TIME%50==0) {if(PLC_BIT_TEST(M8012)){PLC_BIT_OFF(M8012);}else{PLC_BIT_ON(M8012);}}
if(PLC_MMS_TIME%500==0) {if(PLC_BIT_TEST(M8013)){PLC_BIT_OFF(M8013);}else{PLC_BIT_ON(M8013);}}
if(PLC_MMS_TIME%30000==0) {PLC_MMS_TIME=0;if(PLC_BIT_TEST(M8014)){PLC_BIT_OFF(M8014);}else{PLC_BIT_ON(M8014);}}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -