前6个时隙内,主节点依次对各子节点进行轮询,获取角度信息并对其进行校验。后2个时隙用于重传,当1个或多个子节点的信息丢失或校验发生错误时,采取“先丢失/出错,先重传”的方式进行重传。
每个时隙内,主节点发送“开始传输角度信息”的命令帧至指定子节点,并启动时隙超时定时器。子节点在接收到该命令帧后,立刻将从编码盘信息中提取出的有效角度信息封装成帧,经由射频模块发送给主节点。当定时器超时时,主节点若还未收到该子节点的角度信息帧,或收到角度信息帧但校验错误,则记录该子节点的编号(以便在重传时隙内令其重发),并转入轮询下一子节点。若接收到正确报文,则直接转入下一子节点的轮询。
4.3 子节点采集时刻同步
组网完成之后,主节点无线发送角度采集广播给各个子节点,指示其以一定频率采集编码盘信息,提取并发送有效的角度信息。由于主节点以无线方式发送角度采集广播,该广播到达各个子节点的时间可能并不一致。若子节点在收到该广播后立刻开始读取编码盘信息,子节点所读到并提取的关节角度并不是同一时刻点的,导致测量机无法准确工作,所以需要有“子节点采集时刻同步”的环节。
我们采取的做法是:在组网完成之后,主节点发送角度采集广播之前, 6个子节点逐一与主节点进行信息交互,子节点求取出信息帧的空中传输时间ti(i为子节点的编号,i=1,2…6;)。当所有子节点接收到主节点发送的角度采集广播后,分别延迟(T – ti)时间再采集编码盘信息,其中T为常数,T>max[t1, t2, …t6]。那么,从主节点发送角度采集广播的那一时刻开始,各子节点都经过了[ti +(T – ti)] = T时间后读取编码盘信息,实现了子节点采集时刻同步。
求取信息帧空中传输时间ti的具体过程如图5所示。子节点i在Ti1时刻发送一个“请求时间校正帧”给主节点,主节点在Ti2时刻收到该帧,并于Ti3时刻回复第一个应答帧,应答帧的内容为时刻Ti2。子节点在Ti4时刻收到应答帧,获得时间Ti2。主节点在Ti3时刻后任意延迟一段时间发送第二个应答帧,应答帧的内容为时刻Ti3,使子节点能在某时刻获取时间Ti3。
注:在此我们假定,信息帧由主节点发送至子节点需要的空中传输时间和信息帧由子节点发送至主节点需要的空中传输时间相同且稳定。且信息帧长度等于主节点发送的“角度采集广播帧”长度。
假设主节点的时钟超前子节点△Ti,信息帧的空中传输时间为ti,可得:
Ti2 = Ti1 + △Ti + ti ①
Ti4 = Ti3 - △Ti + ti ②
由式①和②联立可得:
△Ti = (Ti2 - Ti1 - Ti4 + Ti3)/2
ti = (Ti2 - Ti1 + Ti4 - Ti3)/2
5. 主节点和工控机的通信
主节点和工控机采用RS-232 串行数据传输,串行口通信方式为异步串行通信,速率为19200bps,信息格式为1位开始位、8 位数据位、1个停止位、无奇偶校验位,采用中断方式进行数据传输。以下是串口初始化程序片断:
void ConsoleInit(void)
{
#if defined(USART_USE_BRGH_HIGH)
TXSTA = 0x24; //设置串口发送状态寄存器
#else
TXSTA = 0x20;
#endif
RCSTA = 0x90; //设置串口接收状态寄存器
// SPBRG_VAL = CLOCK_FREQ/BAUD_RATE/64 – 1,BAUD_RATE=19200bps
SPBRG = SPBRG_VAL;
TXIE = 1; //默认情况下串口处于发送状态,使能发送中断
TXIP = 1;
//RCIE = 1; //若需要执行串口接收,使能发送中断
//RCIP = 1;
}
6. 结论
将信息传输无线化,可免去关节臂式测量机的臂内电缆线,实现关节的无限旋转。本文设计的“基于ZigBee技术的角度同步采集传输系统”的无线硬件设计、软件设计解决方案经测试运行稳定,无线通信误码率低、可靠性高、安全性好。在室内测试环境下,无线收发速率可以稳定达到18kbps,重传后误码率不高于10¬-5数量级.
本文作者创新点:将ZigBee无线通信技术与机械测量相结合,设计了一套基于ZigBee技术的角度同步采集传输系统,应用在关节臂式测量机上,实现了关节的无限旋转。