软件摹拟运用接头卡在仪器仪表革新里的运用

   2020-09-01 互联网中国铸造网15430
核心提示:  1许多厂的HFR1300或HFR2600齿轮检查仪就是这样一种情况。该仪器属80年代的产品,所配计算机是HP公司的H

  1许多厂的HFR1300或HFR2600齿轮检查仪就是这样一种情况。该仪器属80年代的产品,所配计算机是HP公司的HP85B个人计算机,由于该计算机存储设备是使用磁带,在长时间使用后造成磁带读取部分失灵,所有磁带上存储的程序无法读出,使整台仪器与计算机相关的功能无法使用,但是仪器其他部分工作状态正常。如果仅因为计算机部分造成整台仪器报废将十分可惜,且又无法购到相应配件,即使能买到,几年以后又会出现相同的问题。于是就提出了这样一个问题,能否把现有的软件移植到通用计算机上,并用通用计算机代替HP85B计算机。因为通用计算机配件更换十分容易,这样就可以避免因为计算机故障引起仪器无法使用的问题。
  2HP85B计算机上的专用接口卡
  GPIO卡是美国HP公司推出的专门用于HP公司80系列个人计算机与外设通讯的16位或双8位通用接口卡,该卡使用输入输出握手信号以半双工的方式传输数据,其工作方式比较复杂,可以通过拨码开关或软件编程的方式来设置和修改时序及逻辑。它的一个显著特点是所有的硬件握手时序都是由卡本身的硬件来实现。程序只需输出数据通讯命令即可,无须作更多的干预。
  GPIO卡的引脚分组如下:
  名称说明数据线16根双向数据线DA0DA7(A口),DB0DB7(B口)16根输出数据线DC0DC7(C口),DD0DD7(D口)控制线4根控制线2根标志线2根状态线
  信号电平TTL,集电极开环方式GPIO与HFR1300齿轮检查仪控制柜通讯时的时序如1,2.
  从上面的握手时序可以看出,使用GPIO卡进行数据输入输出是比较简单的。只要在通用计算机上使用普通的I/O卡仿真出GPIO卡一样的输入输出时序,就可以和HFR1300的控制柜通讯进行数据交换。
  3通用I/O卡HY-6160
  HY-6160卡是华远公司推出的一种通用I/O卡,共有32位输入和32位输出,同时也提供 5V和 12V电源输出。该板使用十分简单,且价格低廉,质量可靠。其电器特性也是提供TTL电平。从理论上讲完全满足要求。
  4仪器改造的具体实现及编程
  从选用的硬件上可以看出,使用HY-6160来实现GPIO卡的功能,不可能由HY-6160来自动产生硬件握手时序,如果要产生则只能由软件编程来实现其具体实现步骤是:41重新定义HY-6160的引脚
  数据线:(输入)HP-I0(MSB)HY-6160(MSB)HP-I0(LSB)HY-6160(LSB)DB7(J2-09)DI17(J0-16)DA7(J1-09)DI07(J0-8)
  控制线:名称HP-IOHY-6160方向备注OUTAJ1-07DO20(J1-21)出控制输出方向:L=出H=入。
  以上三个表格列出的GPIO卡和HY-6160卡引脚对照。通过这种重新定义后,可以用HY-6160的输入输出位仿真出GPIO卡的数据位和所有的控制位,而具体实现则完全靠软件编程来对HY-6160的各数据位进行控制,以产生出想要的时序。
  在具体改造过程中还遇到一个小麻烦,就是在数据输入过程中,GPIO是靠脉冲的上升沿触发来识别外设是否准备好数据,而HY-6160只能使用软件查询的方式,因此造成HY-6160不能有效识别数据准备好脉冲的上升沿。为此在HY-6160与控制柜之间加一个触发器74LS74来识别该上升沿并延时,以供HY-6160可以识别。
  42软件编程
  在解决硬件连接以后,接下来是软件编程,如何利用这种简单的硬件仿真GPIO的时序。
  下面是仪器改造过程中使用通用接口卡,通过软件仿真的方式完成计算机与HFR1300控制柜进行数据通讯的源程序清单(只包括数据通讯部分):
  {输入数据}{通过HY6160仿真HP-IO进行数据输入。}functioninPutP:real;varph,pl:byte;T1:tdatetime;beginApplication.ProcessMessages;CTL:=CTLandDF{11011111};{设置输入标志Low}{复位74LS74}port[baseAdr 2]:=CTL;delay(1)CTL:=CTLor20{00100000};{把74LS74置成CP脉冲测试状态}port[baseAdr 2]:=CTL;delay(1);CTL:=CTLor1{00000001};{设置OUTA是HIGH}{规定数据输出方向为入}port[baseAdr 2]:=CTL;delay(1);CTL:=CTLandFD{11111101};{设置CTLA是low}{准备好接收数据}prot[baseAdr 2]:=CTL;delay(1);t1:=time;{记录开始时间}repeat{FLAG=LOW则数据准备好}if(time-t1) 10000>=180thenbeginMessagebeep(0);MessageDlg(?外设未准备好,无法读入数据,mterror,[mbOk],0);InPutP:=-9999;exit;{无数据输入标志}end;Application.ProcessMessages;ph:=(Port[baseAdr 6]and01);untilPh=1;{检查FLAG的状态}pl:=port[baseAdr 4];{输入低8位}{APort}ph:=port[baseAdr 5];{输入高8位}{BPort}CTL:=CTLor2{00000010};{设置CTLA是HIGH}{数据接收完毕}port[baseAdr 2]:=CTL;delay(1);CTL:=CTLandFE{11111110};{设置OUTA是low}{规定数据输出方向为出}port[baseAdr 2]:=CTL;if(phand20)=20then{符号判断,只用到013位,第14平位是符号位}InPutP:=-(((notPh)and1f) 256 notP1){生成采样数据}elseInPutP:=(Phand1F) 256 P1);{生成采样数据}end;{输出数据}{通过HY6160仿真HP-IO进行数据输出,TData:是输出数据}functionOutP(TData:word):boolean;beginApplication.ProcessMessages;CTL:=CTLandFE{11111110};{设置OUTA是LOW}{规定数据输出方向为出}port[baseAdr 2]:=CTL;port[baseAdr 0]:=TdataandFF;{输出低8位}{APort}port[baseAdr 1]:=Tdatashr8;{输出高8位}{BPort}delay(1);{延时}CTL:=CTLandFD{11111101};{设置CTLA是LOW}{数据输出有效}port[baseAdr 2]:=CTL;delay(1);CTL:=CTLor02{00000010};{设置CTLA是HIGH}port[baseAdr 2]:=CTL;delay(1);end;
  43改造前后框图对比
  5后记
  对于一些使用专用接口卡的地方,如果要对其进行改造,不可避免地要解决数据通讯问题,当然如果有可以直接实现其功能的卡最好,如果没有则只能自己做,或者使用本文的方法,选取一般的通用板然后通过软件仿真的方式来实现。相比较而言,采用软件仿真的方法成本低、使用灵活且周期短。
  使用本文所述的方法于97年对431厂HFR1300齿轮检查仪和98年对二重厂HFR2600齿轮检查仪进行改造,并获得成功。
  在改造过程中我们体会到,本方法除了可以大幅度降低改造成本之外,还可以不对控制柜做任何改动,对于仪器的精度不会构成任何影响而且如果条件具备,可以很快恢复到改造前的状态。
  6技术交流与寻求帮助
  如贵厂的齿轮检查仪出现上述毛病,请来信告诉我们,我院(中国测试技术研究院)将为贵厂提供完善技术改造服务和国家级检测服务。
 
 
举报 收藏 打赏 评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  付款方式  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报 营业执照  |  粤ICP备18059797号-1
×