📄 mototype.c
字号:
/*************************************************************************************
* Copyright 2006 National ASIC Center, All right Reserved
*
* FILE NAME: JDType.c
* AUTHOR: Steny.yz.X
* Date of Creation: 2006/07/25
*
* DESCRIPTION: 基本函数
*
* NOTE:
*
* FUNCTIONS LIST: CovertTimeRemain 计算剩余时间
* GlobalVarInit 全局量初始化
* TimeInitial 时间节点初始化函数
*
*
* -----------------------------------------------------------------------------------
*
* -----------------------------------------------------------------------------------
*
* MODIFICATION HISTORY
* LastModify 2006/09/20
*************************************************************************************/
#include "MOTOType.h"
#include "UIType.h"
//#include "NUCLEUS.H"
#include "Applications/inlcudes/hardware_reg.h"
#include "Applications/inlcudes/hardware_intc.h"
#include "flash_extr.h"
#include "test.h"
extern int Alarm_flag;
extern int Start_Signal;
extern int Break_Signal;
extern int ErrRecWave_flag;
//TSampleInputs JDInputs;
_JDInputs *JDInputs = (_JDInputs *)0x1fff0000;
_JDSetting *JDSetting = (_JDSetting *)(0x1fff0000 + 0x200);
_StatusVar *StatusVar = (_StatusVar *)(0x1fff0000 + 0x400);
_Channel_Adjust *Channel_Adjust =(_Channel_Adjust *)(0x1fff0000 + 0x600);
_SystemSetting SystemSetting;
_DIO_Setting *DIO_Setting ;
extern TJDTimingNode VoltageShakingRecloseTn;
extern _Value_Parameter Value_Parameter;
//RTC_TIME RrrTime[100];
void StateVarInit(void)
{
OverLoad = FALSE; //过负载
Block_Break = FALSE;
Block_Alarm = FALSE; //堵转
Short_Circuit = FALSE; //短路
Current_Unbalance_Alarm = FALSE; //不平衡报警
Current_Unbalance_Break = FALSE; //不平衡报警跳闸
Line_Broken = FALSE; //断相
Grounding = FALSE; //接地
Phase_Reversed = FALSE; //逆向
Voltage_Low = FALSE; //欠电压
Voltage_Shaking = FALSE; //晃电
Voltage_Shaking_Over = FALSE; //晃电结束
PT_Broken = FALSE; //pt断线
Voltage_Over = FALSE; //过压
Current_Low = FALSE; //欠电流
Running = FALSE; //运行中
Start_TimeUp = FALSE; //启动超时
Starting = FALSE; //启动中
Stop = FALSE;
Running = FALSE; //停机
OverHeat_Alarm = FALSE; //过热报警
OverHeat_Break = FALSE; //过热跳闸
Restart_Permit = FALSE; //允许重启
// Reclose_Action = FALSE; //合闸
// Break_Action = FALSE; //跳闸
// Alarm_Action = FALSE; //报警
OverCurrent_Ratio = 0;
HeatOver_Ratio= 0; // 热容量
Unbalance_Current_Value = 0; // 电流不平衡度
}
//通道系数调整
void Initial_Channel_Adjust()
{
IA_AD_Channel = 1.00;
IB_AD_Channel = 1.00;
IC_AD_Channel = 1.00;
UA_AD_Channel = 1.0;
UB_AD_Channel = 1.0;
UC_AD_Channel = 1.0;
I0_AD_Channel = 1.04;
/*
IA_linerAdjust = 27.3179 ;
IB_linerAdjust = 27.402179 ;
IC_linerAdjust = 27.4044 ;
I0_linerAdjust = 14.53279 ;
*/
IA_linerAdjust = 190.4114724;
IB_linerAdjust = 188.2488289 ;
IC_linerAdjust = 190.3883512 ;
I0_linerAdjust = 0.71464 ;
UA_linerAdjust_I = 310.6255862 ;
UA_linerAdjust_II = 310.6255862 ;
UB_linerAdjust_I = 308.6255862 ;
UB_linerAdjust_II = 308.6255862 ;
UC_linerAdjust_I = 308.6255862 ;
UC_linerAdjust_II = 308.6255862 ;
I1_linerAdjust = I2_linerAdjust =(IA_linerAdjust+IB_linerAdjust+IC_linerAdjust)*0.333333333 ;
}
void TimeInitial(TJDTimingNode * node , int delaytime ,int holdtime)
{
node->delaytime = delaytime;
node->holdtime = holdtime;
node->holdtick = 0x0;
node->delaytick = 0x0;
node->level = 0x0;
node->lastdelaytick = 0x0;
node->lastholdtick = 0x0;
}
/*float CovertTimeRemain(float new_settingtime,TJDTimingNode * node)
{
if (last_settingtime != 0)
{
float cur_remaintick = (1.0 - (node->delaytick / node->delaytime)) * new_settingtime;
return cur_remaintick;
}
return new_settingtime;
}*/
void GPIO_Init()
{
*(volatile unsigned long *)PORTG_DIR &= ~(0x1f);
*(volatile unsigned long *)PORTG_SEL |= 0x1f;
/****************************************************
* 初始化开入量
*
****************************************************/
*(volatile unsigned long *)PORTF_SEL |= 0xF; //for common use
*(volatile unsigned long *)PORTF_DIR |= 0xF; //intput
/****************************************************
* 初始化开出量
*
****************************************************/
*(volatile unsigned long *)PORTG_SEL |= 0x17; //for common use
*(volatile unsigned long *)PORTG_DIR &= ~0x17; //output
/******************开出量动作 自检结束后恢复******/
//*(volatile unsigned long *)PORTG_DATA |= 0x10;
//*(volatile unsigned long *)PORTG_DATA &= ~0x4;
//*(volatile unsigned long *)PORTG_DATA |= 0x2;
//*(volatile unsigned long *)PORTG_DATA |= 0x1;
*(volatile unsigned long *)PORTG_DATA |= 0x10;
*(volatile unsigned long *)PORTG_DATA &= ~0x4;
*(volatile unsigned long *)PORTG_DATA |= 0x2;
*(volatile unsigned long *)PORTG_DATA |= 0x1;
}
void Protect_Init()
{
U32 sizetemp;
int SaveLoadNumtemp = -1;
SaveLoadNumtemp = *((int *)0x20030000);
Initial_Channel_Adjust();
//Load_LinerAdjust();
SystemPara_Initialize();
DataSection_Initialize();
#ifdef yxjtest
memset(&SystemSetting,0, sizeof(_SystemSetting));//调试添加
memset(JDSetting , 0,sizeof(_JDSetting));
memset(&Value_Parameter , 0, sizeof(_Value_Parameter));
#endif
if( (SaveLoadNumtemp==0) ||(SaveLoadNumtemp==1)||(SaveLoadNumtemp==2) )//有记录就读取
{
//LoadFromFlash(SaveLoadNumtemp);
}
else
{
SaveValue(0); //调试屏蔽 //无记录就存
}
TimeNode_Initialize();
StateVarInit();
InitCalculate();
GPIO_Init();
}
int Break_flag = 0;
void Break_Action(flag)
{
int i;
if(flag)
{
Break_flag = 1;
Alarm_flag = 0;
Start_Signal = 0;
Break_Signal = 0;
ErrRecWave_flag = 1; //在录波函数最后清零
//Break_flag = 0;
}
}
int Alarm_flag = 0;
void Alarm_Action(flag)
{
if(flag)
{
Alarm_flag = 1;
}
}
void Reclose_Action(flag)
{
if(flag)
{
Start_Signal = 1;
Break_Signal = 0;
Break_flag = 0;
VoltageShakingRecloseTn.level = 0;
VoltageShakingRecloseTn.lastdelaytick = 0x0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -