摘要:介绍了舞台布光系统中的重要部件——数字化灯具控制器的设计思想和实现方案,采用流行的CAN总线实现了分布式控制,利用模糊控制算法实现了灯具各自由度的稳定的位置伺服。
随着广播电视事业的不断发展,电视节目的制作越来越多样化,对演播厅的功能及技术要求也越来越高。舞台布光系统是演播设备的重要组成部分,它的作用是通过对垂直吊杆、机械化灯具的多动作控制,利用聚光灯、柔光灯等设备进行大面积的灯光投射,制造满足摄像机光度要求的背景光线。
综艺演播厅的规模目前正逐步扩大,从600m2增加到了1000m2、1500m2,直至2000m2。一个1000m2的演播厅需要500~600盏各式灯具。如果采用集中式控制,势必造成控制电脑重负,现场布线混乱,因此新型的布光系统均采用分布式控制,灯光师在控制台前操作,控制台利用现场总线将控制信息下发,提升机控制器和灯具控制器接收指令后自动运行到设定的位置和角度,完成位置伺服。 本文主要介绍舞台布光系统中的重要部件--基于现场总线的数字化灯具控制器的设计思想和实现方案。
1 整体方案
本文介绍的灯具控制器具备5个自由度的控制能力:水平、俯仰、调焦、左扉和右扉(左扉、右扉指灯具前方用于遮挡光路的扉页),同时具备过流检测、超速检测、传感器失效检测等功能,并且可以与控制台进行双向通讯,接收控制台发来的指令或上报灯具状态。
灯具控制器主要由位置测量、电机驱动、CAN总线通信接口等功能模块组成,整体方案如图1所示。它采用基于8051内核、内置A/D转换电路的80C552作为主CPU。
灯具各自由度输出转轴装有线性型精密电位器进行位置测量(对于调焦测量,使用齿轮齿条机构将直线位移转换为角度位移)。电位器的活动范围为270度,使用10bitA/D转换器,最高理论精度为270度/210=0.263度。
CPU将实测位置和控制台传来的设定位置进行比较,计算出应如何驱动伺服电机。
电机的控制电路采用PWM方式,每个电机由一个H桥驱动,效率高、发热小、易于调试。由于要控制5个直流减速电机,因此需要5组双相共10路PWM信号,由一片10通道PWM芯片生成。该芯片实际上是由新型的高速AVR单片机AT90s2313构成的虚拟外设,通过软件编程仿真PWM功能。80C552利用串口将各个通道的PWM值发送给AT90s2313,AT90s2313在内存中生成相应的PWM信号序列,定时向外输出,实测PWM重复频率为9.8kHz。程序中设计了特定算法,可以保证功率驱动模块的某个桥臂关断后,对侧桥臂要延时一段时间才会开通,避免由于开关速度的影响导致上下桥臂直通。
由于直流电机的启动电流和换向电流远大于正常工作电流,过高的启动电流除了会造成系统成本增加外,还有可能烧毁换向器;另外,直流电机的电磁力矩与电流成正比,过高的启动力矩也对机械结构的稳定不利。因此,在电路中设计了过流斩波装置来限制启动电流。
使用现场总线进行分布式控制是本系统的主要特色之一,本方案中选用了CAN总线,灯具对外连线除电源线外,只有一根屏蔽式双绞线,布线方便、成本低廉、扩展性强。CAN总线接口电路由通信协议控制芯片SJAi000和总线收发器82C250等组成。
由于每个灯具要有独立的CAN总线地址,且每个电机、减速器、机械安装尺寸均有一定的个体差异,因此不同的灯具上会有不同的控制参数。在设计中,应尽量减少需要调整的参数,对于一定要调整的部分,应将它们存储在EEPROM中,每次开机读取。
EEPROM中的参数关系到灯具控制器能否正常工作,一旦出厂,一股不建议更改。但是为了方便技术人员进行调试,在电路中仍设计了开发人员接口,在现场无需拆下,且无需编程器就可以使用计算机串口读取、修改EEPROM中的内容。
2 CAN总线通信软件的设计
CAN总线是德国Bosch公司在20世纪80年代初为解决现代汽车中众多的控制与测试仪器之间的数据交换问题而开发的一种串行数据通信总线,是最早在我国得到应用的现场总线之一。它实现了ISO/OSI七层模型中的物理层和数据链路层,总线上任何节点均可主动向其它节点发送信息,数据采用短帧结构,最长8个字节,不易受干扰,故障节点可自动脱离总线。
CAN总线通信控制器SJAl000由82C200发展而来,它兼容82C200的电气特性和工作模式,并对功能进行了扩展。它集成子CAN协议的数据链路层的全部功能,可自动完成数据编码、成帧、冲突检测、循环冗余校验、出错重传等工作。总线收发器82C250负责竹l电子和CAN总线差分电平之间的转换。
CAN总线软件包主要包括初始化函数、发送函数和接收中断函数。
初始化函数的主要工作流程见图2。
??? SJA1000有两种工作状态:复位状态和正常状态。复位状态在上电后直接进入,也可以通过软件置位进入。SJAl000的所有初始化操作需在复位状态完成。其中,接收滤波码来自EEPROM,每个灯具有不同的接收滤波码;为配合82C250,输出模式寄存器设置成推挽模式,正极性输出。初始化完成后,转入正常状态,填写发送缓冲区,释放接收缓冲区,即可正常发送接收。
发送函数首先判断上次发送是否完成,若完成则在缓冲区内填写新的数据,启动发送;否则等待直至超时,发送完成与否由状态寄存器指示。
接收函数采用中断方式,SJAl000内部包含深度为64字节的接收FIFO缓冲区,芯片无需CPU的干涉就可以自动对收到的信息按先后顺序排队,提供了很强的抗超载能力,因此在主程序中不需要自建接收FIFO,简化了编程。中断服务函数对接收到的数据进行简单的预处理并设置标志位后退出,并在主循环内完成回送数据帧等后续工作。
控制台与灯具控制器的应用层协议如下:命令帧由土控台发出,返回帧由灯具控制器回送,长度均为五字节(包括目标地址),其中前两字节是地址码,第三个字节是命令帧的类型,如设置位置帧、查询错误帧等,最后两字节是参数,如位置设置量等。
3 闭环位置伺服控制
在开发初期阶段,曾经使用过分段PID进行闭环位置伺服控制,通过一定的调整,可以获得较好的效果。但是分段PID控制需调整的参数较多,对于不同种类和大小的灯具,调整工作量较大,而且Ki、Kd等系数的物理意义难于向普通调试人员解释,故最终选择了模糊控制算法。它的适应性好、鲁棒性强、调整少,且"中速"、"比较接近"等参数极易为人理解,实测各参数均有较大的适应性,不用过多调整。
典型的模糊控制器分为三个部分:输入变量模糊化、模糊推理和解模糊化。
灯具模糊控制器的输入量为位置残差e和转角速度v,输出是发送给电机驱动模块的PWM值。如图3所示,u表示位置设定值,y表示伺服机构测量值。
??? 所有输入变量的模糊隶属度函数都采用角形且全交叠,如图4所示。
e的模糊集合有五个:{大的正值,小的正值,零,小的负值,大的负值},用PB、PS、Z、NS、NB表示。
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)
· 可以使用优化和自适应技术
· 可以保证输出平面的连续性
· 可以进行数学分析
??? 对于本项目,通过在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是灯具伺服特性的实测曲线(俯仰自由度曲线)虚线表示设定值,实线是实际位置测量值。