您现在所在的是:

人机界面

回帖:12个,阅读:10564 [上一页] [1] [2] [下一页]
1175
楚终悟
文章数:71
年度积分:50
历史总积分:1175
注册时间:2001/3/24
发站内信
发表于:2002/2/8 22:55:00
#0楼
用VB开发工业控制程序的几个问题

李光明 熊兵 周晓明


   随着新的软件开发工具的不断涌现,应用软件设计人员面临的可使用的工具越来越多,令人眼花眼花缭乱,其中,Visual Basic是最为人们所容易接受的软件开发工具之一。但是大多数使用VB进行软件应用程序开发的人员都认为,VB不能进行工业控制程序的开发。其实不然,我们曾多次使用VB成功地实现了工业控制程序的开发,所开发出的产品业已投入实际使用。下面就其开发过程中的经验介绍给大家。

平台的选择
使用VB开发工业控制程序,首先面临的一个问题是平台的选择。目前,一般应用软件的开发大多数都是在Windows 9x平台上进行的。但是,我们认为在选择平台时,应考虑到客观实际情况来决定。如果我们的用户是一般的操作工人,并且在微机主板上安装了我们自己开发的控制硬件板(如I/O板等),那么其平台应选择Windows 3.x。因为一般的操作工人接触计算机较少,那么对于操作,而且在实际使用过程中,一般都可能会出现紧急事件或突然停电而非正常关机,此后再启动时,Windows 9x将首先执行Scandisk.exe程序,或由此破坏了Windows 9x的注册表,这将造成操作工人不知所措;如果在微机主板上安装了我们自己开发的控制硬件板,那么Windows 9x还将要求安装其驱动程序,综合这些因素,我们建议使用Windows 3.x。否则,我们可以选择Windows 9x。我们在开发“盆腔治疗仪”时,考虑到用户为医护人员,并且通过平行口进行I/O控制,因此我们选择了Windows 95;而在开发用于自动粘贴防伪标志的“复卷贴标机”时,其用户系工厂工人,并且在工控机的主板插槽上我们安装了自行开发的I/O控制板,为此我们选择了Windows 32。根据实际使用情况看,我们的考虑、选择是正确的。

编写并生成对端口操作的动态链接库
动态连接库是Windows应用程序共享资源、节省内存空间、提高使用效率的一个重要技术手段。动态连接库是包含数据和函数的模块,可以被Windows的其他可执行文件调用。它包含输出函数和内部函数两种函数。输出函数可以被其他模块所调用,而内部函数则只能在动态连接库内部使用。一般,动态连接库以DLL作为其文件扩展名。

当前,可用于编写动态连接库的工具很多,如Turbo PASCAL for Windows、Delphi、Borland C++、Visual C++等等。下面介绍我们使用Turbo PASCAL for Windows Version 1.5所编写的一个动态连接库,其功能是实现对端口的I/O操作。

启动PASCAL for Windows后,在程序编辑窗口中输入如下程序MYDLL.PAS:

Library IOLIB; {库名为IOLIB,将编译生成MYDLL.DLL}

function read_port(port_address:integer):integer;export;

{函数被说明为export,port_address为端口地址}

Begin

read_port:=port[port_address]; {使用预定义数组读端口数据}

End;

procedure write_port(port_address,write_value:integer);export;

{过程被说明为export,port_address为端口地址,write_value为输出值}

Begin

port[port_address]:=write_value; {使用预定义数组向端口写入数据write_value}

End;

Exports {Exports语句}

read_port index 1, {定义read_port的索引号为1}

write_port index 2; {定义write_port的索引号为2}

Begin {初始化部分,本部分为空}

End.

在其菜单栏中选择Compile/Make(或Build),即可生成动态连接库MYDLL.DLL。

在VB中调用动态链接库实现端口的I/O操作
生成动态连接库MYDLL.DLL后,这样就可以在VB程序中调用该动态连接库了。具体调用方法是:

⒈将该动态连接库拷贝到windows\system目录下;

⒉在VB程序中创建模块(Module1),并在通用声明(General_Declarations)中用下列语句说明该动态连接库:

Declare Function read_port% Lib "MYDLL.DLL" (ByVal port_address As Integer)

Declare Sub write_port Lib "MYDLL.DLL" (ByVal port_address As Integer, ByVal write_value As Integer)

⒊在需要对端口进行I/O操作的事件中,如同调用VB的标准函数一样调用该动态连接库实现对端口的输入输出操作。如:

Private Sub Command1_Click()

‘若单击命令按钮Command1,则从端口378H输出02H

write_port &H378,&H2

End Sub

Private Sub Command2_Click()

‘若单击命令按钮Command2,则读端口330H

Dim Port_Value As Byte

Port_Value=read_port(&H330)

End Sub

控制程序中的几个特点
⒈启动Windows时启动控制程序

为了在启动Windows时自动启动控制程序,我们可以将控制程序放到Windows 3.x的“启动”程序组中或Windows 9x的“启动”菜单中;或者在autoexec.bat中的合适位置加入如下命令:

win 控制程序的文件名

⒉取消标题栏

为了防止控制程序被用户多次加载,因此应使每个窗体均为最大化,并取消最大化、最小化和控制按钮,取消窗体的标题栏,即如下设置窗体的四个属性:

WindowState=2 (即Maximized)

MaxButton=False

MinButton=False

ControlBox=False

Caption=””

⒊热键问题

为了使功能键F1~F10及光标移动键(←、→、↑、↓)等实现DOS环境下的热键功能,应使用对象的KeyUp或KeyDown事件,对所键入键的KeyCode进行判别,而不要使用KeyPress事件中KeyAscii进行判别。因为KeyPress事件中KeyAscii并不能给出这些键的值。

【作者】

李光明 空军雷达学院计算机教研室讲师 读者登记号: 07876

熊 兵 空军雷达学院自控设备研究所

周晓明 空军雷达学院计算机教研室讲师

E-mail地址:liguangming@126.com

邮政编码:430010

29673
思南 管理员
文章数:14047
年度积分:62
历史总积分:29673
注册时间:2001/3/12
发站内信
发表于:2002/2/23 22:56:00
#1楼
Re:转载:用VB开发工业控制程序的几个问题
我觉得文中提到的使用Windows 3.x而不用Windows 9.x的理由还不充分,其实象自动运行Scandisk之类是可以通过设置取消的。
814
winloop
文章数:4
年度积分:50
历史总积分:814
注册时间:2002/1/19
发站内信
发表于:2002/3/7 23:30:00
#2楼
Re:转载:用VB开发工业控制程序的几个问题
请解释一下为什么不用VB自带的串行通信控件,却要费半天劲编什么用于通信的动态裤?
911
huitongl
文章数:11
年度积分:50
历史总积分:911
注册时间:2003/7/14
发站内信
发表于:2003/10/6 22:09:00
#3楼
3楼:
    认真看一下,顶楼使用的是自己开发的I/O板,自然就不能使用VB自带的串行通信控件。
   错误之处请指正。
1181
feng89
文章数:107
年度积分:50
历史总积分:1181
注册时间:2002/10/23
发站内信
发表于:2003/10/20 16:48:00
#4楼
有DOS最安全,又快又省事
135元10点PLC,6点输入,4点继电器输出,带外壳、开关电源。
WWW.FXPLC.CN
991
zenghao
文章数:73
年度积分:50
历史总积分:991
注册时间:2003/10/8
发站内信
发表于:2003/10/22 10:25:00
#5楼
VB不是不能做工控,但是太麻烦了!而且培训、维护也都不方便;BUG也会很多。如用VB做还不如用单片机+VB的形式。做工厂的自动控制我觉得还是用成熟的产品比较好。
1232
pedo
文章数:94
年度积分:50
历史总积分:1232
注册时间:2003/9/13
发站内信
发表于:2003/10/22 22:10:00
#6楼
如果不考虑人机界面,我认为还是用DOS做工控,稳定!如果需美丽的人机界面,可用两台电脑,DOS控制,WINDOWS做界面,通过通讯连接。
                 皮多
837
murphey
文章数:10
年度积分:50
历史总积分:837
注册时间:2002/7/25
发站内信
发表于:2003/10/23 17:27:00
#7楼
在Win95下听说可以做I/O板的驱动程序哦
825
fengxinhong
文章数:5
年度积分:50
历史总积分:825
注册时间:2002/11/5
发站内信
发表于:2003/10/24 10:12:00
#8楼
我比较喜欢用两台电脑的方案,稳定有方便。即可以用通讯,也可以用网卡
927
Ting
文章数:13
年度积分:50
历史总积分:927
注册时间:2003/10/6
发站内信
发表于:2003/10/24 11:42:00
#9楼
方便

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

124.8008