📄 alarm.c
字号:
//*******************************************************************************
//Copyright (c) 2007,派利斯电子(北京)有限公司 硬件部
//文件名称: comm.c
//摘 要: 本文件主要包含报警部分的程序
//当前版本: D-1
//作 者: 佟文杰
//完成日期: 4/16/2007
//修 改 人:
//修改原因:
//修改日期:
//*******************************************************************************
#define ALARM_H
#include "alarm.h"
/*
通道类型为轴振动时只有两级报警,即AlertHigh和DangerHigh
报警倍增:软件可以选择2倍增、3倍增或不倍增,只有当91板上倍增端子短接后,各个模块按照软件设置的倍增方式进行倍增。
报警自锁
报警旁路:模块被Bypass后,该模块面板上的Bypass LED 点亮,同时通过CAN总线上传旁路状态。
报警延时
OK状态: 当通道NOT OK,该通道不报警。通道由NOT OK状态进入OK状态时,振动通道报警Bypass 10秒,位移通道报警Bypass 1秒。
*/
xdata struct Alarm AlarmModule;
//报警模块
/*****************************************************
* 函数介绍: 设置报警回差值
* 输入参数: 回差值 通道号
* 输出参数: 无
* 返回值 : 无
*****************************************************/
void SetFallingAlertL (unsigned char uchChannel, int iFallingAlertLow)
{
AlarmModule.iFallingAlertL[uchChannel - 1] = iFallingAlertLow;
}
/*****************************************************
* 函数介绍: 设置报警回差值
* 输入参数: 回差值 通道号
* 输出参数: 无
* 返回值 : 无
*****************************************************/
void SetFallingAlertH(unsigned char uchChannel, int iFallingAlertHigh)
{
AlarmModule.iFallingAlertH[uchChannel - 1] = iFallingAlertHigh;
}
/*****************************************************
* 函数介绍: 设置报警回差值
* 输入参数: 回差值 通道号
* 输出参数: 无
* 返回值 : 无
*****************************************************/
void SetFallingDangerL (unsigned char uchChannel, int iFallingDangerLow)
{
AlarmModule.iFallingDangerL[uchChannel - 1] = iFallingDangerLow;
}
/*****************************************************
* 函数介绍: 设置报警回差值
* 输入参数: 回差值 通道号
* 输出参数: 无
* 返回值 : 无
*****************************************************/
void SetFallingDangerH(unsigned char uchChannel, int iFallingDangerHigh)
{
AlarmModule.iFallingDangerH[uchChannel - 1] = iFallingDangerHigh;
}
/*****************************************************
* 函数介绍: 设置报警下限
* 输入参数: 门限值 通道号
* 输出参数: 无
* 返回值 : 无
*****************************************************/
void SetAlertLow(unsigned char uchChannel, int iAlertLow)
{
AlarmModule.iAlertLow[uchChannel - 1] = iAlertLow;
}
/*****************************************************
* 函数介绍: 设置报警上限
* 输入参数: 门限值 通道号
* 输出参数: 无
* 返回值 : 无
*****************************************************/
void SetAlertHigh(unsigned char uchChannel, int iAlertHigh)
{
AlarmModule.iAlertHigh[uchChannel - 1] = iAlertHigh;
}
/*****************************************************
* 函数介绍: 设置危险下限
* 输入参数: 门限值 通道号
* 输出参数: 无
* 返回值 : 无
*****************************************************/
void SetDangerLow(unsigned char uchChannel, int iDangerLow)
{
AlarmModule.iDangerLow[uchChannel - 1] = iDangerLow;
}
/*****************************************************
* 函数介绍: 设置危险上限
* 输入参数: 门限值 通道号
* 输出参数: 无
* 返回值 : 无
*****************************************************/
void SetDangerHigh(unsigned char uchChannel,unsigned int iDangerHigh )
{
AlarmModule.iDangerHigh[uchChannel - 1] = iDangerHigh;
}
/*****************************************************
* 函数介绍: 设置软件倍增状态
* 输入参数: 倍增状态值 通道号
* 输出参数: 无
* 返回值 : 无
*****************************************************/
void SetTripleStatusALM(unsigned char uchChannel, unsigned char status)//软件倍增状态
{
if (status != 0) status++;
AlarmModule.uchTriple[uchChannel - 1] = status;
}
/*****************************************************
* 函数介绍: 设置硬件旁路状态
* 输入参数: 旁路状态值
* 输出参数: 无
* 返回值 : 无
*****************************************************/
void SetBypassStatusALM(unsigned char uchChannel, unsigned char uchBypassStatus)
{
AlarmModule.uchSystemBypassStatus[uchChannel - 1] = uchBypassStatus;
}
/*****************************************************
* 函数介绍: 设置自锁状态
* 输入参数: 自锁状态值 通道号
* 输出参数: 无
* 返回值 : 无
*****************************************************/
void SetLatchStatus(unsigned char uchChannel, unsigned char uchLatchStatus)
{
AlarmModule.uchLatch[uchChannel - 1]= uchLatchStatus;
}
//--------------------------------------------------------------------------------------------------
//函数名称:void SetEnableStatusALM( unsigned char uchChannel, unsigned char uchEnableStatus)
//功 能:设置通道使能
//输入参数:通道号,使能状态
//返 回:无
//完成日期:4/16/2007
//--------------------------------------------------------------------------------------------------
void SetEnableStatusALM( unsigned char uchChannel, unsigned char uchEnableStatus)//主框架程序调用
{
AlarmModule.uchEnable[uchChannel - 1] = uchEnableStatus;
if (AlarmModule.uchEnable[uchChannel - 1] != 0)
{
InitChannel(uchChannel);
}
if (uchChannel == 2) //初始化参数时,初始化到第二个通道时对报警模块的参数进行调整
{
if (AlarmModule.uchChannelType[0] == 22)
{
if ((AlarmModule.uchEnable[0] == 0) || (AlarmModule.uchEnable[1] == 0))
{
AlarmModule.uchEnable[1] = 0;
AlarmModule.uchEnable[0] = 0;
}
else if ((AlarmModule.uchEnable[0] == 1) && (AlarmModule.uchEnable[1] == 1))
{
AlarmModule.uchEnable[0] = 1;
AlarmModule.uchEnable[1] = 1; //此else可以不要
}
}
}
}
/*****************************************************
* 函数介绍: 设置系统时钟
* 输入参数: 系统时钟
* 输出参数: 无
* 返回值 : 无
*****************************************************/
void SetHeartbeatALM(unsigned int uiHeartbeatValue) // 100ms tick rate
{ //变量的初始化问题,看程序的执行顺序
AlarmModule.uiCurrentHeartbeat = uiHeartbeatValue;
}
//--------------------------------------------------------------------------------------------------
//函数名称:void SetOKStatusALM(unsigned char uchChannel, unsigned char uchOKStatus)
//功 能:设置通道OK状态
//输入参数:通道号,OK状态
//返 回:无
//完成日期:4/16/2007
//--------------------------------------------------------------------------------------------------
void SetOKStatusALM(unsigned char uchChannel, unsigned char uchOKStatus)
{
AlarmModule.uchOKStatus[uchChannel - 1] = uchOKStatus;
}
//--------------------------------------------------------------------------------------------------
//函数名称:void SetChannelTypeALM(unsigned char uchChannel, unsigned char uchChannelType)
//功 能:设置通道类型
//输入参数:通道号,通道类型
//返 回:无
//完成日期:4/16/2007
//--------------------------------------------------------------------------------------------------
void SetChannelTypeALM(unsigned char uchChannel, unsigned char uchChannelType)
{ //HHH
if (((uchChannelType > 12) && (uchChannelType < 19)) || (uchChannelType == 21) || (uchChannelType == 22)|| (uchChannelType == 28))
{
AlarmModule.uchChannelType[uchChannel - 1] = uchChannelType;
}
else
{
AlarmModule.uchChannelType[uchChannel - 1] = 13;
}
}
/*****************************************************
* 函数介绍: 设置通道当前测量值
* 输入参数: 当前测量值 通道号
* 输出参数: 无
* 返回值 : 无
*****************************************************/
void SetCurrentValueALM( unsigned char uchChannel, float iCurrentValue)//当前测量值
{
AlarmModule.iCurrentValue[uchChannel - 1] = iCurrentValue;
}
/*****************************************************
* 函数介绍: 设置通道报警延迟时间
* 输入参数: 延迟时间 通道号
* 输出参数: 无
* 返回值 : 无
*****************************************************/
void SetAlertDelay(unsigned char uchChannel, unsigned int iDelay)
{
AlarmModule.uiAlertDelay[uchChannel - 1] = iDelay;
}
/*****************************************************
* 函数介绍: 设置通道报警延迟时间
* 输入参数: 延迟时间 通道号
* 输出参数: 无
* 返回值 : 无
*****************************************************/
void SetDangerDelay(unsigned char uchChannel, unsigned int iDelay)
{
AlarmModule.uiDangerDelay[uchChannel - 1] = iDelay;
}
/*****************************************************
* 函数介绍: 设置系统复位状态
* 输入参数: 复位状态
* 输出参数: 无
* 返回值 : 无
*****************************************************/
void SetResetStatusALM(unsigned char uchStatus)
{
AlarmModule.uchResetStatus[0] = uchStatus;
AlarmModule.uchResetStatus[1] = uchStatus;
}
//--------------------------------------------------------------------------------------------------
//函数名称:void InitChannel(unsigned char uchChannel)
//功 能:初始化通道数据
//输入参数:通道号
//返 回:无
//完成日期:4/16/2007
//--------------------------------------------------------------------------------------------------
void InitChannel(unsigned char uchChannel)
{
AlarmModule.uiAlertHeartbeatBakH[uchChannel - 1] = 0;
AlarmModule.uiDangerHeartbeatBakH[uchChannel - 1] = 0;
AlarmModule.uiAlertHeartbeatBakL[uchChannel - 1] = 0;
AlarmModule.uiDangerHeartbeatBakL[uchChannel - 1] = 0;
}
//--------------------------------------------------------------------------------------------------
//函数名称:void SetFlagBit(unsigned char uchChannel, unsigned char b)
//功 能:置位通道报警位
//输入参数:通道号 ,报警位
//返 回:无
//完成日期:4/16/2007
//--------------------------------------------------------------------------------------------------
void SetFlagBit(unsigned char uchChannel, unsigned char b)
{
unsigned int idata elapsed;
if (AlarmModule.uchChannelNotoktoOkFlag[uchChannel - 1] == 1)
{
switch (AlarmModule.uchChannelType[uchChannel - 1])
{
case 13: //加速度输入 加速度输出
case 14: //加速度输入 速度输出
case 15: //加速度输入 位移输出
case 16: //速度输出 速度输出
case 17: //速度输入 位移输出
case 18: //位移输入 位移输出
case 28: //HHH
if (b == 0x1 || b == 0x2)
{
return;
}
break;
case 22: //LVDT输入 机壳膨胀输出
if (((uchChannel-1) == 0)&&(b == 0x1 || b == 0x2))
{
return;
}
break;
default:
break;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -