一、引言
在工业控制领域中,分布式监控系统常常采用计算机机为上位机、单片机做下位机的系统,这是一种经济、可靠、真观、合理的控制方式。组态软件MCGS是目前较常见的一种工业控制通用组态软件,是开发工程一非常有效的上位机工具软件,下位机采用单片机来开发的仪表,则具有计量精度高,功耗低,稳定可靠,成本低等特点。
组态软件MCGS与MCS51单片机的通迅方法一般有三种:一、单片机通过PLC、采集板卡、智能模块等设备实现通信;二、通过采用VB编制通信服务程序,利用串口通讯控件与单片机进行多机通信, 利用OLE功能在服务程序和MCGS之间进行数据交换,从而实行了MCGS与单片机的多机通信。;三、通过使用MCGS嵌入版的串行口通迅函数进行PC机与单片机多机通信。前者实现简单,只需对的PLC或板卡做相应的设置即可;而后两种经济实用,省去了PLC、板卡、智能模块等设备,节约了资金,但是需要有一定的编程知识。
二、通信方法
1. PLC、板卡、智能模块方式
本文的实例为PC上位机与一级下位机OMRON系列PLC的通信。它与计算机之间的通信采用的是串行通信。
PLC是以微处理器为基础,综合自动控制技术和通信技术发展起来的一种通用的工业自动控制装置,它具有体积小,功能强,程序设计简单,灵活通用,维护方便等一系列的优点,特别是它的高可靠性和较强的适应恶劣工业环境的能力,使它成为大规模控制工程的理想下位机。
OMRON系列中型PLC有SYSMAC C200HX系例,拥有多种接口数字量输入,数字量输出,模拟量输入,模拟输出等,它带有两个RS-232接口,可通过RS-232C /RS-485转接器,挂在RS-485总线上,上位机PC通过转换器与总线相连,即构成具有分布式控制系统的远传数据采集网,其它仪表设备,只要是标准串口都可以类似方式直接或间接与系统连接。
在组态软件MCGS中,欧姆龙PLC设备必须挂接在串口父设备下,串口父设备在“通用设备”目录中。串口父设备用来设置通信参数和通信端口。通信参数必须设置成与PLC的设置一样。否则就无法通信。欧姆龙PLC常用的通信参数:波特率9600,2位停止位,偶校验,7位数据位。
通迅的主动权在上位计算机,通信时必须由计算机按要求向PLC的HOST LINK 发出通信命令,然后才能由HOST LINK送回响应信号。
硬件通信连接示意图如下:
在组态软件中设置如下:
在设备窗口中双击添加的设备弹出如下对话框:
2. 自制控件的OLE方式
MCGS用Active DLL构件的方式来实现设备驱动程序,通过规范的OLE接口挂接到MCGS中,使其构成一个整体,所以MCGS把设备驱动程序叫做设备驱动构件。由于设备驱动构件和MCGS运行在同一个进程内,故设备构件的运行速度快,可靠性高,不存在传统DDE方式连接设备驱动时的数据流通不畅和数据传输速度慢等问题。同时,OLE是一个可扩充的开放标准,用于实现不同软件之间的相互操作,而不管软件本身是使用什么编程语言。因此,只要遵守MCGS的接口规范,可以使用VB、VC、Delphi等语言来编制MCGS的设备驱动程序。鉴于Visual Basic通用性和简单性,可以使用VB来开发MCGS的设备驱动程序.由于VB5.0以上版本是以二进制码来编译执行程序,其运行速度已接近VC,完全能满足设备驱动构件所需的速度要求。
MCGS设备构件的实现方法和原理与标准VB的ActiveDLL完全一致,但MCGS规定了一套接口规范,只有遵守这些接口规范的ActiveDLL才能用作MCGS的设备驱动构件。MCGS设备驱动构件必须具有如下5个属性和8个方法:
属性:DevType 标识设备的类型
属性:DevStyle 标识设备的类别
属性:DevChannel 标识设备的通道个数
属性:DevBaseIO 标识设备所用IO的基地址
属性:DevIONumber 标识设备所用IO地址的个数
方法:GetDevName 读取设备构件类型名称
方法:GetDevHelp 调用设备构件的在线帮助内容
方法:SetDevPage 调用设备的内部属性页
方法:InitNewDev 初试化设备的初始值
方法:GetChlType 读取设备构件各通道的数据类型和注释
方法:InitDevRun 运行时对设备进行初始化工作
方法:RunDevCommand 执行指定的设备命令
方法:CollectDevDat 定时操作设备,采集或输出数据
开发MCGS设备驱动的过程,实际上就是根据设备的特性和含义来完成8个方法功能的编程过程。编写通讯子设备驱动程序时,主要使用的就是对串行端口进行操作。MCGS根据驱动程序的实现特点,充分运用32操作系统多任务多线程的优势,把复杂的对串行端口的设置、初始化和读写操作全部封装在MCGS提供的串行通讯父设备中,在通讯子设备驱动程序中只需调用父设备提供的标准串口读写函数,即可完成各种功能通讯子设备驱动程序的开发编程工作。常用的函数有:ComOutDat、ComAllInDat、ComOutInDat等。
下面以一个5个通道的接口卡为例,接口卡的跳线设置为:单端输入、0~5V输入量程、数码转换方式为单极性,要求本设备构件能对5个通道的数据进行采集。
利用MCGS的高级开发向导,生成一个独立设备驱动设备的源程序;假定工程名设为:MYPROGRAM,类型名设为:我的工程;把属性DevChannel中的值改为5;把接口GetChlType中的代码改为:
Dim i As Long
For i = 0 To 4
Dat(i) = 2
msg(i) = "AD输入"+format$(I+1,”0”)
Next i
在接口CollectDevDat中编制如下程序代码:
Dim i as Long, high as Long, l ow as Long
For i=0 to 4
Outp mHandle, DevBaseIO, i ‘设置AD通道
Outp mHandle, DevBaseIO+1, 0 ‘启动AD转换
Do ‘等待AD转换结束
If Inp(mHandle, DevBaseIO + 2) < 128 Then Exit Do
Loop
high = Inp(mHandle, DevBaseIO + 2) And &HF ‘读高4位
low = Inp(mHandle, DevBaseIO + 3) ‘读低8位
dd(i) =( h * 256 + l)*5000/4096 ‘转换为mV数
Next i
编译工程,得到DLL文件,把该文件拷贝到MCGS的program\drivers目录下,即可完成本设备构件的编程工作。设备只需连在相应的串行口既可。
在MCGS组态环境中,即可在设备管理窗口中使用新开发的设备。
在MCGS中设置如下:
在设备窗口中双击添加的设备弹出如下对话框:
3. 直接进行远端通讯
计算机串行口是计算机和其它设备通讯时最常用的一种通讯接口,一个串行口可以挂接多个通讯设备(如一个RS485总线上可挂接255个ADAM通讯模块,但它们共用一个串口父设备),为适应计算机串行口的多种操作方式,MCGS组态软件特采用在串口通讯父设备下挂接多个通讯子设备的一种通讯设备处理机制,各个子设备继承一些父设备的公有属性,同时又具有自己的私有属性。在实际操作时,MCGS提供一个串口通讯父设备构件和多个通讯子设备构件,串口通讯父设备构件完成对串口的基本操作和参数设置,通讯子设备构件则为串行口实际挂接设备的驱动程序。
将下位机单片机仪表设备组成单片机主从形式的多机通迅网络,然后将负责采集数据的主机单片机通过RS485总线连接到上位机PC的RS232接口,通过串行口通信方式将数据远传送到上位机,这样可以用计算机直接对远端仪表设备进行数据采集、检测、控制、诊断和故障调试等。硬件连线如下:
在MCGS中设置如下:
在设备窗口中双击添加的设备弹出如下对话框.
该种方法与第二种比要增加一个单片机主机做数据采集的,然后与组态王软件来通信,单片机主机和从机的程序与第二种设计有所区别。
三、结束语
用户可以根据自己开发工程项目的规模、特点来选择相应的通信方法,对于大的系统来说可以前二者;如果是与少量单片机通信可以用后一种方法连接。相信随着组态软件MCGS的发展,还会有更多更好的单片机通信方式供用户来选择。
(摘自昆仑通态公司网站)
(转载)