基于AVR单片机的负荷缸多路遥控开关编解码实现
扫描二维码
随时随地手机看文章
1 问题的提出
我们通过把由发电机供电的通电极板放到负荷缸水电阻中,用充气升降极板和补给水调节水电阻大小的方法控制试验发电机所带负荷的大小,对发电机的性能进行试验。体积庞大的负荷缸一般放置在码头,在船舶发电机的负荷试验中需要在船舶配电板处控制负荷缸的各个部件,所以我们在船舶配电板处安装了负荷缸遥控台,通过一条40芯约100 m长的多芯电缆连接负荷缸和遥控台。控制线路连接如图1所示。
在多年的使用经验中发现存在以下问题:
(1)因为电缆芯线繁多,工人接线时往往出现接错线的问题,导致遥控台没法正常工作,需耗费时间进行调试。
(2)这条多芯的电缆非常大,在每次试验安装的时候需要耗费很多人力进行拉放。
(3)经过长期多次的使用,会出现电缆芯线折断无法正常使用的现象,导致在试验期间需花费人力进行检查。
鉴于以上存在的问题,我们提出了以下的设想:寻找一种方法对这些多路遥控开关信号进行编码传送,然后在另一端进行解码,使得可以用两芯或较少的芯线来取代这条多芯电缆。
2 解决方案
对于以上遥控台和负荷缸连接原理图,因为在遥控台上由负荷缸供电的低水位回传信号指示灯等可以容易地改为由遥控台端供电,而在负荷缸端只提供开关量信号,于是实际的问题便变成了实现一种对多路遥控开关和返回开关量信号进行编码。刚开始考虑到采用T型电阻网络对这些开关进行采样,用A/D,D/A转换的方法实现,但为了保证信号长距离传输的可靠性,决定用数字信号的方式对这些开关量进行编解码,随着技术的进步使这种设想成为可能,经过综合比较,我们决定选用功能强大,价格便宜的ATMEL Mega8单片机对这些开关信号进行编解码和信号传输控制。
DIP封装的ATMEL Mega8单片机只有28个管脚,除掉电源和用于单片机之间通信必要的串行端口引脚,实际可用来做信号采集和输出的管脚远远不够,然而ATMEL Mega8单片机的12 MHz的高速运行速度相对于开关动作的速度来说极其快速,通过74SL244缓冲器和74SL273锁存器共用单片机管脚,在程序中控制缓冲器使能端,控制锁存器时钟信号的方法扩展单片机I/O口。
负荷缸端单片机具体连接如图2所示。
图2中2个74SL273锁存器和1个74SL244缓冲器共用单片机PB和Pc端口低四位管脚,单片机通过PB4,PD3,PB5管脚分别控制第一个、第二个锁存器的时钟脉冲输入端和缓冲器和使能端。我们在程序中设置单片机PB和PC端口低四位管脚为输入状态,控制74SL244缓冲器的使能端为低电平,并屏蔽两个74SL273锁存器的时钟输入,从而通过74SL244缓冲器采集负荷缸工作状态开关信号;在程序中设置单片机PB和PC端口低四位管脚为输出状态,控制74SL244缓冲器的使能端为高电平,并让单片机给其中一个74SL273锁存器的加上时钟输人信号,从而通过74SL273锁存器输出一组开关状态控制信号。
因为在负荷端和遥控台的连接距离接近100 m,超过串口RS 232信号可靠传送到达的距离,我们增加了SN75LBC184 RS 232/RS 485串行通信转换器芯片,SN75LBC184输人和单片机TXD、RXD管脚相连,单片机PD2引脚控制SN75LBC184芯片的收发使能端实现收发功能的转换,用两芯的电缆连接负荷缸端和遥控台端SN75LBC184芯片的输出端口,实现了单片机串口信号的远距离传送和电路的半双工工作,具体连接如图3所示。
3 串行通信协议及编程实现
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串行通信转换芯片实现了串行通信信号的远距离传送。本文的方法也可用于其他开关量信号采集和自动化控制场所,实现设备的智能监控。