固高运动控制卡的使用 <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表来看,如下信息:

 

上图是部分接线表的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));

 

  • 9
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
固高运动控制卡提供了多种IO控制方式,您可以根据具体的应用场景选择合适的方式进行开发。以下是几种常用的IO控制方式: 1. 使用固高运动控制卡IO类库 固高运动控制卡提供了IO类库,可以方便地进行IO控制。您可以使用IO类库中的方法来设置、读取IO口的状态。以下是一个简单的示例代码,演示了如何设置一个输出口为高电平: ```csharp using GTS; namespace IOControl { class Program { static void Main(string[] args) { // 连接控制卡 int cardId = 0; int ret = GTSMC.Open(cardId); if(ret != 0) { // 连接失败 return; } // 设置输出口为高电平 int port = 0; // 端口号 int bit = 0; // 位号 GTSMC.SetOutput(port, bit, true); // 断开连接 GTSMC.Close(); } } } ``` 2. 使用固高运动控制卡的通用IO口进行控制 固高运动控制卡提供了多个通用IO口,您可以使用这些IO口进行IO控制。通用IO口可以作为输入口或输出口使用使用方法与普通IO口类似。以下是一个简单的示例代码,演示了如何设置一个通用IO口为输出口并设置为高电平: ```csharp using GTS; namespace IOControl { class Program { static void Main(string[] args) { // 连接控制卡 int cardId = 0; int ret = GTSMC.Open(cardId); if(ret != 0) { // 连接失败 return; } // 设置通用IO口为输出口 int ioIndex = 0; // IO口编号,取值为0-7 GTSMC.SetIoMode(ioIndex, IoMode.Output); // 设置通用IO口为高电平 GTSMC.SetIoOutput(ioIndex, true); // 断开连接 GTSMC.Close(); } } } ``` 3. 使用固高运动控制卡的扩展IO模块进行控制 固高运动控制卡提供了多个扩展IO模块,您可以使用这些模块进行IO控制。扩展IO模块可以作为输入口或输出口使用使用方法与普通IO口类似。以下是一个简单的示例代码,演示了如何设置一个扩展IO模块的输出口为高电平: ```csharp using GTS; namespace IOControl { class Program { static void Main(string[] args) { // 连接控制卡 int cardId = 0; int ret = GTSMC.Open(cardId); if(ret != 0) { // 连接失败 return; } // 设置扩展IO模块的输出口为高电平 int moduleIndex = 0; // 模块编号,取值为0-3 int portIndex = 0; // 端口编号,取值为0-3 GTSMC.SetExtendOutput(moduleIndex, portIndex, true); // 断开连接 GTSMC.Close(); } } } ``` 以上是几种常用的IO控制方式,您可以根据实际情况选择合适的方式进行开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值