导言
工业现场常常要收集多点数据,模拟信号或开关信号,一般用到RS485总线,运用一主带多从的通讯方法,该种方法接线便利只需求两根屏蔽电缆线,通讯间隔远最大可支撑1500m,加中继器还可延伸通讯间隔,选用差分信号方法抗电磁搅扰好。但该方法通讯速度不能太快,一般选用主从呼唤的方法收集各子单元的数据,即主单元顺次呼唤各子单元(见图1),呼唤到哪个单元哪个单元上传数据,总线的运用权完全由主单元分配,各子单元不能私行占据总线。假如体系的单元多,主单元循环收集一周的时刻就很长,子单元信息变化时不能及时发送给主单元,导致体系对骤变事情的反响处理速度慢。本文经过总线状况检测、从机主动上发的方法处理。
图1 惯例RS485总线主从方法接口图
硬件规划
整个体系由主单元和多个子单元组成(图2),主单元包含:ARM7微控制器、程序存储器、数据存储器、与子单元通讯RS485、与主单元通讯RS485、体系电源和通讯阻隔电源;子单元包含:MSP430单片机、与子单元通讯RS485、体系电源和通讯阻隔电源。
图2 体系框图
主单元
ARM微控制器是主单元的中心,选用三星32位ARM7TDMI内核芯片S3C44B0,该芯片最高处理速度可达76MHZ,总线敞开,可外扩程序存储器FLASH和数据存储器SDRAM,该体系外扩了SST公司出产的39VF1601和现代出产的HY57V641620HG,2个UART串行接口,运用ADI的阻隔RS485芯片ADM2483进行接口电平转化,总线状况检测运用74HC125三态门芯片。
子单元
子单元的微控制器运用TI的MSP430F133单片机,该单片机处理速度可达8MHz,8K字节片内FLASH存储,256K字节片内SRAM。
电源电路
电源电路选用开关电源供电,开关电源输入电压规模比较宽,输出直流电压5V,经过SP1117-3.3和SP1117-2.5芯片输出3.3V电源。RS485需求的阻隔5V电源经过DC-DC模块得到。
总线检测电路
总线状况检测运用74HC125三态门芯片和单片机的两个I/O(图3),当体系都不运用总线时,每个单元的74HC125都输出高阻状况,此刻总线为低电平,当有单元要运用总线时,他首要检测总线状况,假如总线为低电平,该单元敏捷把74HC125改为输出状况,此刻总线变为高电平,该单元占据总线,往总线上发送数据,发送数据完结再把74HC125改为高阻状况。假如检测到总线是高电平,等候检测,直到总线变低后再占据总线。
图3 总线检测电路
阻隔485电路
运用ADI的ADM2483芯片进行接口电平转化(图4),该芯片归于阻隔485,双电源供电输入输出阻隔。
图4 阻隔485电路
软件规划
主机程序部分需求完成各从机上传数据的接纳、处理和上传。主机接纳子单元信息经过一个RS485串口完成,数据格式为16进制,数据位8位,1 个开始位,1个完毕位,无寄偶校验位,波特率9600bps。选用串行口中止的方法接纳,主机程序初始化完结后等候各从机发送信息,当主机接纳到榜首个字节后,判别该字节是否为设备号,假如不是设备号,接纳个数清零,假如是设备号持续接纳第二个字节;断定第二个字节是否为正确的功用码,假如功用码过错,接纳个数清零从头接纳,功用码正确;接纳第三个字节,该字节为从单元发送信息的字节个数x,核算从单元发送总字节个数为M=X+3+2,3个最初字节和2个 CRC校验码,主机接纳到M个字节后,首要判别CRC校验码是否正确,过错放弃一切信息,正确则把从单元的信息保存到数据区,该次接纳完毕,主机持续等候接纳。
信息的上传经过一个RS232串口完成。当主机接纳到从机信息后,进行数据的处理,发现从单元信息发生变化,主机预备把从机信息发送到上位机,首要从头初始化发送缓冲区,然后经过中止的方法顺次发送信息到上位机,发送信息包含设备号、功用码、发送字节个数、信息字节和CRC校验码。
主机单元接纳数据流程图示于图5。
图5 程序流程图
结语
笔者所规划的体系完成了开关信号的多点监测,一个主机单元,32个从机单元,每个从机单元监测32个开关,该体系共可监测1024个开关,运用 9600bps的波特率。选用主从召换的方法,开关信号监测的反响时刻一般要用20-30s,运用该种总线检测的方法,开关信号的反响速度最慢也不超越 1s,快时只要几百ms,大大提高反响时刻,而且因为不必不时呼唤,总线数据流少,提高了总线的稳定性。
参考文献:
1. 李朝青著,PC机及单片机数据通讯技能,北京航空航天大学出版社
2 田泽著,嵌入式体系开发与应用,北京航空航天大学出版社