基于AVR单片机的多路遥控开关编解码实现
3.1 串行通信协议
在从遥控台端单片机和负荷缸被控端单片机的通信中.我们选择通信协议为:9600波特率,8个数据位,1位停止位,无奇偶校验。
遥控台端单片机和负荷缸被控端单片机之间的通信方式采用主从定时请求应答方式,遥控台端单片机始终具有主动发送权,定时向负荷缸被控端单片机发送设置16个开关状态命令帧和读取回传指示灯开关状态命令,负荷缸单片机处于被动状态响应状态。
3.2 数据帧格式
在负荷缸的控制中,当发电机带负荷运行时,意外的主开关分闸信号等同于发电机突卸负荷,特别是当满负荷运行时意外的主开关分闸信号等同于发电机的瞬时100%突卸负荷,将导致发电机出现飞车现像,严重的损害发电机的性能,因此信号传输的可靠性非常重要,在本系统中遥控台到负荷缸的命令帧格式采用如图4所示的方法进行通讯握手和数据校验保证遥控台和负荷缸端的数据的可靠传输和控制。
其中:@为帧开始标志符,$为帧结束标志符,D1,D2分别为第一、第二组8个开关状态组成的1个字节的无符号字符,V1,V2为其对应校验码,这里采用其按位取反。当D1,D2,V1,V2都为ASCII码0xff时为请求负荷缸端回传开关状态命令帧,负荷缸端单片机响应命令回传负荷缸端开关状态命令帧的格式为:
其中:@为帧开始标志符,D1为8个回传指示灯开关状态组成的1个字节的无符号字符,V1为D1按位取反较验码,$为帧结束标志符。
3.3 通讯握手和数据较验编程实现
在单片机编程中,为了方便命令帧数据较验,我们在单片机程序中设置了30个字节的堆栈空间用于缓存接收的数据,负荷缸端单片机程序流程图如图5所示,该程序在实际工作中运行稳定,满足工作的要求。
4 结 语
本文利用AVR单片机的高速运行速度,采用74SL244缓冲器和74SL273锁存器扩展单片机I/O口,实现了多路远程遥控开关量采集监控和数字信号编码,采用了握手和数据较验的方法保证了数据的可靠传输和控制,用SN75LBC184 RS 232/RS 485串行通信转换芯片实现了串行通信信号的远距离传送。本文的方法也可用于其他开关量信号采集和自动化控制场所,实现设备的智能监控。
评论