课题研究-基于PC机—单片机的分布式通用计数系统

上传人:NU****AN 文档编号:128124858 上传时间:2020-04-08 格式:DOC 页数:7 大小:75.04KB
返回 下载 相关 举报
课题研究-基于PC机—单片机的分布式通用计数系统_第1页
第1页 / 共7页
课题研究-基于PC机—单片机的分布式通用计数系统_第2页
第2页 / 共7页
亲,该文档总共7页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《课题研究-基于PC机—单片机的分布式通用计数系统》由会员分享,可在线阅读,更多相关《课题研究-基于PC机—单片机的分布式通用计数系统(7页珍藏版)》请在金锄头文库上搜索。

1、基于PC机单片机的分布式通用计数系统基于PC机单片机的分布式通用计数系统 摘 要:介绍了基于PC机-单片机的分布式通用计数系统的研制。本系统以PC机为上位机,以AT89C51单片机为下位机,并采用RS-232C总线实现多机通信,系统运行可靠,可广泛应用于人流和物流等的计数与管理。关键词:PC机;单片机;分布式系统;计数1引言在工业生产中,对产品数量及相关信息的计量是很重要的;在日常生活中,有关数量信息的统计在许多场合也是十分重要的,如大型超市的入市人数统计,大型多层停车场入停车辆数量的统计等。目前,工业上常采用“传感器+电子计数器”的组合实现对产品数量的计量。如单片机自动计数器1,它主要是针对

2、在传送带上的产品的计数;又如单片机产品计数系统2,它是针对药品包装生产线上的产品的计数,它们都有特定的使用范围,专用性强。在大规模生产的今天,常常需要实现多点数量信息的统计,而专用的计数器(系统)往往不PC机MAX232计数器1MAX232计数器2MAX232计数器N图1 系统组成框图RS-232 总线能满足生产和生活的需要。本文介绍PC机单片机分布式通用计数系统的研制。本系统主要由作为下位机的多台单片机计数器和一台作为上位机的用于集中管理与控制的PC机组成(如图1所示)。上位机以PC机和Windows操作系统为硬件和软件资源,下位机采用ATMEL公司的AT89C51单片机,上下位机的通信采用

3、RS-232C的总线标准。2计数原理传统的工业计数器,一般只采用一个传感器来探测,其结果仅仅反映传感器动作的“次数”。如用一般的工业计数器对进出停车场的汽车进行统计,要在进、出口各安装一个传感器,反映进出车辆的数量,而通过进、出车辆数的统计才能反映停车场里车辆的数目和还有多少剩余的停车位。显然,在类似的场合中,所需的是一个包括“模”和“方向”两个参数的矢量。因而,至少需要两个传感器才能满足要求。单片机通过判断两个传感器动作的先后顺序,可以判断目标行进的方向并进传感器1传感器2图2 传感器并列工作原理目标行进方向反射镜1反射镜2行计数。本系统采用两个传感器并列的方式工作,如图2所示。3单片机计数

4、器设计本系统的单片机计数器一方面要实现计数功能,另一方面还要实现与上位机通信的功能。这里采用AT89C51为下位机。3.1计数信号的获取计数信号由每个单片机计数器配套的一对美国SUNX公司的CX-RVM5反射式红外光电传感器提供。当检测目标通过时,两个传感器依次动作,单片机就可以根据此信号进行方向辨别和计数。这里使用的传感器具有自动抗相互干扰的功能,可以并排靠近在一起使用;工作时需专用的反射镜(这里采用天津大学生产的TD-02型反射镜)。传感器的部分参数4如表1所示:表1 传感器的部分参数有效范围 /m有效目标 /mm反应时间 /ms工作电压(DC) /V最大输出电流 /mA0.1550112

5、V2410%1003.2单片机计数器硬件设计图3 计数器的硬件组成框图单片机光电传感器LED数码显示器功能按键MAX232电平转换器LED显示器振荡电路计数器的主要硬件组成如图3所示。其中传感器的信号经光电耦合器4N25实现电平转换和隔离(如图4所示)后,分别送往单片机的 INT0和INT1。LED数码显示为3位动态显示,显示范围0999;功能按键共5个,用于设定计数器的功能;振荡电路采用11.0592MHz晶振,以便在串行通信时产生精确的波特率。图4 传感器信号光电耦合电路N开始系统初始化等待中断处理中断返回传感器探测开始计数?中断入口Y图5 单片机计数器工作流程图3.3 单片机计数器系统软

6、件设计本单片机计数器系统的软件,除开始计数前对传感器的探测采用查询方式外,其他功能均由中断实现。系统软件采用汇编语言设计,由主程序和各中断服务程序组成,其流程图如图5所示。计数器的软功能通过按键输入实现,可以设置计数器“运行/暂停”,计数结果“清零”、“加一”和“减一”;另外,还可以设定计数器三种不同工作模式,分别是“单向加”、“单向减”和“双向加减”。计数器的核心程序是两个外部中断服务程序,它是实现计数的关键。其中外部中断0的服务程序流程图如图6所示,外部中断1的程序与之相仿。NYYN外部中断0入口设置标志位0,100H查询标志位1,(01H)=1?清标志位0和标志位1设置延时,保持标志位0

7、中断返回设置成单“加”的模式吗?调用减“1”子程序图6 外部中断0服务程序流程图4通信系统设计通信是分布式系统的核心。这里采用最常见的RS-232C串行通信总线实现PC机与多个单片机计数器之间的主从式通信。RS-232C总线原设计为短距离信息传输用,在19.2kbps数据传输速率下,最大传输距离为15m。实际应用时,在低数据传输率和良好线路质量的条件下,该总线在150m200m的距离内仍能准确通信3。因而,RS-232C可以用在一定范围构建经济灵活的分布式系统。4.1单片机与RS-232C总线的接口由于RS-232C标准的制定早于TTL/CMOS集成电路,所以PC机的串行口提供的不是TTL/C

8、MOS电平,而是标准的RS-232C电平,其逻辑0电平为+3+15V,逻辑1电平为-3-15V;而单片机则为TTL/CMOS电平为0V和+5V。这里采用单一电源供电的MAX232芯片可实现两者的电平转换和驱动。图7 单片机与RS-232总线的接口实践表明,当多个单片机计数器分别通过MAX232并联到PC机的RS-232C总线时,是不能通信的。事实上,只要多于一台下位机,通信都不能实现。这是因为RS-232C电平输出端短路了。在串行通信过程中,发送线路空闲时处于逻辑1状态,对于MAX232的发送端来说,就是处于低电平-3-15V。当其中有机器发送数据时,其数据的逻辑0电平为+3+15V,由于多机

9、通信时,所有MAX232的发送端是连在一起的,而它们又是共地的,于是在发送逻辑0的瞬间,发送数据的那块MAX232与其它空闲的MAX232的发送端之间就产生了630V的电压,结果除了产生很大的短路电流之外,更重要的是把+3+15V的逻辑0电平拉低,导致通信失败。本系统采用二极管隔离的方法解决以上问题。具体做法是,每个MAX232的RS-232C电平发送端都通过一个隔离二极管接到PC机RS-232C总线上,如图7所示。当发送空闲时,所有MAX232的发送端都处于低电平,所有二极管截止,由于下拉电阻R1的作用,PC机的RS-232C接收线处于低电平。当其中有机器发送数据,线路的低电平仍然由R1产生

10、;在高电平瞬间,发送数据端的二极管导通,而其它二极管反向截止,高电压全部降落在电阻R1上,在避免输出短路的同时又为线路提供了高电平。4.2 通信协议设计RS-232C是物理层通信协议,要进行正常的数据通信,设计者还要制定高层协议。本系统采用主从式的链路配置方式,上位机作为主站控制整个网络。下位机不主动发起数据传输,只有当上位机向其发送命令进行轮询时,下位机才以响应的形式回应上位机。采用这种方式通信的优点是,同一时间里只有一台下位机与上位机通信,不会出现多台机同时通信而引起的数据冲突现象。由于采用了轮询方式通信,上位机的数据更新周期很短。因此,可以采用简单的“命令-回应”的形式进行通信,以简化通

11、信过程。协议中规定了两种帧格式:命令帧和数据帧,如表2所示。其中命令帧只能由上位机发出,它由下位机地址字段和和命令字段两部分组成。下位机地址编号从01H开始,而地址00H为公共广播时使用,以实现上位机对下位机的统一控制。数据帧由下位机以回应上位机的形式发出,它由下位机地址字段和数据字段组成。表2 命令帧格式和数据帧格式帧格式字段名字段长度 / bit命令帧下位机地址8命令字段8数据帧下位机地址8数据字段28采用以上简单的帧格式通信,减小了数据传输量,可以降低数据传输速率以扩大通信距离;另外,在数据传输速率低,数据传输量小和数据更新周期短的综合条件下,可以把差错控制这一环节省略,进一步简化通信过

12、程。本系统采用1200bps的数据速率和无差错控制的形式通信,效果良好。本系统采用标准异步串行通信模式,其格式为:1位起始位、8位数据位和1位停止位,无奇偶检验位。4.3 通信软件设计上位机通信软件在Windows2000平台上用Visual C+6.0编写。在Windows环境下,操作系统完全接管了各种硬件资源,一般不允许用户直接控制串口中断。Visual C+6.0是Microsoft公司一个灵活、高集成的软件开发工具,与Windows的接口完美,是开发Windows 应用程序的首选软件。它提供了一个Active X串口通信控件Microsoft Comm Control,即MSComm

13、控件,允许用户在应用程序中嵌入MSComm,于是可以方便地进行计算机串口通信管理。通信程序的关键是对串口参数的设定,用Visual C+6.0只需数条指令即可实现,如:m_Comport.SetCommPort(1);/选择串口1为通信口if(!m_Comport.GetPortOpen()/判断串口是否打开m_Comport.SetPortOpen(TRUE);/打开串口m_Comport.SetInputMode(1);/设置数据输入方式为二进制m_Comport.SetSettings(1200,n,8,1);/波特率为1200bps,无奇偶检验,8位数据位,1位停止位m_Comport

14、.SetRThreshold(1);/当串口缓冲区有=1个字符时,引发一个关于接收数据的Oncomm事件。从以上设置可以看出,上位机的数据接收采用中断的方式,可以提高程序的运行效率。本系统上位机对下位机采用轮询的方式实现一点对多点的通信,具体是用定时扫描的方法。在上位机通信程序中设定一个定时器,当定时时间到,程序通过计算机串口向地址为N的下位机发出查询计数结果的命令;当下一个定时时间到,程序就查询地址为N+1的下位机,如此循环不断。只要定时时间恰当,上位机可以依次查询和接收各个下位机的数据。由于单片机接收和发送数据过程的总时间是“微秒”级的,而PC机则更小。所以影响轮询定时时间的主要因素是串口

15、数据传输速率。按本系统的设置,实际运行调试时最小定时时间为50ms(以10ms为步长调试);当增大串口数据率时,最小定时时间可以减小,但同时通信距离要降低。YNNYNYNY串口中断入口发送下一个字节接收中断?中断返回发送完毕?执行相应动作公共广播?呼叫本机?执行相应动作图8 下位机的通信程序流程图下位机的通信程序嵌套在单片机的系统软件中,由串行口中断触发。单片机的串口工作方式和波特率必须要与上位机的一致,本系统设定为方式1(10位异步收发)和1200bps。设置串口工作方式,令串口控制寄存器SCON=50H;设置串口通信波特率,令T1的定时初值(TH1)=(TH2)=E8H,另外还要令电源控制寄存器PC机ON=00H。下位机的通信程序流程图如图8所示。每台下位机在编程的时候都被赋予了一个唯一的机器地址。当下位机接收到上位机的命令时,先把本机器地址与命令的第一个字节(下位机地址字段)对比;如果与本机对应,就执行相应的动作,否则弃之。5结束语本文研制了一种基于PC机-

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号