找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 17079|回复: 36

VB环境下利用并口实现PLC控制

  [复制链接]

5

主题

428

回帖

2445

积分

高级会员

积分
2445
发表于 2018-11-24 21:06:23 | 显示全部楼层 |阅读模式

    导读: 本文分析的系统,把普通并口实现了一个4输入8输出数字量的功能,切不需任何投资。们先对打印机的并行口做一下细致的分析。配有一个并口的计算机经系统引导后,初始化过程把并行端口配置成lpt1,这个端口又分配了数据地址378h, 状态地址379h。
1 引言
普通的计算机一般都配有并行接口(就是通常用的打印机接口),它是通过25芯的d型接头连接打印机与计算机的,计算机的并行接口不仅可以向打印机发送数据,还可以从打印机接收数据(打印的工作状态)。因此,利用计算机的并行接口,你可以去控制外部继电器的吸合,从而控制外部设备,同样可以利用它来检测外部设备的状态。不需添加任何硬件。从而使一台普通的计算机具有“PLC”的开关量的功能。
本文分析的系统,把普通并口实现了一个4输入8输出数字量的功能,切不需任何投资。们先对打印机的并行口做一下细致的分析。配有一个并口的计算机经系统引导后,初始化过程把并行端口配置成lpt1,这个端口又分配了数据地址378h, 状态地址379h。其中378h端口做输出端口,379h端口做输入端口。
2 并口数据采集控制原理
(1) 端口378h,378h的管脚见表1。

在计算机通电后的自然状态,378h端口的每个数据位为1,表1中每个管脚对地(25脚)为高电平5v。即378h地址的内容为ff(十进制是255),当控制378h的内容为1(十进制)二进制码是00000001时,即2脚对地输出高电平,其它对地是0电平。如控制378h的内容为2(十进制)二进制码是00000010,即3脚对地输出高电平,其它对地是0电平。如控制378h的内容为3(十进制)二进制码是00000011,即2、3脚对地输出高电平,其它对地是0电平。依次类推。
当某管脚对地是高电平5v时,由于每条数据线的输出电流高达20ma,可以接5v的直流电器,通过继电器的触点在去控制其它的设备,如电磁阀电机等。图1是用打印机并行接口实现的继电器控制电路,此电路稍加修改即可用于其它设备的开关控制。
(2) 端口379h,379h的管脚见表2。
在计算机通电后的自然状态,379h端口的数据位第7位是0,其余每个数据位为1,即上述每个管脚对地(25脚)为高电平5v。即379h地址的内容为127(十进制)二进制码是01111111。当只把某管脚(如10脚)通过500ω的电阻接到25脚,则它所对应的数据位是0,其它的数据位不变,则379h的内容为63(十进制)二进制码是00111111。当只把某管脚(如12脚)通过500ω的电阻接到地25脚,则它所对应的数据位是0,其它的数据位不变,则379h的内容为95(十进制)二进制码是01011111依次类推。

图2是用打印机并行接口实现的开关检测控制电路,当k断开时,379h为127(十进制),当k闭合时,379h为111(十进制)二进制数是01101111,即13脚所连接的第4数据位为0。

导读: 本文分析的系统,把普通并口实现了一个4输入8输出数字量的功能,切不需任何投资。们先对打印机的并行口做一下细致的分析。配有一个并口的计算机经系统引导后,初始化过程把并行端口配置成lpt1,这个端口又分配了数据地址378h, 状态地址379h。
3 软件实现
vb是一种可视化的编程语言,自面世以来,因简单易用倍受广大编程人员的青睐,作为一种非常方便的windows95应用程序开发平台,可以实现windows的绝大部分功能。
vb中没有专门的对并口的操作控件,要实现对并口的读写,需要对i/o进行操作,但对硬件进行访问以及利用各种控制接口板进行数据采集,仅靠vb是无法解决的。解决这样的问题可以间接使用动态链接库dll(dynamic link library)来实现。程序人员利用dll可以实现应用程序共享代码和资源,dll与用户的程序完全分开。
动态链接库(dll)虽然是一个可执行模块,但它并不可以直接运行,它只是提供一群函数供windows应用程序或其它动态链接库调用,以完成其特殊任务。由于动态链接库是在应用程序运行期间被连接起来的,故称为动态链接库。本设计用vc++设计了一个读写io端口的动态链接库io.dll。
笔者利用vc++5.0开发的dll的完整的程序清单如下:
‖dll源文件i0.cpp
#include
#include
int far pascal outport(unsigned)
short sport);
int far pascal outport(unsigned short port,int databyte);
‖d11entrypoint函数
bool winapi d11entrypoint
(hinstance hd11,
dworddwreason,
lpvoid reserved)

switch(dwreason)


break;


break;


return true;

‖两个功能函数
int far pascal inport(unsigned short port)

reture(_inp(prot);

int far pascal outport(unsigned short port,int databyte)

int a;
a=_outp(port,databyte);
return a;

‖模块定义文件i0.def
code preload moveable discardable
data preload single
exports
inport
outport
动态链接库只有在别的模块中调用了它的某个函数以后,该动态链接库才发生作用。dll函数或过程必须在全局模块(*.bas)中正确说明才有效。vb是用declare语句把一个dll函数引入vb中的,它告诉vb在哪里找到dll函数,并且让vb知道dll需要哪种类型的参数,同时返回哪种类型的值。当某个dll函数用declare语句正确声明以后,就可以像使用其它函数一样使用这个dll函数。
在vb应用程序的全局模块中声明i0.dll并将其放入windows\system目录下,这样就可以向使用windows
api一样使用i0中的inport(输入)和outport(输出)函数了。
declare function inport lib“io.d11”
(byval prot as integer)as long
declare function outport lib“io.d11”
(byval port as integer,byval
databyte as long)as long
下面的程序对图1和图2的例子进行设计。(只列出输入输出的读写操作程序)
private sub 输入_click
x=inport(&h379)
print x
end sub
private sub输出_click
y=outport(&h378,1)
end sub
4 结束语
并口25管脚中,作输出用的是2~9共8个管脚,作输入用的10、12、13、15共4个管脚,25脚地,利用并口可方便的实现了4入8出的开关量控制。
在上位机中采用vb等语言编程,利用计算机的并口,巧妙地实现plc的开关量功能,而且可利用vb等语言的界面设计的功能,使系统做到监控一体。且系统不需额外的投资,使用灵活简单,可靠性高。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
工控课堂 www.gkket.com

0

主题

451

回帖

2972

积分

高级会员

积分
2972
发表于 2018-11-24 21:36:43 | 显示全部楼层
看到这帖子真是高兴!
工控课堂 www.gkket.com

0

主题

432

回帖

2643

积分

高级会员

积分
2643
发表于 2018-11-24 22:03:18 | 显示全部楼层
淡定,淡定,淡定……
工控课堂 www.gkket.com

0

主题

438

回帖

2450

积分

高级会员

积分
2450
发表于 2018-11-24 22:22:21 | 显示全部楼层
论坛有你更精彩!
工控课堂 www.gkket.com

8

主题

422

回帖

2820

积分

高级会员

积分
2820
发表于 2018-11-24 22:49:00 | 显示全部楼层
激动人心,无法言表!
工控课堂 www.gkket.com

8

主题

441

回帖

2588

积分

高级会员

积分
2588
发表于 2018-11-24 22:50:40 | 显示全部楼层
无私奉献,好工控人,32个赞送给你!!
工控课堂 www.gkket.com

0

主题

263

回帖

1905

积分

高级会员

积分
1905
发表于 2018-11-24 22:51:00 | 显示全部楼层
激动人心,无法言表!
工控课堂 www.gkket.com

0

主题

439

回帖

2772

积分

高级会员

积分
2772
发表于 2018-11-24 22:56:48 | 显示全部楼层
我只是路过打酱油的。
工控课堂 www.gkket.com

0

主题

432

回帖

2643

积分

高级会员

积分
2643
发表于 2018-11-24 23:02:05 | 显示全部楼层
我只是路过打酱油的。
工控课堂 www.gkket.com

0

主题

358

回帖

2277

积分

高级会员

积分
2277
发表于 2018-11-24 23:06:18 | 显示全部楼层
楼主您的技术水准,我最服你,其他都是浮云
工控课堂 www.gkket.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|手机版|免责声明|本站介绍|工控课堂 ( 沪ICP备20008691号-1 )

GMT+8, 2025-12-22 15:44 , Processed in 0.245277 second(s), 29 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表