基于双串口单片机C8O51F34O电梯远程控制的系统设计
1.系统硬件设计本系统设计总框图如图1所示。
通PLC通过主控芯片C805 1F340的串行口进行RS-232通讯,而主控芯片与电梯控制器的串口进行RS-485通信。RS-232通讯,也是通过主二/四线转换电路控芯片的串行口,若用普通的单串行口单片机,即使是增加双向三本设计也达不到要求,所以这里采用带双串行口的C8051F340单片机作为主控芯片,使三方通讯在不同的串行口进行。
1.1 主CPU系统C8051F340芯片是完全集成的混合信号系统级MCU芯片,高速、灵活、低价。具有8051兼容的CIP-51内核(可达25MIPS)。它的速度快。新增了FLASH存储器,具有在系统重新编程能力,可用于非易失性数据存储,并允许现场更新8051固件。片内JTAG调试电路允许使用安装在最终应用系统上的产品MCU进行非侵入式、全速、在系统调试。该调试系统支持观察和修改存储器和寄存器,支持断点、观察点、单步及运行和停机命令。而C8051F340更是典型应用于工业系统中的控制类系统。鉴于以上优点,并结合设计目标,特选用此款单片机。C8051F340主控单元电路如图2所示:
1.2 主控系统与PLC间的通讯电路由于串行通讯方式具有使用线路少、成本低,特别是在远程传输时,避免了多条线路特性的不一致而被广泛采用。在串行通讯时,要求通讯双方都采用一个标准接口,使不同的设备可以方便地连接起来进行通讯。RS-232-C接口是目前最常用的一种串行通讯接口。它的全名是"数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准"。
实际在计算机与终端通讯中一般只使用上RS-232-C的3-9条引线。接口的电气特性在RS-232-C中任何一条信号线的电压均为负逻辑关系。即:逻辑"1",-5--15V;逻辑"0"+5-+15V。噪声容限为2V。
因此需要用MAX232芯片进行电平转换。C8051F340主控单元与PLC间的通讯电路如图3所示:
1.3 主控系统与内呼板间的通讯电路C8051F340主控单元与内呼板间的通讯电路如图4所示:
根据实际情况,要求距离远,精度高,抗共模干扰能力增强,传输速率快等特殊要求,在此处作者采用了485进行通信,RS-485和RS-232相比,具有以下特点:
(1)接口信号电平比RS-232-C降低了,就不易损坏接口电路的芯片,且该电平与TTL电平兼容,可方便与TTL电路连接。
(2)RS-485的数据最高传输速率为10Mbps。
(3)RS-485接口是采用平衡驱动器和差分接收器的组合,抗共模干扰能力增强,即抗噪声干扰性好。
(4)RS-485接口的输距离实际上可达3000米。另外RS-485接口具有多站能力,这样符合我们利用单一的RS-485接口建立起设备网络的要求。
1.4 串口自检电路设计设计要求串行口具有自检能力,即在系统启动或允许检查状态下,高速单片机C8051F340可以检测自己的串行口,即发送任意一个字节,并接收这一字节,若发送接收一致,则向PLC发送以及向内呼板上的单片机发送一个信号,并等待对方通过自检的信号,若对方亦过白检,则自检结束,进入正常工作状态。
1.5 非接触式IC卡输入输出电路非接触式IC卡,即射频卡或感应卡,它成功地将射频识别技术结合起来,解决了无源和免接触这一难题,是电子器件领域的一大突破。
卡片的电气部分由一个元件和AISC组成,卡片中的天线是只有线圈,很适合封状到卡片中。ASIC由一个高速(106KB波特率)的接口,一个控制单元和一个EEPROM组成。读卡器向IC发一组固定频率的电磁波,卡内有一个IC串联谐振电路,其频率与读写器的频率相同,这样便产生电磁共振,从而使电容内有了电荷,在电容的另一端接有一个单向通的电子泵,将电容内的电荷送到另一个电容内储存,当储存积累的电荷达到额定电压时,此电源可作电源为其他电路提供工作电压,将卡内数据发射出去或接收读写器的数据。非接触式IC卡控制输入输出电路如图5所示:
2.系统软件设计2.1 主程序设计流程图主程序设计流程图如图6所示。
2.2 中断处理模块的通讯首先要解决时间冲突问题,硬件接受或发送一个字节的时间为1ms左右,而软件接受或发送一个字节的时间仅几μs,这就为双串口同时通讯提供了条件。同时通讯实际上是将CPU时间分成很小的时间片,假设较快的串口发送或接受一个字节的最长时间为TRbyteMax,则CPU最长时间片一般应小于TRbyteMax/2,当然在接受或发送完一帧数据之后的间隙,CPU时间片可以适当延长,作一些必要的数据处理。其次要解决数据冲突问题,2个串口通讯分别使用各自的接受发送数据缓冲区和控制变量,以减少中断保护数据量和防止数据冲突。当主程序、串口中断处理程序和其他中断处理程序往存储器(与上位机的通讯用存储器)中写数据时,需在尽量短的时间内关闭另一个串口中断,关闭中断时间应小于几百μs,防止其他程序数据没有写完之前串口读此数据。串口通讯数据帧中采用高可靠性的循环冗余校验(CRC)技术,极大地降低了数据误码率,在连续运行几个月的大量数据中没有发现误码。