摘要:本文介绍了RS-485通信卡方式的特点、使用方法以及在实际中采用VB5编程实现微机与单片机通信的方法和应注意的问题。
关键词:RS-485通信 微机串行通信 VB通信编程
在工业控制领域,数据采集与传输是经常性的工作,RS-485协议通信由于采用差分方式接收,对共模干扰抑制能力强,故广泛应用于工业控制领域。
实现RS-485通信的两种方法
微机标准通信适配器满足RS-232C协议标准,在波形畸变小于10%的条件下,最大传输距离为50英尺(约15.24米),最高传输速率小于20kbps,无法满足工业现场数据较远距离和较高速率传输的要求。微机要实现RS-485协议通信可以采用两种方法:第一种是采用RS-232C与RS-485转换接口装置;第二种是采用RS-485通信卡,插在微机主板扩展槽上。采用第一种方法的优点是硬件装置安装简单,软件编程相对简单;缺点中通信速率仍然限制在20kbps以内(RS-232C协议的限制)。第二种方法的优点是通信速率较高,可达921.6kbps;缺点是通信卡需安装在微机扩展槽上,软件需安装通信卡的驱动程序及进行必要的设置。
RS-485通信卡的特点和连接方式
RS-485通信卡的通信波特率由50bps至921.6kbps可选;通常每卡有两个通信口,各支持32个节点,共64个节点;软件环境支持DOS、WINDOWS95、WINDOWS NT。通信联接方式可以采用点对点半双工方式、点对点全双工方式、多点半双工方式和多点全双工方式。
RS-485通信卡的应用
安装驱动程序
RS-485通信卡随卡带有驱动程序,第一次使用通信卡时须首选安装驱动程序,设置通信卡的I/O地址、中断号、通信口号等内容,以后系统运行时无需再次设置。
VB通信软件的特性
本例通信软件是采用VB5.0在WINDOWS95平台下实现的,数据以随机文件的形式存放。由于WINDOWS不支持对系统I/O端口的直接访问,因此在WINDOWS下实现串行通信的简便方法就是利用VB提供的通信软件MSComm。MSComm软件中几个最重要和最常用的属性是:CommPort 设置或返回通信端口的编号;其格式为:MSComm.Comm Port=n,其中no 1~99中的任何整数值。若这个端口不存在,当用PortOpen属性打开端口时,就会产生错误。
Settings设置或返回波特率、数据位、停止位等参数。例如:MSComm1.Settings="9600,N,8,1"
其中等号右边的参数中,每一部分表示通信波特率。第二部分为校验方式,N表示不校验;E表示偶校检;O表示奇校验;S表示空格校验;M表示符号校验。第三部分为数据位数。最后是停止位位数。
PortOpen设置或返回通信口的状态,若为TRUE,打开通信口;若为FALSE,则关闭通信口。
Input从接收缓冲区取出并返回字符串。
Output向发送缓冲区写入字符。
InBuffSize设置或返回接收缓冲区字节值。
InputLen设置或返回从缓冲区读字符串时每次读出的字符串个数;若设置InputLen为0, 则读缓冲区时,一次读出整个缓冲区内容。
通信协议
物理层通信协议采用RS-485标准;链路层采用面向字符型规程;本例采用笔者在现场实际使用的字符型通信规程,具体数据(16进制)格式如表1所示。
表1
字头 | 命令代码 | 数据1 | 数据2 | 校验 | 字尾 |
FCH | 00H~FEH | 00H~FEH | 00H~FEH | 校验字 | FFH |
8位 | 8位 | 8位 | 8位 | 8位 | 8位 |
其中命令代码中含有"数据重发"命令(校验出错时),连续3次校验出错,系统应告警。
特别提到的是,本例程序是完成微机与单片机系统之间的串行通信,微机端采用的是VB软件平台,在WINDOWS95环境下编程。由于VB在WINDOWS环境下是以字符(ANSI码)方式进行通信,而单片机系统则采用16进制代码,因此VB在实现通信过程中,对数据须进行特殊的转换,才能与单片机系统进行通信。
程序中所输出的数据只有用CHR()函数转换,才能使VB输出16进制数据,才能使VB输出16进制数据,单片机系统才能正常接收。具体程序见程序清单。
结语
RS-485通信卡以其具有较高的通信速率(921kbps)、较强的抗干扰能力和较低的价格,在工业控制领域具有较强竞争力,极具实用价值。笔者将RS-485通信卡成功地应用于微机与单片机数据采集系统的串行通信,微机侧采用VB编制通信及数据处理软件,单片机侧采用汇编语言编程。VB中采用CHR()函数进行数据转换是微机与单片机实现16进制数据通信的关键。