机电之家行业门户网运行
文章 下载
最新公告:

  没有公告

设备维修与管理培训
您现在的位置: 设备维修与管理 >> 监测诊断 >> 控制技术 >> 监测诊断系统 >> 文章正文
 
赞助商
 
 
最新文章
 
 步进电机的PLC直接控制
 涤纶工业长丝纺丝机用变频器、可
 PLC实现变频调速器多电机控制
 啤酒糖化绞笼吹气出槽改用LOGO!
 PLC控制步进电机在机床自动线中的
 应用PLC改进绕线式电动机起动控制
 KDN-K3系列PLC在热封切袋机中的应
 GEO系列旋转包装机计量控制系统的
 PLC在轧钢生产故障诊断中的应用研
 浮法玻璃生产线的智能自动化技术
 
推荐技术
 
 
相关文章
 
没有相关文章
 
客户服务
 
如果您有设备方面好的文章或见解,您可以送到我们的投稿信箱
客服电话:0571-87774297
信   箱:88ctv@163.com
我们保证在48小时内回复


s

b

g

l

.

j

d

z

j

.

c

o

m

 

[组图]VB环境下利用并口实现PLC控制           
VB环境下利用并口实现PLC控制
作者:佚名 文章来源:网络 点击数: 更新时间:2009-6-5 11:10:20

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。


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 <windows.h>
#include<conio.h>
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)

case DLL_PROCESS_ATTACH:
  {
    break;
  }
case DLL_PROCESS_DETACH:
  {
    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等语言的界面设计的功能,使系统做到监控一体。且系统不需额外的投资,使用灵活简单,可靠性高。


文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    不良信息
    举报中心
    机电之家设备管理网
    致力于机电设备维修与管理技术
    网络110
    报警服务
    服务热线:0571-87774297 传真:0571-87774298 电子邮件:donemi@hz.cn 服务 QQ:66821730
    机电之家(www.jdzj.com)旗下网站 杭州滨兴科技有限公司提供技术支持

    版权所有 Copyright © 机电之家--中国机电行业门户·设备维修与管理

    主办:杭州高新(滨江)机电一体化学会
    网站经营许可证:浙B2-20080178-1