三菱PLC控制系统通信控制软件设计
控制系统通信控制软件设计
5.1串口通信程序设计方法
基于对系统结构和变频器串口通信协议的分析,必须对工控计算机的串行口进行编程。在DOS的操作系统下,计算机所有的硬件对编程人员是透明的,因此比较容易进行内存管理和硬件中断管理,所以程序的响应速度快。但是,DOS是单任务操作系统,对硬件资源浪费严重,并且在进行图形界面编程时其难度和任务量都远远超过了对硬件部分的编程。因此我们采用Windows 9X操作系统和基于此平台的开发软件来编写控制系统软件。
在Windows 9X环境下,操作系统完全接管了各种硬件资源, 不允许用户程序直接读写硬件端口和进行中断管理。所以早期的程序员只能通过数目众多的API函数来控制端口,使用起来很不方便。
本系统利用VB6.0下提供了一个ActiveX控件(Microsoft Communication控件, 简称MSComm 控件)来实现串行口的通信设计。通过在应用程序中嵌入MSComm控件的方式,进行计算机串口的通信管理,下面简要介绍一下MSComm控件的功能:
MSComm 6.0控件可以实现数据缓冲区的管理,Input (从缓冲区读取接收数据)的数据类型为Variant,从缓冲区读取数据的格式为字符串格式(Text)或二进制格式(Binary)。
MSComm控件提供的具体功能如表1:
其中串口号(CommPort)设置为1、2 … n等表示COM1、COM2 … COMn。参数设置(Settings)的格式为“BBBB,P,D,S”,BBBB表示波特率,P表示奇偶校验(N:无校验,E:偶校验,O:奇校验),D表示字节有效位数,S表示停止位数。串口状态(PortOpen)为BOOL变量,TRUE表示打开串口,FALSE表示关闭串口。InputMode使程序能方便地选择从缓冲区读取数据的格式,设置为0时,为字符串格式(Text),设置为1时,为二进制格式(Binary)。InputLen设置或返回的是用Input从缓冲区读字符串时每次读出的字符个数,这个性质对于读出数据块中定长数据串非常有用。
InBufferCount和OutBufferCount用于串口的查询方式。对于较复杂的通信任务,可通过Com9Xvent处理串口的事件,当相应事件或串口错误事件发生时,系统会激活OnComm事件,在OnComm中添加用户的处理代码,则可实现类似DOS中断的串口处理程序。
5.2变频器串口通信软件结构
为了用该控件控制一个串口进行通信操作,还必须在应用程序中插入该控件。为此,将MSComm控件插入到程序的某个对话框,并为这个控件对象命名为MSComm1,则程序中对串口的各种操作都可通过对象MSComm1来实现。
下面是串口控制子程序的流程图: