viod delay(void) {
for(k=0;k<255;k++) }
5.5某压力测试系统,测量范围:0mm H2O柱到1000mmH2O,经A/D转换后,对应数字量为00H到FFH,当压力为600mmH2O时,其数字量是多少? 解:利用线性标度变换公式:
Ax?A0Nx?N0?
Am?A0Nm?N0代入: 解得:Nx?99H
5.6 某炉温控制系统热电偶测温范围0-1200℃,经温度变送器输出电压为1V-5V,再经A/D0809,A/D输入范围为0-5V,当采样值为9BH时,对应炉温。
解:ADC0809模拟上下限为1-5V,对应数字量上下限为33H-FFH。利用线性标度变换公式:
600?0Nx?0?
100?00F?FH0Ax?A0Nx?N0?Am?A0Nm?N0
即有
Ax-09BH?33H?1200?0FFH?33H
变换到炉温:T=611.76 ℃。
5.7 为什么采用量程自动转换技术
答:计算机控制系统中,生产中各个参数有着不同数值和量纲,这些数据参数都要经过变送器转换成为1-5V的统一电压信号,在经过A/D转换成相应数字量,供计算机控制系统使用。
5.8线性插值法有什么特点?使用中是否分段越多越好?
答:实质是找出一种简单、便于计算处理的近似表达式代替非线性参数。 分段插值法分段越多当然精度越高,但是同时伴随着计算量的大大增加。所示并不是越多越好,实际应用中,应该综合需要的精度和计算机处理能力合理的选取分段数。
5.9 利用单片机C语言实现对分查表法。
解:
#include
int binfind(int val[], int num, int value) {
int start = 0;
int end = num - 1;
int mid = (start + end)/2;
while(val[mid] != value && start < end) {
if (val[mid] > value) {
end = mid - 1; }
else if (val[mid] < value) {
start = mid + 1; }
mid = ( start + end )/2; }
if (val[mid] == value) return mid; else return 0; }
int main( ) {
int nums[] = {1 , 3 , 4 ,7 ,8 , 12 ,45 ,67 ,97 ,123 ,456 ,675 ,1111 , 4534 , 4563}; int result ;
result = binfind(nums , sizeof(nums) , 45); if( result != 0)
printf(\else
printf(\}
第六章作业
6.1 什么是积分饱和?积分饱和有哪几种方式?选择一种进行分析。
答:PID积分项的存在造成的PID运算的饱和。
在数字PID控制系统中,当系统启动、停止或大幅度改变给定值时,系统输出会出现较大的偏差,经过积分项累积后,可能使控制量u(k)>umax或u(k)
即超出执行机构由机械或物理性能所决定的极限。此时,控制量不能真正取得计算值,而只能取umax或umin,从而影响控制效果。 1)积分分离法
积分分离法的基本思想是,当偏差大于某个规定的门限值时,取消积分作用,从而