数字化舞台布光灯具控制器的设计
接收函数采用中断方式,SJAl000内部包含深度为64字节的接收FIFO缓冲区,芯片无需CPU的干涉就可以自动对收到的信息按先后顺序排队,提供了很强的抗超载能力,因此在主程序中不需要自建接收FIFO,简化了编程。中断服务函数对接收到的数据进行简单的预处理并设置标志位后退出,并在主循环内完成回送数据帧等后续工作。javascript:window.open(this.src);" style="cursor:pointer;"/>
控制台与灯具控制器的应用层协议如下:命令帧由土控台发出,返回帧由灯具控制器回送,长度均为五字节(包括目标地址),其中前两字节是地址码,第三个字节是命令帧的类型,如设置位置帧、查询错误帧等,最后两字节是参数,如位置设置量等。
3 闭环位置伺服控制
在开发初期阶段,曾经使用过分段PID进行闭环位置伺服控制,通过一定的调整,可以获得较好的效果。但是分段PID控制需调整的参数较多,对于不同种类和大小的灯具,调整工作量较大,而且Ki、Kd等系数的物理意义难于向普通调试人员解释,故最终选择了模糊控制算法。它的适应性好、鲁棒性强、调整少,且"中速"、"比较接近"等参数极易为人理解,实测各参数均有较大的适应性,不用过多调整。
典型的模糊控制器分为三个部分:输入变量模糊化、模糊推理和解模糊化。
灯具模糊控制器的输入量为位置残差e和转角速度v,输出是发送给电机驱动模块的PWM值。如图3所示,u表示位置设定值,y表示伺服机构测量值。
所有输入变量的模糊隶属度函数都采用角形且全交叠,如图4所示。
e的模糊集合有五个:{大的正值,小的正值,零,小的负值,大的负值},用PB、PS、Z、NS、NB表示。javascript:window.open(this.src);" style="cursor:pointer;"/>
v的模糊隶属度函数如图5所示。v的模糊集合有三个:{正,零,负},用P、Z、N表示。
最常用的模糊推理方法有Mamdani型和Sugeno 型,两者在很多方面是相同的,不同的是Mamdani型的模糊推理后件是模糊量,而Sugeno型的模糊推理后件是线性变量或常量。比如推理规则:If Input1=x and Input2=y,then Output is z=ax+by+c中,Input1和Input2是前件,是模糊变量,z是后件,是确定的值。如果系数a=b=0,则z=c为常量,称为0阶Sugeno模型。
每条逻辑规则的输出z的权重wi由AND算子决定,wi=AndMethod(F1(x),F2(y)),其中F1,2()是Inputs1和Inputs2的模糊隶属度函数。
对于结论相同的逻辑规则的输出,权重wi由OR算子决定,wi=OrMetod(wi1,wi2)。
Sugeno模型的解模糊过程较简单,最终的输出值是各结论输出zi的加权平均值:
Output=∑wi zi/∑wi
由于不需要像Mamdani型那样计算面积重心,Sugeno型的解模糊算法相对简单,运算量较小。
Mamdani型和Sugeno型有各自的优势,Mamdani型的优点为:
· 直观、符合人的习惯
· 广泛被接受
Sugeno型的优点为:
· 很高的运算效率
· 可以协同线性控制理论(如PID)
· 可以使用优化和自适应技术
· 可以保证输出平面的连续性
· 可以进行数学分析
javascript:window.open(this.src);" style="cursor:pointer;"/>
对于本项目,通过在PC机中进行的仿真和实际测试表明,二者的输出平面和控制效果相近。而Sugeno型运算量少,更适合在单片机中使用。
模糊控制器的输出为PWM值,采用0阶Sugeno模型推理,有五个输出值:{反向高速,反向中速,停,正向中速,正向高速},由NRun、NWalk、Prone、PWalk、PRun表示,模糊逻辑推理规则见表1。
表1 模糊逻辑揄规则
PB,5 | PS,4 | Z,3 | NS,2 | NB,1 | |
P,3 | NRun | NRun | Prone | Prone | PRun |
Z,2 | NRun | NWalk | Prone | PWalk | PRun |
N,1 | NRun | Prone | Prone | PRun | PRun |
对于不同的灯具和自由度,NWalk和PWalk的数值是可调参数,从EEPROM中读取,因此不能使用查表方式编程,而要进行实时运算。为提高速度,在程序中所有的四则运算都是字节型和整型,避免使用浮点量,标准8051内核可以用一个指令完成,最长为4个机器周期。模糊隶属度值用0~255表示,而不是0~1,在运算最后一步再作归一化处理。
由于在模糊控制器中缺乏积分环节,使得其无法对较小的残差作出合理的反应。例如由于电机、机构的静摩擦力的存在,当残差较小时,电机无法启动。因此在控制器的输出端叠加一个非线性的积分环节,只在残差e较小、速度v为0的时候起作用,可以再处理这种情况。
图6是灯具伺服特性的实测曲线(俯仰自由度曲线)虚线表示设定值,实线是实际位置测量值。