📄 lzk.c
字号:
#include "LZK.H"
/***********************************************************************
*** 系统全局常量、变量、和位定义 .
***********************************************************************/
uint8 data ucP5DATA = 0x7f; // Panel Latch Buffer.
uint8 data ucP4DATA = 0xC0; // P4 Latch Buffer.
/**************************************************************************/
uint8 xdata DmsCNT = 0;
uint8 xdata DmsFlag = 0;
uint16 xdata DmsNum = 0;
uint8 xdata Dms2Flag = 0;
uint16 xdata Dms2_1Num = 0;
uint16 xdata Dms2_2Num = 0;
uint16 xdata Dms2_3Num = 0;
/**************************************************************************/
bit MenuKeyEvt = 0;
bit EnterKeyEvt = 0;
bit CancelKeyEvt = 0;
bit UpKeyEvt = 0;
bit DownKeyEvt = 0;
bit LeftKeyEvt = 0;
bit RightKeyEvt = 0;
bit PressKeyEvt = 0;
uint16 xdata MenuKeyCNT = 0;
uint16 xdata EnterKeyCNT = 0;
uint16 xdata CancelKeyCNT = 0;
uint16 xdata UpKeyCNT = 0;
uint16 xdata DownKeyCNT = 0;
uint16 xdata LeftKeyCNT = 0;
uint16 xdata RightKeyCNT = 0;
uint16 xdata temp = 0;
uint8 xdata Flash[128];
uint8 xdata CFlash[100];
uint8 xdata seek = 0; //一级菜单页(主菜单选项)
uint8 xdata hunt = 0; //二级菜单页(一级菜单子菜单页及其选项)
uint8 xdata page = 0; //三级菜单页(二级菜单子菜单页 如:故障页,静态参数页)
uint8 xdata Data_Num = 0;//运行页六项滚动显示
uint8 xdata Mov1Up = 0; //动画运动量1
uint8 xdata Mov2Up = 0; //动画运动量2
uint8 xdata head = 0; //动画运动方向
uint8 xdata Shf1UP = 0; //上位机动画及热备图标
uint8 xdata Shf2UP = 0; //上位机动画及热备图标
/***********************************************************************
*** DI、DO开关量定义
**********************************************************************/
/***********************************************************************
*** DO开关量(控制输出继电器)功能说明:
(1)KQJ:KQ可控硅开通控制继电器(常闭).
(2)LZJ:励磁状态继电器(常开),LZJ决定是否进行RF检测.
(3)LCJ:失步保护继电器(常开),控制主电源开关或输出给PLC.
(4)SZJ:跳闸停机继电器(常开),后备保护用,输出给PLC.
(5)BXJ:报警输出继电器(常开),用于接通声光报警或输出至PLC.
(6)TYJ:降压起动继电器(常开),控制输出.
(7)YKJ:遥控继电器(常开)
(8)N/A:
***********************************************************************/
uint8 bdata RelayOUT = 0xff; // Output Relay STATUS.
sbit ZJJ_OUT = RelayOUT^7; // N/A.
sbit YKJ_OUT = RelayOUT^6; // YKJ Output Relay No.6.遥控状态输出
sbit TYJ_OUT = RelayOUT^5; // TYJ Output Relay No.5.降压启动控制输出
sbit BXJ_OUT = RelayOUT^4; // BXJ Output Relay No.4.报警输出
sbit SZJ_OUT = RelayOUT^3; // SZJ Output Relay No.3.失步再整步失败状态输出
sbit LCJ_OUT = RelayOUT^2; // LCJ Output Relay No.2.失步状态输出
sbit LZJ_OUT = RelayOUT^1; // LZJ Output Relay No.1.KQ误导通检测使能控制
sbit KQJ_OUT = RelayOUT^0; // KQJ Output Relay No.0.KQ控制继电器
/***********************************************************************
*** DI开关量(状态输入继电器)功能说明:
(1)DLJ:电机加电状态输入(常开),由PLC输入.
(2)RFJ:KQ导通检测(常开),RFJ闭合表示KQ导通.
(3)FCJ:断电保护输入(常开),由PLC输入,防止对电机的冲击.
(4)JYJ:降压起动输入(常开),由PLC输入.
(5)ZCJ:增值(常开),遥控增值.
(6)JCJ:减值(常开),遥控减值.
(7)YCJ:遥控状态继电器,由PLC输入.
(8)DYJ:低压状态输入.
***********************************************************************/
uint8 bdata RelayIN = 0xff; // Digital Input STATUS.
sbit DYJ_IN = RelayIN^7; // DYJ Input Relay No.7.低电压强励控制输入
sbit YCJ_IN = RelayIN^6; // YCJ Input Relay No.6.遥控状态控制输入
sbit JCJ_IN = RelayIN^5; // JCJ Input Relay No.5.减值
sbit ZCJ_IN = RelayIN^4; // ZCJ Input Relay No.4.增值
sbit JYJ_IN = RelayIN^3; // JYJ Input Relay No.3.降压启动控制输入
sbit FCJ_IN = RelayIN^2; // FCJ Input Relay No.2.防冲击输入<DSJ断电失步保护继电器>
sbit RFJ_IN = RelayIN^1; // RFJ Input Relay No.1.RF误导通信号输入
sbit DLJ_IN = RelayIN^0; // DLJ Input Relay No.0.电机启动控制信号输入
/************************温度************************/
uint8 xdata Temper_EN = 0;
uint16 xdata KTemper = 0;
float xdata CTemper = 0;
uint8 xdata OutTemper = 0;
/***********************录波与显波*******************/
float xdata EM_k1 = 0;
float xdata EM_k2 = 0;
uint8 xdata EM_b1 = 0;
uint8 xdata EM_b2 = 0;
uint8 xdata EM_speed = 0;
uint8 idata AD_Switch = 0;
uint8 idata AD_DataBuff[4];
char idata ExSramWrRdPag = 0;
char xdata ExSramStarPag = 0;
char xdata ExSramEndPag = 0;
uint16 idata ExSramWrRdAdr = 0x0000;
uint16 xdata ExSramTempAdr = 0x0000;
uint8 xdata *ExSramWrRdAdrPt;
uint8 xdata CH1[200];
uint8 xdata CH2[200];
uint8 xdata Em_PtData = 0;
uint8 xdata Em_Pace = 0;
uint8 xdata Em_Slot = 0;
/*****************************************************************/
uint8 xdata Star_EN = 0; //与DLJ对应锁存
uint8 xdata Wave_EN = 0; //与WaveEn对应锁
uint8 xdata DisWave_EN = 0; //显波使能
uint8 xdata Com_EN = 1; //上位机通信使能
uint16 xdata ErrorRege = 0; //故障类型
uint16 xdata ErrorTemp = 0; //故障锁存
uint8 xdata PictrRege = 0; //图片状态
uint8 xdata PictrTemp = 0; //图片锁存
uint8 xdata RecType = 0; //录波类型
uint8 xdata RecTemp = 0; //录波锁存
uint8 xdata AcctimeTemp = 0; //累计运行时间锁存
/*******************************************************************
0x00 不录波
0x01 手动录波
0x02 启动录波
0x03 缺相
0x04 投励失败
0x05 失控
0x06 失步
0x07 PT断线
***************************/
/****************************************************************************
** 函数名称: T2_ISR()
** 功能描述: T2定时器中断处理,中断间隔125uS
(1)125uS时间基准:分为5个相位;
(2)WDT清除;
(3)A/D采样:UF,IF,DU,DI,CurrRingEY,CurrRingEI;
(4)DI读入: UFCO,IFCO,SYNCx,RelayIN;
(5)DO输出: RelayOUT,PulseOUT;
(6)功率因数相差法TIMER1测量结果读入;
** 入口参数: 无
** 出口参数: 无
** 全局变量: 无
** 调用模块: 无
** 说明:
****************************************************************************/
void T2_ISR(void) interrupt 5
{
SFRPAGE = TMR2_PAGE ; // Change to TIMER2 PAGE.
TF2 = 0;
WDTCN = 0xA5; // Enable WDT or Reload the WDT.
/************************************
***外部DI读入
************************************/
RelayIN = RelayInPut();
/************************************
***继电器输出
************************************/
RelayOutPut(RelayOUT);
/****************************************************************/
if(Temper_EN==0)
{
ADC0_CH_Setting(0x08);
AD0INT = 0;
AD0BUSY = 1;
while( AD0INT == 0 );
KTemper=ADC0H;
KTemper=KTemper<<8;
KTemper=KTemper+ADC0L;
Temper_EN=1;
}
/****************************************************************/
Em_Slot++;
if(Wave_EN && Em_Slot >= EN_RecMode)
{
Em_Slot = 0;
for(AD_Switch=0;AD_Switch<4;AD_Switch++)
{
ADC0_CH_Setting(AD_Switch);
AD0INT = 0;
AD0BUSY = 1;
while( AD0INT == 0 );
AD_DataBuff[AD_Switch] = (ADC0H<<3)+(ADC0L>>5);
}
ExSRAM_PageSetting(ExSramWrRdPag);
for(AD_Switch=0;AD_Switch<4;AD_Switch++)
{
ExSramWrRdAdrPt = ExSramWrRdAdr;
*ExSramWrRdAdrPt = AD_DataBuff[AD_Switch];
ExSramWrRdAdr++;
}
if(ExSramWrRdAdr>65531)
{
ExSramWrRdAdr = 0;
ExSramWrRdPag++;
}
SFRPAGE = 0x00;
EMI0CF = 0x00;
EMI0TC = 0x00;
if(ExSramWrRdPag>ExSramEndPag)
{
Wave_EN=0;
RecType=0;
}
}
if(DisWave_En)
{
ExSRAM_PageSetting(ExSramWrRdPag);
for(AD_Switch=0;AD_Switch<4;AD_Switch++)
{
ExSramWrRdAdrPt = ExSramWrRdAdr;
AD_DataBuff[AD_Switch] = *ExSramWrRdAdrPt;
ExSramWrRdAdr++;
}
SFRPAGE = 0x00;
EMI0CF = 0x00;
EMI0TC = 0x00;
DisWave_En=0;
}
/******KEY SCAN*****************************************************/
SFRPAGE = 0x0F;
if(MenuKeyCNT<500&&MenueKey==1)
MenuKeyCNT=0;
if(MenuKeyCNT<500&&MenueKey==0)
MenuKeyCNT++;
if(MenuKeyCNT>=500&&MenueKey==1)
{
MenuKeyEvt=1;
MenuKeyCNT=0;
}
if(EnterKeyCNT<500&&EnterKey==1)
EnterKeyCNT=0;
if(EnterKeyCNT<500&&EnterKey==0)
EnterKeyCNT++;
if(EnterKeyCNT>=500&&EnterKey==1)
{
EnterKeyEvt=1;
EnterKeyCNT=0;
}
if(CancelKeyCNT<500&&CancelKey==1)
CancelKeyCNT=0;
if(CancelKeyCNT<500&&CancelKey==0)
CancelKeyCNT++;
if(CancelKeyCNT>=500&&CancelKey==1)
{
CancelKeyEvt=1;
CancelKeyCNT=0;
}
if(UpKeyCNT<500&&UpKey==1)
UpKeyCNT=0;
if(UpKeyCNT<10000&&UpKey==0)
UpKeyCNT++;
if(UpKeyCNT>=500&&UpKey==1)
{
UpKeyEvt=1;
UpKeyCNT=0;
}
if(UpKeyCNT>=10000)
{
UpKeyCNT++;
if(UpKeyCNT>10040)
HI_Bell=0;
if(UpKeyCNT>10200)
{
UpKeyCNT=10000;
UpKeyEvt=1;
}
}
if(DownKeyCNT<500&&DownKey==1)
DownKeyCNT=0;
if(DownKeyCNT<10000&&DownKey==0)
DownKeyCNT++;
if(DownKeyCNT>=500&&DownKey==1)
{
DownKeyEvt=1;
DownKeyCNT=0;
}
if(DownKeyCNT>=10000)
{
DownKeyCNT++;
if(DownKeyCNT>10040)
HI_Bell=0;
if(DownKeyCNT>10200)
{
DownKeyCNT=10000;
DownKeyEvt=1;
}
}
if(LeftKeyCNT<500&&LeftKey==1)
LeftKeyCNT=0;
if(LeftKeyCNT<500&&LeftKey==0)
LeftKeyCNT++;
if(LeftKeyCNT>=500&&LeftKey==1)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -