C#集成固高运动控制卡,固高运动控制卡C#开发进行IO控制 快速入门固高运动控制卡开发 固高集成C#程序 固高c#二次开发资料 上位机开发固高运动控制卡 上位机集成固高运动控制卡 多线程操作固高

运动控制卡因其高性能和灵活性,在多个行业中得到了广泛应用。主要应用行业包括但不限于:

  1. 电子制造行业:用于精密电子元件的组装、贴片、检测等自动化生产线。
  2. 半导体设备:在晶圆处理、芯片检测等高精度设备中提供精确的运动控制。
  3. 数控机床:提升机床的加工精度和效率,适用于金属切削、雕刻等多种加工任务。
  4. 激光加工设备:包括激光切割、打标、焊接系统,特别是在需要高精度定位和快速响应的场合。
  5. 印刷包装机械:提高印刷质量和效率,实现精准的物料搬运和定位。
  6. 机器人行业:为工业机器人、服务机器人等提供运动控制解决方案,提升其运动的平滑性和准确性。
  7. 纺织机械:在自动化纺织设备中实现精准的织造、绣花等操作。
  8. 医疗设备:如医疗影像设备、手术机器人等,需要高度精确和稳定控制的场合。

固高科技运动控制卡的主要优点包括:

  • 高性能插补算法:固高在插补技术上具有国内领先地位,能够实现高精度、高速度的运动轨迹控制。
  • 广泛兼容性:支持多种总线标准(如PCI、PCIe、EtherCAT等),易于集成到不同系统中。
  • 丰富的软件支持:提供功能强大的编程和调试软件,便于用户开发定制化应用。。

固高科技(Googol Technology)的运动控制卡非常方便与C#集成。根据提供的信息,固高为用户提供了完整的C#语言示例程序和源代码,特别是针对GTS系列如GTS-800运动控制卡。这些示例程序涵盖了点胶机的初始化、运动控制、速度规划、位置校准等核心功能,有助于用户快速进行二次开发。

固高提供的C#示例代码和操作手册等资料齐全,使得开发者能够参照现有代码进行修改和扩展,以满足特定的应用需求。这意味着即便是没有深厚运动控制背景的C#开发者,也能较为容易地利用固高的运动控制卡来开发控制系统。

此外,固高运动控制卡通常会配备相应的SDK(Software Development Kit,软件开发工具包),里面包含了一系列库文件和API接口文档,让C#程序员可以通过调用这些库函数来控制运动卡,进行设备配置、运动指令发送、状态监控等操作,从而实现对电机或机器人的精准控制。

 参考程序下载------>点击

private void btn_homeStart_Click(object sender, EventArgs e)
        {
            short axisHome;
            axisHome = (short)(cmb_selectAxis.SelectedIndex + 1);
            mc.THomeStatus tHomeStatus = new mc.THomeStatus();
            mc.THomePrm tHomePrm = new mc.THomePrm();
            cmb_moveDir.Invoke(new Action(() =>
            {
                switch (Convert.ToInt16(cmb_moveDir.SelectedIndex + 1))   //
                {
                    case 1: tHomePrm.moveDir = 1;
                        break;
                    case 2: tHomePrm.moveDir = -1;
                        break;
                }
            }));
            cmb_indexDir.Invoke(new Action(() =>
            {
                switch (Convert.ToInt16(cmb_indexDir.SelectedIndex + 1))   //
                {
                    case 1: tHomePrm.indexDir = 1;
                        break;
                    case 2: tHomePrm.indexDir = -1;
                        break;
                }
            }));
            tHomePrm.edge = 0;
            tHomePrm.velHigh = (double)nud_velH.Value;
            tHomePrm.velLow = (double)nud_velL.Value;
            tHomePrm.acc = 1;
            tHomePrm.dec = 1;
            tHomePrm.smoothTime = 10;
            tHomePrm.homeOffset = 0;
            tHomePrm.searchHomeDistance = 0;
            tHomePrm.searchIndexDistance = 20000;
            tHomePrm.escapeStep = 20000;
            cmb_home.Invoke(new Action(() =>
            {
                switch (Convert.ToInt16(cmb_home.SelectedIndex + 1))   //mode
                {
                    case 1: tHomePrm.mode = mc.HOME_MODE_LIMIT;
                        break;
                    case 2: tHomePrm.mode = mc.HOME_MODE_LIMIT_HOME;
                        break;
                    case 3: tHomePrm.mode = mc.HOME_MODE_LIMIT_INDEX;
                        break;
                    case 4: tHomePrm.mode = mc.HOME_MODE_LIMIT_HOME_INDEX;
                        break;
                    case 5: tHomePrm.mode = mc.HOME_MODE_HOME;
                        break;
                    case 6: tHomePrm.mode = mc.HOME_MODE_HOME_INDEX;
                        break;
                    case 7: tHomePrm.mode = mc.HOME_MODE_INDEX;
                        break;
                }
            }));

            //回零线程
            if (threadHome == null)
            {
                threadHome = new Thread(() =>
                {
                    gCard.SmartHome(0, axisHome, tHomePrm, out tHomeStatus);
                }) { IsBackground = true };
                threadHome.Start();
            }
            else
            {
                threadHome.Abort();
                threadHome = new Thread(() =>
                {
                    gCard.SmartHome(0, axisHome, tHomePrm, out tHomeStatus);
                }) { IsBackground = true };
                threadHome.Start();
            }
            //状态监测线程
            mc.THomeStatus homeStatus = new mc.THomeStatus();
            if (threadHomeStatus == null)
            {
                threadHomeStatus = new Thread(() =>
                {
                    while(true)
                    {
                        sRtn = mc.GT_GetHomeStatus(0,axisHome,out homeStatus );
                        this.Invoke(new Action(() =>
                        {
                            txt_homeRun.Text = homeStatus.run.ToString();
                            txt_homeStage.Text = homeStatus.stage.ToString();
                            txt_homeError.Text = homeStatus.error.ToString();
                            txt_capturePos.Text = homeStatus.capturePos.ToString();
                            txt_targetPos.Text = homeStatus.targetPos.ToString();
                        }));
                    }
                }){ IsBackground = true };
                threadHomeStatus.Start();
            }
            else
            {
                threadHomeStatus.Abort();
                threadHomeStatus = new Thread(() =>
                {
                    while (true)
                    {
                        sRtn = mc.GT_GetHomeStatus(0, axisHome, out homeStatus);
                        this.BeginInvoke(new Action(() =>
                        {
                            //Thread.Sleep(5);
                            txt_homeRun.Text = homeStatus.run.ToString();
                            txt_homeStage.Text = homeStatus.stage.ToString();
                            txt_homeError.Text = homeStatus.error.ToString();
                            txt_capturePos.Text = homeStatus.capturePos.ToString();
                            txt_targetPos.Text = homeStatus.targetPos.ToString();
                        }));
                    }
                }) { IsBackground = true };
                threadHomeStatus.Start();
            }

        }

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
固高运动控制卡提供了多种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控制方式,您可以根据实际情况选择合适的方式进行开发

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值