固高运动控制卡的使用 <2> 关于IO的访问以及调用(C#版)

 

固高控制卡之程序对IO的访问篇:

关于固高的io访问,我常用到的是固高提供的 GT_GetDi 和 GT_GetDo 两个方法,前者用于访问输入io的io状态,后者用于访问输出io的io状态。

关于官方对这两方法的说明:
指令原型:GT_GetDi (short diType,long*pValue)
指令说明:读取数字IO输入状态
指令类型:立即指令,调用后立即生效
指令参数:
      diType:指定数字IO类型。
      取值    :    0:正限位
                         1:负限位
                         2:驱动报警
                         3:原点开关
                         4:通用输入
                         5:电机到位信号
                         6:手轮MPG轴选和倍率信号
       pValue:数字IO输入状态,按位指示IO输入电平
                      当reverse=0时,1表示高电平,0表示低电平
                      当reverse=1时,相反

指令原型:GT_GetDo(short doType,long *pValue)
指令说明:读取数字IO输出状态
指令类型:立即指令,调用后立即生效
指令参数:
       doType:指定数字IO类型
         取值:      10:驱动器使能
                          11:报警清除
                          12:通用输出
          pValue:数字IO输出状态,按位指示IO输出电平
                         默认情况下,1表示高电平,IO表示低电平

在实际操作中如果只有一块固高控制卡(就是机台上只配备一个运动控制卡),GT_GetDi 以及 GT_GetDo 方法的输出值取决于diType 和 doType 并且同IO类型的IO信息数据都被获取到,它的返回值可以是十进制数也可以是其它类型的数据,在这里我们拿它的int类型的十进制数,(以下是C#中固高的gts类片段)

然后我们需要对它们返回的pValue进行十进制转换二进制的转换:

string to_BIN = Convert.ToString(pValue, 2);

转换后得到的操作数可能是101010110这样的二进制数,这里将得到的二进制数称为操作数那是因为在每个位上都代表一个io点,其中值为1代表“true”;为0代表“false”。
在这里我们暂时打住,首先需要讲清楚这串 11001010这样的二进制数是如何确定 第一位代表哪个io点位 第二个又代表哪个io点位,我们需要拿接线表的IO表来看,如下信息:

固高运动控制卡的使用 <2> 关于IO的访问以及调用(C#版)_第1张图片

 

上图是部分接线表的io点位信息,在一些规范中我们通常将点位字母EX代表通用io,I 和O 代表输入还是输出,数字代表点位的下标,打住。这里这些数字代表下标,它就是我们要说的区分返回来的二进制数的每一位代表什么io点位,就是通过这个下标来区分的。比如说通过GT_GetDi得到的二进制数是111110111 从后面开始,第一个位置代表EXI0;第二个位置代表EXI1;第三个位置代表EXI2 以此类推。

实际程序中的调用:

//返回结果
        int result_DEC = -1;
        //调用固高底层,0代表控制卡的下标(只有一张取0),4代表通用输入io
        GTS.GT_GetDi(0, 4, out result_DEC);
        //将返回的结果转换成二进制
        string to_BIN = Convert.ToString(result_DEC, 2);
   //返回结果
            int result_DEC = -1;
            //调用固高底层,12代表通用输出io
            GTS.GT_GetDo(0, 12, out result_DEC);
            //将返回的结果转换成二进制
            string to_BIN = Convert.ToString(result_DEC, 2);

 

固高控制卡之程序对IO的设值篇:

可操作的io比如说,指示灯系列以及警报灯系列等。我们还是拿固高官方说明文档来就事论事把:
比如说我常用的GT_SetDoBit
指令原型:GT_SetDoBit(short doType,short doIndex,short value)
指令说明:按位设置数字IO输出状态
指令类型:立即指令,调用后立即生效
指令参数:
         doType:指定数字IO类型
               取值:10:驱动器使能
                          11:报警清除
                          12:通用输出

         doIndex:输出IO的索引
                取值范围:当doType取值为10或11时 doIndex取[1,8]
                                  当doType取值为12时 doIndex取[1,16]

         value:设置数字IO输出电平
                     默认情况下,1表示高电平,0表示低电平

实际程序中的调用演示:

//参数1表示第一张控制卡,12表示通用输出,index表示IO位的下标,status是bool类型的数据
GTS.GT_SetDoBit(0 , 12, Convert.ToInt16(index + 1), Convert.ToInt16(status));

 

你可能感兴趣的:(运动控制(C#版),固高控制卡的io访问与设置)