徐自衡,蒋远大,于 强,耿宝明(.中国科学院 空间科学与应用研究中心,北京0090;2.中国科学院大学 北京00049)
基于串口服务器的模拟量自动标定系统设计
徐自衡1,2,蒋远大1,于 强1,耿宝明1
(1.中国科学院 空间科学与应用研究中心,北京100190;2.中国科学院大学 北京100049)
针对卫星载荷控制器的多通道模拟量信号标定的复杂性与远距离操作成本等问题,本文提出了一种基于串口服务器的控制器模拟量自动标定系统。实验结果表明,该标定系统能够按照设计标定流程自动执行,通过数据注入,可以实现自动标定流程的实时修改。利用上位机软件实时采集待标定信号,通过最小二乘算法自动计算出控制器数字量与实际输入电压模拟信号的线性拟合系数—K、B系数。并结合实际输入信号对标定后的计算结果进行精度校验,控制标定相对误差不超过1%。
串口服务器;数据注入;模拟量标定;最小二乘算法
SJ-10卫星驱动控制盒(以下简称驱动控制盒)为服务于SJ-10卫星7台实验载荷设备的通用控制装置。驱动控制盒FPGA采集载荷传感器反馈的模拟量输入信号,转化为固定数据包格式传送至上位机控制软件。模拟量输入信号标定软件(以下简称标定软件)对反馈数据进行线性校正后,将实际载荷状态数据(主要包括温度、压力、湿度等)准确的反馈给实验人员。标定系统基于串口服务器,利用以太网与分布在各实验地点的串口设备进行通信,通过网络控制下位机的模拟量信号输入通路的继电器,电机运行与HP34401A万用表采集。以HP34401A万用表测量得到的信号源的电压Vi作为输入信号模拟量标定的基准值,同时解析驱动控制盒反馈的该信号源经A/D转换后的值数字量Di。得到一系列Vi和Di值后,运用最小二乘算法[1-3]计算出该组数据的线性拟合系数,即K和B系数。将输入信号电压范围等分为16段,进行分段线性化处理[4]。最后对标定结果的进行精度校验。标定结果表明,标定软件能够自动按照标定流程完成线性校正,并控制精度相对误差在1%以内,满足空间科学实验对于物理量测量的精度要求。
基于串口服务器的模拟量标定系统由串口服务器,HP34401A数字万用表,驱动控制盒,直流电机模拟信号输入系统组成。串口服务器设备分散在各个需要模拟量标定的实验设备调试地点,由直连网线接入以太网。串口服务器拥有独立固定IP,并为其下各串口设备配置固定端口号。每组标定系统需要3个串口,包括两个RS232串口,负责与万用表和输入信号控制器通信,一个RS422串口,与驱动控制盒通信。标定过程由上位机软件进行控制,通过标定软件的运算,按照标定流程设置时刻向信号源系统发送控制指令,下位机将控制信号转换为驱动信号发送至各执行机构,为驱动控制盒提供标定所需的输入信号。通过上位机软件的标定界面配置万用表测量基准输入信号电压值的量程、精度、采集频率等参数;控制器模拟量输入信号参数设置、控制盒FPGA通信设置以及控制盒反馈数据包采集频率。配置参数通过以太网发送给指定目标串口服务器对应的各个串口。模拟数字电压信号测量值通过以太网反馈给上位机软件,上位机软件利用最小二乘算法计算线性拟合系数,再通过以太网链接服务器,将信号采集值,K、B系数,标定结果与精度校验结果存储在服务器的SQL Server数据库中[5],SQL Server数据库具有易用性、适合分布式组的可伸缩性,用于决策支持的数据仓库功能,适用于服务器数据库与网络数据库。系统总体结构如图1所示[6-7]。
图1 模拟量标定控制系统总体结构图
标定软件由C#实现,主要功能包括输入信号流程控制,线性拟合系数计算,精度校验与数据存储。
输入信号流程控制包括信号切换与信号源输入电压调节,上位机向网口发送指令数据包,通过串口继电器传向信号源串口,指令控制继电器选择模拟信号输入通道。信号源模块按照标定流程控制直流电机的速度与位移,调节电机连接的电位器输出不同大小的电压值。标定流程包含信号源模块所有的控制逻辑。上位机软件提供合成标定流程索引链表功能,分为静态表,动态表与动作表3部分,通过数据表合成最终形成流程控制输入信号的数据注入索引链表。
线性拟合K、B系数计算模块,利用socket编程与串口服务器建立通信,基于TCP/IP协议。标定模块分为两部分,一部分是基准模拟输入信号电压的采集,通过字符型数据包遥控HP34401A数字万用表完成的。万用表收到指令后,按设定时间间隔通过套接字回传测量数据值。上位机对接收到电压采集值数据包进行解析;另一部分是对控制器输入信号数字量的采集,相应采集值需对固定格式数据包进行解析后得到模拟输入信号数字量。最后该模块自动对两部分采集表按时间进行内连接,形成模拟量与数字量对应的合表,方便后续标定计算。
精度校验与数据存储模块,将标定数字信号的定义域范围等分为16段,每一段上采集n组数字模拟信号对,采用最小二乘法进行线性拟合,得到K、B补偿系数,并计算补偿结果。与万用表采集得到的基准输入信号进行相对误差校验。软件功能模块图如图2所示。
输入信号控制电路,主要控制芯片为dsPIC33F MCU,负责处理外部指令和PID计算,控制驱动电路。注入串口命令主要包括以下3种指令格式:继电器选通指令、电机转速调整指令、电机位移调整指令。其中上位机对下位机发送的指令数据包中数值为十六进制数据包形式向下位机执行机构发送数据注入,指令数据注入格式见表1。下位机信号源模块会对收到的键值对指令进行解析,修改配置地址上的状态值,从而达到控制继电器开合与电机运行状态的目的。
为了实现自动完成多路输入信号的标定工作,整个标定过程对于信号通路的切换,输入信号调整的信息存放在标定流程表中。控制系统设计实现在指定时间点检索流程表中配置的动作,准确控制所有8个通路全部的标定流程。
图2 模拟量标定控制软件功能模块图
表1 数据注入指令格式表
3.1标定流程配置表设计
上位机系统通过检索标定流程总表控制整个标定流程,总表包含3类配置分表:静态配置表,动态标定流程表,动作信息表。总表由1个静态配置表与m个动态流程表与n个动作信息表组成,并以1_m_n为文件名命名。
1)静态配置表
静态配置表中包含输入信号源模块的3种指令的配置3种动作指令条数,格式见表2。
表2 静态配置表格式
2)动态流程表
动态流程表主要由三部分构成动作序号,动作时间码与动作ID。其中动作时间码是指相邻两个执行动作之间的时间间隔;动作ID是每一个动作配置的检索号。动作执行顺序按照动态流程表动作序号顺序进行,当一个动作执行时间等于时间间隔后,顺序向下位机发送下一条指令。动态流程表格式如表3所示。
表3 动态流程表格式
3)动作信息表
输入信号控制模块中有两部分机构需要由上位机进行数据注入控制,继电器开关与电机运行。每类动作都需要一列动作配置数据进行规定。每个动作分别存入一张动作信息表中。动作ID的分配由双字节16进制数值确定。三类动作ID分配分别为0x1XXX,0x2XXX,0x3XXX,对应三类动作表。动作ID检索时通过ID号右移12位确定动作表类型,通过后面12位的数值检索其在该类动作中具体的动作信息表号,即总表中该类动作中的列号,具体动作ID与动作信息表类型如表4所示。
表4 动作信息表格式
3.2加载执行标定流程
在生成好静态配置表、动态流程表与动作信息表后,调用合成表线程。将三种表合成控制总表。总表名以静态配置表数_动态流程表数_动作信息表数.xlsx命名,总表列以静态动态动作顺序排列。
读取静态配置表中各类动作的个数,确定总表中动作信息表列的排放顺序,方便检索。同时动作条数存入全局变量,在整个标定过程中每类动作个数不发生改变。
根据选择标定流程下拉框中的选项索引到对应的动态流程表,并将动作时间码与执行动作ID分别存入对应时间与ID号的数组中。通过上位机计时器,在计时器时间等于动作时间码后自动将两个数组的下标加1,执行下一个动作。
动作流程表的加载是在执行标定流程时进行,上位机读取动态表中动作ID号后,准确检索到所需的指定动作,加载动作信息配置,并将配置信息数据包发送给下位机执行系统。
4.1socket网络编程
标定系统基于串口服务器进行远程标定,故上位机与下位机间的通信是基于TCP/IP网络协议通过以太网进行的。标定系统串口服务器采用上海宽域工业网络设备有限公司生产的PowerPort N1S08-485C-ET型串口服务器,设置串口服务器同时支持服务器和客户机方式,监听并接收远方客户机的网络链接请求,同时也主动请求与上位机的网络链接,在串口接受到数传时作为客户机请求与上位机建立网络链接,上位机作为服务器,监听并接收串口服务器回传的数据;当上位机向串口服务器发送指令时,上位机作为客户端向串口服务器,每1 s发送请求,串口服务器接收到请求后,开始接收指令。两种状态同时独立进行,互不干扰。
上位机程序引入System.Net.Sockets命名空间中的Socket类,该类提供了与低级Winsock API的接口。上位机作为客户端,创建独立线程,每1s向下位机串口服务器发送连接请求:涉及TCP客户端函数为socket()—创建套接字;connect()—请求连接;send()—向串口服务器发送数据;同时上位机作为服务端,监听客户端发来的连接请求,建立连接后与下位机进行数据交换,因该套接字连接建立在已建立好的连接上,所以可以调用已建立socket对象的accept()允许连接,receive()接收数据函数。当网络数据交换结束后调用close()断开连接。
4.2电压输入信号采集
本标定系统采用RS232串口对HP34401A万用表进行遥控操作,采用SCPI(Standard Command for Programmable Instrument)语言对其进行控制,程控接口通过发送字符串命令的形式对万用表的功能、量程、精度、采集频率等进行设置。电压输入信号采集中,电压表功能设置为直流电压采集。模拟电压信号采集后存入SQL Server数据库,万用表基准电压采集数据表结构字段为记录ID号,日期,时间,模拟输入信号电压值与单位。
4.3驱动控制盒数字信号采集
控制盒每秒向标定系统反馈数据包,数据包中包含了下位机系统的全部的键值对,采集结果存入数据库中驱动控制盒电压数字信号采集表中。标定系统收到反馈数据包后对数据进行解析,将对应模拟量输入信号的键值对选出来。对采集到的数字量进行解析存入数据库中,表格字段包括数据包采集的日期时间,反馈数据包解析得到的8路控制盒输入信号数字量;8个模拟输入信号通路对应的标定电压范围段号。模拟量数字量采集上位机界面见图3。
图3 输入信号模拟量数字量上位机采集界面
驱动控制盒输出数字信号取值范围为 0x8000~0x0000,0xFFFF~0x0000,上位机软件将采集得到的数字信号值加0x8000,使取值范围转化为(0xFFFF~0x0000),再将取值范围等分为16段,进行局部线性化,每一段取n组电压模拟信号、数字信号对,利用最小二乘法计算分段线性拟合系数,即K、B系数。最小二乘算法见公式(1):
其中V(k)为所取电压段上第K个电压模拟信号采样值,D(k)为所取电压段上第K个电压数字信号采样值,n(k)为第K对模拟、数字信号计算的线性拟合误差。极小化准则函数:
取K、B为J取Jmin时的系数值;
最后,上位机界面中选中输入信号通路输入信号在16段电压范围上的实际电压模拟信号值与对应通过K、B标定得到的电压标定模拟信号值,K、B系数存入数据表。计算实际电压模拟信号值与标定得到的电压标定值之间的相对误差将相对误差存入数据表。
以标定第5路输入信号为例,标定流程中设置直流电机的速度值为在10 ms内的脉冲数*四倍频。本标定系统采用的直流电机编码器为12线,标定流程配置电机速度为2,即在10 ms内的脉冲数是2/4=0.5个,1s内的脉冲数是0.5*100=50个,约为4圈每秒。该电机配有64:1的减速箱,故大约16 s为1圈,标定流程示意图见图4。标定系统采用电位器为10圈电位器,流程设置电位器每旋转半圈8 s,60 s采集模拟数字电压值,对采集值进行标定,计算每段电压范围上的线性拟合系数,并进行相对误差精度校验。标定结果线性拟合曲线以及标定结果与实际结果比对见图5,可以看出标定结果与实际输入信号拟合良好,满足标定要求。
图4 标定流程示意图
图5 线性拟合与结果比对曲线
利用串口服务器远程标定结果显示,在输入信号电压有效范围内,分段计算出的线性拟合系数能够使标定结果与实际输入信号的真实值之间相对误差控制在1%以内。实验采用自动流程标定,免除人手工调整输入电压并进行先行拟合计算的繁琐工作。通过串口服务器连接以太网,可以实现远距离标定操作,实验人员可以同时对分布各地的多载荷进行标定,降低了调试成本,在空间实验设备调试中具有重要意义。
[1]读德方,赵国荣,周建军.总体最小二乘法在惯导原位标定中的应用[J].电光与控制,2011,18(4):89-92.
[2]刘巧珍,栾松,陈燕光.最小二乘法在PLC模拟量测量系统标定中的应用[J].测控技术,2007,26(5):85-87.
[3]都强,杭柏林.最小二乘法在多传感器测量标定中的应用[J].传感技术学报,2005,18(2):244-246.
[4]Yu D,Sun X,Wang Y.Kinematic Calibration of Parallel Robots Based on Total Least Squares Algorithm[C]//Mechatronics and Automation,2007.ICMA 2007.International Conference on.IEEE,2007:789-794.
[5]吴晨,牛江川,李素娟.ASP.NET 2.0+SQL Server 2005数据库开发与实例[M].北京:清华大学出版社,2008.
[6]Chiu Y,Tsang C W,Nikolic B,et al.Least mean square adaptive digital background calibration of pipelined analog-to-digital converters[J].Circuits&Systems I Regular Papers IEEE Transactions on,2004,51(1):38-46.
[7]Blecker E B,Mcdonald T M,Erdogan O E,et al.Digital background calibration of an algorithmic analog-to-digital converter using a simplified queue[J].Solid-State Circuits,IEEE Journal of,2003,38(6):1059-1062.
Design of automatic analog calibration system based on serial device server
XU Zi-heng1,2,JIANG Yuan-da1,YU Qiang1,GENG Bao-ming1
(1.Center for Space Science and Applied Research,Chinese Academy of Sciences,Beijing 100190,China;2.University of Chinese Academy of Sciences,Beijing 100049,China)
Given that the on-land contrast experiments conducted in different institutes at separate locations,field operation of manual multichannel analog signal calibration is both time and capital consuming.This paper proposes an automatic analog calibration system based on serial device system.The whole calibration process is controlled according to an automatic calibration process designed before of which steps and parameters in the process can be corrected via data injection.The results show that this system can accomplish the calibration automatically on PC software,collect both analog and digital signals and attain the coefficients on real time via least square algorithm.The fractional error between compensated calibration results and the accurate input signal is less than 1%.
serial device server;data injection;analog signal calibration;least square algorithm
TN02
A
1674-6236(2016)11-0042-04
2015-06-29稿件编号:201506238
徐自衡(1990—),女,河北石家庄人,硕士研究生。研究方向:智能检测与控制技术。