程序设计
现在我们来编制简单对象的控制软件。编制步骤区分为下列两步。
(i)用PASCAL编写程序。
(ii)把在(i)中得到的程序进行编译,展开成汇编语言,控制对象如图4.24所示。水平面上的质点(质量为m),在力“的作用下作滑动运动,质点的位置用电位器(当然也可以用编码器)测量,通过ADC输入到PCOM中。输出量通过DAC和功率放大器再输送到马达中.若对PCOM中的ADC用ior进行读数,则质点的位置可以用32位的整数形式得到,当在DAC中用32位的整数写人时,即可构成产生力的装置。
控制算法若设质点的位置为x,则运动方程式为
m元=(41)
如果改写成状态变量形式,x₁△x,x₂全t,则得到
则变成下列形式:
=Ax十Bw
若轨迹规划为
x*(t)=[xi(t)x*(x)]
则为了得到x*所需要的力*必须满足
*一Ax*+B*(4.4)
为了保证1→C时△x→0,A+BF的特征值必须具有项实部。满足这个条的F通常有无穷多个,从这些F中到底选取哪一个是一个重要问题。解决这个问题的方法之一是选择F使得评价函数具有最小值。至于如何选择评价函数,这里将不对这个问题进行讨论。在工程上,通常都是通过实际操作,根据运行误差进行抉择。总之,不管怎样,总是要从1→0时,△x→0的解中寻求正确答案,这一点是不会改变的。
(4.9)式中A十BF的特征值,可以通过下列特征方程式进行求解:
det(A十BF一λ)=0(4.10)
若对该式进行计算,则得到
(411)式的解全都具有负实部的条件是f<0,f₂<0.
根据以上讨论,可以导出下列控制规律:
控制用程序这个例子可以作为控制的一种特殊情况,它是在x*=0,u*=0,x=△x→0,#=△n的情况下编写程序的,编出的程序列于图4.25中,因为采样同隔短,所以可以作为
1pTogramcontro1; 2varx1,x2,1x1,:lpteger; 3tintfig,errflg:boolean; 4proceduretimerint;interrupt; 5begin 6iftintf]gthenerrf]g;开true 7elsetintflg:=tTue 8end; 9procedurefeedback 10conststīme=5(*samplingtfme*) 11fp1-10:(*feedbackgain*) 12fv1异-80; 13begin 141xl:x1; 15x1=ioread(1); 16x2:a(x11x1)dìvstime17:=fpI*x1+fvI*x2; 18iowrite(1,u) 19end; 20begin 21x1;=ioread(1); 22tintflg:false; 23errflg;=false; 24enbint; 25whifenoterrf1gdo 26iftintflgtheobegin 27feedback; 28tintfig=false 29end 30end. |
图4,25质点的控制程序 |
连续系统进行处理。这里在使用PASCAL语言时,还配备了作为标准过程的ioread,iowrite和enbint,ioread是一个接受来自以参数表示地址的10设备数据的过程。iowrite表示的过程则是把第二个参数表示的数据。送到第一个参数表示的地址的
10设各。enbint表示的过程是使中断屏蔽im为1,并进人允许中断状态,作为大范围变量,备有x1,x2,1x1,u,tintflg,errflg.在x1中存放着最新采样位置数据,在1x1中存放着比x1超前一次的采样位置数据。这里,在使用的装置中没有速度传感器。因此速度量要从x1和1x1中估计出来(逋过简单的差分),估计值放到x2中,u为控制量。tintflg表示进行定时中断时的true,与此对应,当处理全部进行完了时,变成false,errflg表示当产生某种误差时,在这个例子中,则表示对于定时中断处理尚未完全结束而再次进行定时中断时,变为true.在执行这个程序时,首先要从21—23行中变量的初始化开始。为了从第20行开始执行程序,必须将这个人口地址写成0地址,但是这项工作是由编译程序来完成的,在下面的第24行中,变成为允许中断状态,errflg为false(不产生误差),tintflg为true(存在定时中断),这时执行feedback。当im=1(允许中断),从定时器发出中断要求时,程序的执行转移到timerint这种过程。为此,产生中断时,在跳转前的表(地址1)中,timerint的入口地址必须写进去。根据写出的proc-eduretimerint和后面的interrupt,编译程序也能完成这些工作。过程timerint使tintflg为true,从而具有定时中断并且将这种状态记忆下来。此外,对于定时中断处理,当其尚未结束时,若再次发生定时中断,则此时误差的记忆也能由timerint子程序完成。
至于feedback程序,它是在第15行将质点的位置读入,在第16行估计质点的速度。计算这两个量与反馈增益的线性组合,然后在第18行中,把求得的#送进马达中。
编译程序将图4.25上的程序正文读人,并且变换成排列有序的指令。‘对于这里列举的例子,其变换结果列于图4.26和图4.27中。地址0和地址1分别是复位时和产生中断时的跳转地址,即地址25(h)和02(H)。从地址2,开始,引入程序的代码和常数,从地
址40(₃开始变成为变量区。如果把它们存人PCOM的存贮器,则图4.24中的质点在x=x=0附近成为稳定的。
2
8 9 10 f1 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | timerinte0
lor1 pQpa66 pusha66 |
30 3Ee32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
popa pusha iow ret feedbackC 5 -10 80 controle0 entior popa.pusha pOpapusha pOpaenl Contro1e1prsha not fjppushafjp cup pusha ujpcónrrol_e2 ret controh_c 0 | 69 69 1
8 I6f contro!_c 70 .controI_c 71
7 control_e270 Cottrole 0.feedbackcontrol_ccohtrol |
e0 | ||
pusha6847 sub48 pushafeedback_o49 div50 p0pa6751 pushafeedback_c+152 pusha66 mul53 pushafeedback_c+2 pusha6754 muIadd |
图4.26经过编译程序得到的结果(左边数字为地址)
这一节讨论的程序是非常简单的程序,实际的程序要复杂得多,但是,为了掌握将机械与计算机相结合的必要知识,这个例子还是非常重要的。此外,在图4.25中25—29行那样的条件成立以前,是不会执行无意义的命令的。当计算机的功能未充分发挥时,还可以再让它作些工作。关于这个问题,将在第五章中加以说明,在那里将介绍一种并行程序设计方案。
随便看看
- 2024-10-11外啮合中高压齿轮泵
- 2024-10-21大负荷闭式系统低速大扭矩液压马达的散热分析
- 2024-09-20小松6系列7系列挖掘机故障代码解析
- 2024-10-08理想液体的伯努利方程
- 2024-09-20日立挖掘机-2、-3系列——维修故障代码解析