VB编程如何直接控制I/O口之二 点击:2972 | 回复:8



如火

    
  • 精华:172帖
  • 求助:0帖
  • 帖子:803帖 | 5249回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2005-12-05 14:40:00
楼主
一: 上文介绍的I/O端口操作是一次从I/O端口中读取一个后更多字节的信号,而在工业控制领域中,往往是逐个信号的获取或操作,因此我们就有必要在读入信号时将一次读到的信号分离开来,而在输出信号时将不需要输出的其它位屏蔽掉。 1. 分离读取到的I/O端口信号(需要读取D0位信号) IOvalue=Inport(BASE)//首先读取BASE地址I/O端口信号 IOvaluer=IOvalue AND &1H// (屏蔽掉其他7位,只留下D0位) 2. 屏蔽其它位信号并输出相应信号(D0位置1操作) IOvalue=Inport(BASE)//首先读取BASE地址I/O端口信号 IOvalue = IOvalue OR &01H //(B00000001,屏蔽掉其他7位,将D0位置1) CALL Outport(BASE,IOvalue)//输出相应信号 在上面的位操作中,我们用到了逻辑运算符AND和OR,逻辑分析表如下。 AND 1 0 1 1 0 0 0 0 OR 1 0 1 1 1 0 1 0   使用AND运算符可以对指定的位置0,例如:十六进制&H84的二进制为:10000100,它的第三位为1,若要将第三位置为0,且其它位不变,可以使用:&H84 AND &HFB = &H80,&H80的二进制值为B10000000。   使用OR运算符可以对指定的位置1,例如:十六进制&H84的第二位为0,若要将第二位置为1,且其它位不变,可以使用:&H84 OR &H02 = &H86,&H86的二进制值为B10000110。 二:使用计算机LPT打印口做I/O端口 打印口有3个端口:数据端口、状态端口和控制端口,常用的打印口为LPT1,它的3个端口的地址分别为:378H、379H和37AH。其中378H和37AH可读可写,而379H为只读端口 关于计算机25针打印口各引脚定义请参考: http://bbs.gongkong.com/detail.asp?id=301535 与使用其他I/O卡一样,在运行DEBUG环境下,对打印口的各位进行检测如下。 378H作数据输出口。键入指令 –O 378 00(01,02,04,08,10,20,40,80,FF),同时用万用表分别检测2~9脚的电压(25脚接万用表“地”),可分别测到对应位与所输入的数据相符合(”1” 对应5V,”0”对应0V)。说明此地址的8位可作为8个输出线。 379H作输入端口。为了给各脚提供输入电平,我们先引入一个外部5V电源。电源地线接打印口的25脚,而后分别在10,11,12,13,15脚接入5V、0V,同时在DEBUG环境下执行 -I 379指令,读入此端口的数据。读到的各数据应与输入信号相符合。 37AH口只能作输出口。检测方法与378H 相同。 检测结果为:  378各位输出电平和指令信号一致,D0~D8位都可以做端口输出位;  37A各位输出电平和指令信号相反,D0~D3位都可以做端口输出位;  379各位悬空状态下:11脚为“0”,10,12,13, 感谢网友大浪淘沙提供,由工控网整理。



yjj9903

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 15回
  • 年度积分:0
  • 历史总积分:126
  • 注册:2003年10月03日
发表于:2005-12-06 11:21:00
1楼
好文章!不错,希望激情如火和其它大虾多发此类帖子,让我们这些
刚入行的小混混们多学一点!
不过看完之后,觉得缺了点什么,激情如火能不能针对具体的PLC像欧姆龙或西门子或三菱结合VB做一个完整的操作过程,结合实际的东西我认为就更好了!

如火

  • 精华:172帖
  • 求助:0帖
  • 帖子:803帖 | 5249回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2005-12-06 11:39:00
2楼
感谢楼上的好建议,目前自助资料库有相关的例程可以供下载。

开拓

  • 精华:0帖
  • 求助:1帖
  • 帖子:24帖 | 61回
  • 年度积分:0
  • 历史总积分:530
  • 注册:2004年2月16日
发表于:2005-12-06 16:27:00
3楼
楼主你好:现在我遇到一个问题不知从何入手,现在向你求教一下。现在我想用西门子TC35I和PLC实现远程控制,现在有现成的西门子TC35I模块,有开发好的控制软件,能够用它发送短消息。问题是现在怎么和PLC实现对接 望指教

浪潮的爱

  • 精华:1帖
  • 求助:0帖
  • 帖子:14帖 | 71回
  • 年度积分:0
  • 历史总积分:116
  • 注册:2005年8月04日
发表于:2005-12-06 19:29:00
4楼
谢谢

zsbs

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 145回
  • 年度积分:1
  • 历史总积分:234
  • 注册:2003年11月27日
发表于:2005-12-07 17:29:00
5楼
在WIN2000下,是禁止直接操作硬件的,如果想操作硬件,必须绕过保护机制,不知这种方法能否实现,否则只能在WIN98前的版本中用了

VC中的直接操作硬件的函数是不能在WIN2000 下用的,如果想用必须加载低层驱动

在LabWindows 中,是自动绕过保护机制的,因而可以直接用

很多板卡的驱动程序,都有绕过保护机制,操作硬件的方法,也有的是用API去做的

浪费青春

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 95回
  • 年度积分:0
  • 历史总积分:124
  • 注册:2004年6月01日
发表于:2005-12-15 11:24:00
6楼
好文章

IBL

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 13回
  • 年度积分:0
  • 历史总积分:34
  • 注册:2005年12月22日
发表于:2005-12-22 17:37:00
7楼
激情如火:
自助资料库是哪里的?!~有没有好点的网站介绍啊?

透明了

  • 精华:0帖
  • 求助:0帖
  • 帖子:60帖 | 325回
  • 年度积分:0
  • 历史总积分:521
  • 注册:2005年3月29日
发表于:2005-12-26 16:02:00
8楼
我找过了,没有vb跟PLC的呀,我想要vb跟omron的cs1的通讯程序,想了都快两年了,可惜我能力有限,编不出来
有人帮我不

热门招聘
相关主题

官方公众号

智造工程师