资源预览内容
第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
亲,该文档总共3页全部预览完了,如果喜欢就下载吧!
资源描述
公路超载超限检测控制系统的研究公路超载超限检测控制系统的研究发布时间:2007-08-08 09:14:33 点击: 35 字体 大、中、小 align=left 1 1 系统简介系统简介 机动车总质量和轴载质量超限的问题一直困扰着公路运输管理。既严重 影响车辆的运行安全,又严重影响公路的使用寿命。山东交通学院运达应用 技术研究所研制的固定式超载超限检测系统,机械部分由高刚性的框架结构 的称重板及精度高、可靠性好的悬臂梁式传感器、轴胎识别器等组成。控制 部分由 PC 机作为上位机,采用 Visual Basic 作为软件开发平台,做出直观 、操作简便的人机界面;由单片机作为下位机,收集称重板、轴胎识别器、 光幕(光电传感器)的信号,并控制交通灯信号。系统自动完成车辆质量的称 重、显示、打印、查询等功能。2 2 串行通讯硬件接口串行通讯硬件接口2.1 使用串行通信方式连接各组成部分串行通信中串行端口的本质功能是作为 CPU 和串行设备间的编码转换器 。当数据从 CPU 经过串行端口发送出去时,字节数据转换为串行的位。在接 收数据时,串行的位被转换为字节数据。在 Windows 环境(Windows NT、Win9 8、Windows2000)下,串口是系统资源的一部分。串行通信具有连接简单、使 用灵活方便、数据传递可靠等优点,在工业监控、数据采集中得到了广泛应 用,也满足固定式超载超限检测系统的工作要求。系统中上下位机间数据通 信的示意图,如图 1 所示。2.2 PC 机与单片机之间的硬件接口连接单片机因其自身的优点,在嵌入 式过程控制、自动化仪器仪表、数据采集和处理等方面已得到了广泛应用。 在以单片机为基础的数据采集和实时控制系统中,通过 PC 机 RS232C 接口就 可以实现 PC 机与单片机之间的命令和数据传送。RS232C 标准接口的输入/输 出信号电平为 EIA (国际电子工业协会标准)电平,对于输入输出信号,通常 逻辑“1”用12V,逻辑“0” 用+12V。由于一般单片机应用电路的输入 输出信号电平为 CMOS 或 TTL 电平,为了能实现 RS232C 方式下 PC 机与单片机 之间输入输出信号电平的匹配,通常在 RS232C 接口和单片机的串行接口之间 ,用 MAX232 来实现 EIA 电平与 CMOS/TTL 电平之间的相互转换。电平匹配原 理如图 2 所示。由于存在电缆电容、时钟频率的畸变以及噪声和地电位差等对本地连接 和远程的影响,RS232C 的通信距离范围是 30m,传输速率小于 20kb/s。2.3 RS232C 串口通信接线方法(三线制)一个完整的 RS232C 接口有 22 根线,采用标准的 25 芯插头座(或者 9 芯插头座)。25 芯和 9 芯的主要信号线相同。首先,串口传输数据只要有接收数据针脚和发送针脚就能实现:同一个串口的接收脚和发送脚直接用线相连 ;两个串口相连或一个串口和多个串口相连同一对 9 针串口和 25 针串口,均 是 2 与 3 交叉相连,信号地对应接地即可。在设计程序时,直接进行数据的 接收和发送就可以了,不需要对信号线状态进行判断或设置。3 3 系统的应用程序设计系统的应用程序设计在 Windows 环境下具有多种编程语言,如 VisualC+,Visual Basic 等 ,各种编程语言都有自己的特点,根据超载超限检测系统的设计条件及使用 环境,笔者选择了 Windows 系统环境下使用 Visual Basic 编程,特点是实现 串行通信较为方便,程序员仅需与 MSComm 控件的属性及相关事件打交道,从 而大大降低了编程难度,提高了编程效率。在 Windows 环境下用 Visual Basic 实现串行通信有 3 种方法: (1)使用 Visual Basic 自带的通信控件 MSComm 来实现串行通信;(2)调用 Windows 环 境下的 API 函数来实现串行通信,Windows 将串行口作为设备文件来处理,对 串行口的操作就是对文件操作,因此必须先为串行口分配 1 个文件句柄,以 后对串行口的各项操作都将通过这个文件句柄来完成;(3)将程序用 VisualC+ +编译链接为 DLL(动态链接库),然后将编译通过的 DLL 文件存放在 Windows 的 SYSTEM 子目录下,这样 Visual Basic 就可以调用 DLL 里的函数来实现通 信。由于 MSComm 控件可以简单便捷地实现应用程序的串行通信,编程时只需 关心 MSComm 控件对 Windows 通信驱动程序的 API 函数的接口,即设置和监视 MSCommfor 的属性和事件即可,所以超限检测系统选用 Visual Basic 自带的 通信控件来实现与单片机的串行通信。3.1 MSComm 控件属性设置3.1.1 端口初始化使用 MSComm 控件时首先是建立与串行端口的连接。通过设置 CommPort、 PortOpen 和 Settings 属性,来打开串行端口。(1)CommPort 属性:设置或返回通信端口号。注意每个使用的 MSComm 控 件对应着一个串行端口。如果应用程序需要访问多个串行端口,必须使用多 个 MSComm 控件。在本系统中就设置了两个控件,控制两个串行端口。(2)Settings 属性:字符串形式设置或返回串行通信的通信协议。该属性 值由 4 个设置值组成如下的格式: “BBBB,P,D,S”,BBBB 为波特率,P 为奇偶校验,D 为数据位数,S 为停止位数。波特率是串行通信中的一个关键 参数,通信双方波特率的一致性直接影响数据传输的正确性。当微机为上位 机与单片机构成分布式控制系统进行通信时,波特率的选取通常取决于时钟 频率较低的单片机一方。(3)PortOpen 属性:设置并返回通信端口的状态。将 PortOpen 属性设置 为 True 打开端口。打开端口,建立连接之前,必须先用 CommPort 属性和 Set tings 属性正确指定端口及通信协议。将 PortOpen 属性设置为 False 即可关 闭该端口。3.1.2 管理接收和发送缓冲区接收和发送缓冲区用来保存传入的数据和传出的数据。端口被打开后, 就创建了空的接收和发送缓冲区,端口关闭时,缓冲区被清零。MSComm 控件 提供了一系列的属性来管理这些缓冲区:(1)InBuferSize 和 OutBuferSize 属性分配接收和发送缓冲区内存。这两 个值设置得越大,应用程序中可用的内存就越少;如果缓冲区太小,就要冒缓冲区溢出的风险,除非采用硬件方法实现数据同步。(2)InPutMode 属性指定以文本或二进制格式接收传入的数据。对 ANSI 字 符集的数据应设置为 comInputModeTxt;而对其它数据,比如嵌入了控件字符 、空值等的数据,设置为 comlnputModeBinny。(3)InBuferCount 属性和 OutBuferCount 属性:分别用于获得接收缓冲区 和发送缓冲区中字节的数目。若在程序执行过程中,将这两个属性的值设置 为零,即可清空接收缓冲区或发送缓冲区。(4)Rthreshold 和 Sthreshold 属性:用来设定在 OnComm 事件发生之前, 接收缓冲区或发送缓冲区中可以存放的字节数。将这两个属性的值设置为零 ,则可以抑制相应的 OnComm 事件。3.1.3 发送和接收数据(1)Input 属性:用来获取输入缓冲区中的数据,并将保存在输入缓冲区 中的数据删除。(2)Output 属性:向发送缓冲区写入数据。与 Input 属性类似,数据可以 以文本或二进制格式发送。(3)InputLen 属性:设置并返回 Input 属性从接收缓冲区读取的字符数。 在读取定长格式的数据块时,需要将该属性设置为合适的值。若把 InputLen 属性设置为零,在使用 InputLen 属性时,MSComm 控件将读出接收缓冲区中的 所有内容。3.2 事件驱动通信方式事件驱动是 Windows 系统处理任务的一种基本方式。MSComm 控件通过响 应 OnComm 事件,捕获 CommEvent 属性的改变来执行相应的程序代码,从而实 现数据通信。3.3 数据同步在异步串行通信中,除了应保证通信双方的波特率一致外,为了能够连 续成批传送数据,还应保证数据帧同步(每一帧数据的位数由 settings 属性 定义),以免数据到达端口的速度太快,通信设备可能来不及将数据移人接收 缓冲区,造成缓冲区溢出而导致数据丢失。本系统采用软件应答法进行数据 同步,一方面发送方采取一定的延时,另一方面在发送一组数据后,接收方 应回答一个数据信号,该数据信号既表示是否正确接收到数据,又可起到同 步作用。4 4 结束语结束语目前,固定超载超限检测系统已投入使用。系统具有较好的稳定性和工 作可靠性,自动化程度高,基于 PC 机的串行通信方式技术成熟。在 Windows 系统环境下使用 Visual Basic 编程,实现串行通信较为方便,降低了编程难 度,提高了编程效率,使整个超载超限检测系统的设计和制造周期缩短,设 备运行可靠性提高。(山东交通学院 韩 鹰 陈晓晖)
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号