用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心解决方案电子通信

PIC单片机在智能双电源装置中的应用

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-01-10 23:01:53
ing=1;
            return;
            }
        }
    if (VolErrFlag[k].cc !=0)
        bVolErrCnting=0;
    if (bVolErrCnting && VolErrCnt==0)
        {        // 启动转换动作
        bVolErrCnting=0;
        bBkOpen1=k;
        CLRWDT();
        StartTurn(k);
        }
}
static void CheckVol2()
{        // 电压判断,处理函数2
    if (VolErrFlag[0].cc !=0)
        {
        bVolErrCnting=0;   // 恢复异常计时器标记
        }
    else
        {
        if (bVolErrCnting==0)
            {
            di();
            CLRWDT();
            VolErrCnt=(unsigned int) LimParams.Para.Trn*TiScale;    
           // 预设异常计时器的初值
            ei();
            bVolErrCnting=1;
            return;
            }
        }
    if (bVolErrCnting && VolErrCnt==0)
        {    // 启动转换动作
        bVolErrCnting=0;
        CLRWDT();
        bBkOpen1=0;
        StartTurn(0);
        }
}
static void CheckVol3()
{        // 电压判断,处理函数3
    if (VolErrFlag[0].cc==0)
        {
        bVolErrCnting=0;  // 恢复异常计时器标记
        bDJstarting=0;
        }
    else
        {
        if (bVolErrCnting==0)
            {
            di();
            CLRWDT();
            VolErrCnt=(unsigned int) LimParams.Para.Tnr*TiScale;    
            // 预设异常计时器的初值
            ei();
            bVolErrCnting=1;
            return;
            }
        }
    if (bVolErrCnting && bDJstarting==0 && VolErrCnt==0)
        {
        di();
        CLRWDT();
        DJstartCnt=(unsigned int)LimParams.Para.T1*TiScale;
        // 预设发电机启动的等待计时器的初值
        ei();
        CLRWDT();
        bDJstarting=1;
        return;
        }
    if (bDJstarting &&  DJstartCnt==0)
        {   // 启动转换动作
        CLRWDT();
        bVolErrCnting=0;
        bBkOpen1=1;
        StartTurn(1);
        }
}
……
void main()
{
……
                if (bBkOpen1)
                    {    // 在备用电源合闸状态
                    if (LimParams.Para.JobType==1)
                        {    // 自投不自复方式
                        CheckVol1(1);
                        }
                    else
                        {  //自投不自复或发电机方式
                        CheckVol2();
                        }
                    }
                else
                    {    // 在常用电源合闸状态
                    if (LimParams.Para.JobType==2)
                        {  // 发电机工作方式
                        CheckVol3();
                        }
                    else
                        {     // 自投自复或自投不自复方式
                        CheckVol1(0);
                        }
                    }
……
}
5. 智能双电源装置的电压采样的校准
   在实际生产中,由于采样电阻的误差,所以在相同的校准电压输入,单片机采样到的AD值是不一样的。如何设定AD值和校准电压的校准比例,是一个关键的问题,校准比例不能在程序编译中固定下来,因为这样会有较大的误差,即使改用精密电阻来采样,误差也不能减低很多。我在应用中采用的方法是:提高采样电路的线性度,使其在不同电压下的校准比例有很好的一致性(在解决了温升的问题后,这点是可以做到的);在采样电路输入校准电压,输入设置密码后,单片机自动计算校准比例,并把校准比例进行保存。
……
void main()
{
……
    ReadScal();
……
    while(1)
    {
……

……
    }
}
……
static void KeyProc()
{……
    if ( SetKey==0)
        {
        ……
        if ( bSecPass==1)
            {
            // 设电压
            if (ReadScalFlag() !=0) 
                return;
    // 如果已设定了比例,就不能再更改
            CLRWDT();
            ShowString(0, 0);
            ShowString(1, 1);            // "pass"
            ShowString(0, 2);    
        // 在LCD屏上显示PASS
            CLRWDT();
            for (i=0; i!=6; i++)
                ScalUarray=IntUarray;    // 读入比例参数,
            CLRWDT();
            SaveScal();        // 保存比例参数
            SaveScalFlag();  // 并改写标志
            Delay5s();
            return;
            }
        ……
        }
}




上一页  [1] [2] 

Tags:

作者:佚名
  • 好的评价 如果您觉得此文章好,就请您
      0%(0)
  • 差的评价 如果您觉得此文章差,就请您
      0%(0)

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:5,500.00000 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号