IO模块软件处理方案

在工业自动化领域输入/输出模块比较常见,有数字量输入DI,数字量输出DO,模拟量输入AI,模拟量输出AO,高速脉冲输入HPI,高速脉冲输出HPO。
下面介绍这些IO模块软件处理方案
1.D0
延时输出
2.DI
在工业现场最常用的就是通过DI信号给设备开机停机等信号,如果现场有干扰,就可能造成设备的误动作,造成生命和财产的损失。软件可以开通延时和关断延时滤波消除干扰,通常这个延时时间可以通过参数配置。下面看看下面的时序图,正常情况下DI开通和关断后,经过软件的延时处理,再给到下一级处理,比如这个DI的高电平关联启动,就会调用执行启动函数。
在这里插入图片描述
在这里插入图片描述
再看看有干扰的情况,当软件检测到一个上升沿或下降沿后,每个节拍都会检测这个变化的信号是否会持续延迟时间,如果该信号一直不变,延迟结束后就会输出该信号,否则输出信号就会保持不变。
在这里插入图片描述
在这里插入图片描述

void DIDealyModule(DELAY_MODULE *p)
{
	if(p->in != p->oldIn)
	{
		if ((!!p->in)&&(p->type == OPEN_DELAY_TYPE || p->type == BID_DELAY_TYPE))//0--->1
		{
			p->delayActTick = p->delayTime;
		}else if ((!p->in)&&(p->type == CLOSE_DELAY_TYPE || p->type == BID_DELAY_TYPE))//1--->0
		{
			p->delayActTick = p->delayTime;
		}
		else
		{
			p->delayActTick = 0;
		}
	}

	p->out = (p->delayActTick == 0)?p->in:p->out;

	if(p->delayActTick > 0)
	{
		p->delayActTick--;
	}

	p->oldIn = p->in;

}

3.AI
值转化,校正,滤波,标定
(1)假设AI外部输入的电压为0-10v,转为为0-4095的数字量。
在这里插入图片描述

(2)但是有由于硬件有偏差,导致2v对应的不是40952/10,8v对应的不是40958/10,需要线性校正。线性校正的横坐标为adc数值,纵坐标为标幺量,1000代表10v(这里是个技巧将电压标幺化处理)
在这里插入图片描述

(3)对步骤(2)的结果一阶低通滤波

(4)默认标定2v对应20%,8v对应80%,现场有很多特殊情况,比如说客户2v要对应80%的输出,8v对应20%的输出,可以设定参数调整。
在这里插入图片描述
(5) 噪声处理
稳定状态下电压的值小数点后面几位会有跳动,为了不让跳动,可以设置一定的阈值,当变动量大于某值,输出才变动,否则输出不变。

        pai_deal->adjust_line[i].x      = AnalogDeal(&pai_deal->analog_type[i], pai_deal->padc_result[i], i);//输入时adc值,输出对应理论电压

        pai_status->type_value[i]       = LineCalc(&pai_deal->adjust_line[i]);//输入adc对应理论电压,输出电压标幺值
         
        pai_deal->line_struct[i].x      = pai_status->type_value[i];
        pai_deal->low_pass_filter[i].in = LineCalc(&pai_deal->line_struct[i]);//输入为定标前标幺,输出为定标后标幺

        intermValue                     = LpfCalc(&pai_deal->low_pass_filter[i]);//输入为滤波前电压标幺,输出为滤波后电压标幺
        
        intermValue                     = DenoiseDeal(&pai_deal->denoise[i], intermValue, i);//噪声处理

4.AO
值转化,校正,标定

未完待续,搞明白这些,IO模块的软件处理就没有问题!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值