0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

运动控制卡网络通讯的心跳检测之C#上位机编程

正运动技术 来源:正运动技术 作者:正运动技术 2024-12-24 10:54 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本文导读

今天,正运动小助手给大家分享一下如何使用C#上位机编程实现运动控制卡网络通讯的心跳检测功能。

01 ECI2618B硬件介绍

ECI2618B经济型多轴运动控制卡是一款脉冲型、模块化的网络型运动控制卡。控制卡本身最多支持6轴,可扩展至12轴的运动控制,用以实现直线插补、任意圆弧插补、空间圆弧、螺旋插补、电子凸轮、电子齿轮、同步跟随、虚拟轴以及机械手指令等简单的轨迹控制需求;采用优化的网络通讯协议可以实现实时的运动控制。

wKgZPGdqIEGAWqa6AAFufRYXF-c253.png

ECI2618B控制卡功能特点:

(1)本身支持6差分脉冲轴+4单端脉冲轴运动控制,最多可扩展至12轴运动控制。

(2)脉冲输出模式:脉冲/方向或双脉冲。

(3)AXIS接口支持编码器位置测量,可以配置为手轮输入模式。

(4)专用的手轮输入接口。

(5)每轴最大输出脉冲频率10MHz。

(6)通过CAN总线,最多可扩展到256个隔离输入口和256个隔离输出口。

(7)轴正负限位信号口/原点信号口可以随意配置到任何输入口。

(8)通用数字输出口最大输出电流可达500mA,可直接驱动部分电磁阀。

(9)支持点位运动、电子凸轮、直线插补、圆弧插补、连续插补运动、机械手指令。

(10)支持Basic多文件多任务编程。

(11)多种程序加密手段,保护客户的知识产权。

wKgZO2dqIFeAFxqvAAKSiO2Etu0550.png

ECI2000系列经济型多轴运动控制卡可用于电子半导体设备(检测类设备、组装类设备、锁附类设备、焊锡机)、点胶设备和流水线等12轴以内脉冲应用场合。

控制器支持windows、linux、Mac、Android、wince各种操作系统下的开发,提供vc、c#、vb.net、labview等各种环境的dll库,如下图。上位机软件编程参考《ZMotion PC函数库编程手册》。

wKgaomYuEteAI33-AAEe24mYong268.jpg

02 为什么要进行心跳检测,作用是什么

1.实时监测:

通过检测上位机与下位机的通信状态,可以实时监测上位机是否正常连接和通讯。一旦发现上位机掉线,系统可以及时采取相应的应对措施,避免因为掉线导致通讯中断或数据丢失。

2.系统稳定性:

上位机是控制系统的核心部分,掉线可能会导致整个系统失去控制。掉线检测可以保障系统的稳定性,及时发现掉线情况并进行处理,保持系统正常运行。

3.数据完整性:

上位机通常负责与用户界面交互、数据处理和决策,数据的完整性对系统运行至关重要。通过掉线检测,系统可以及时发现掉线情况,保证数据的完整性和准确性。

4.故障诊断:

掉线检测可以作为系统故障诊断的一种手段,通过监测上位机的状态,可以帮助确定系统出现问题的具体原因,加快故障排查和修复的速度。

03 BASIC语言进行心跳检测脚本语言编写

(一)前情提要

心跳检测的实现主要是两个部分组成:

1.上位机周期修改变量;

2.控制器程序周期检测变量并在掉线的时候执行一些急停操作。

在示例中,上位机程序会周期修改Heart_Status,控制器程序会周期扫描Heart_Status,并在检测到变量的值异常的时候打开输出口,模拟掉线急停的操作。

流程图如下所示:

wKgZPGdqIHaAb7DqAAIrsFEHqW4587.png

(二)创建变量

'**************************心跳相关变量定义************************
GlobalHeart_StarFlag'开始通讯标识变量
Global Heart_Status                 '通讯标识变量
GlobalHeart_Time'心跳超时时间
GlobalHeart_OutNum'急停OP数量
GlobalOutList_Address'急停OUTmodbus_long起始地址(Ps:3系列以下,自定义变量为24位浮点数,32位精度丢失,用modbus_long来代替)
GLOBAL CONST cVer=CONTROL
Heart_StarFlag =-1
Heart_Status = 0
Heart_OutNum = 10
OutList_Address =0
dim i,j

(三)开启扫描

扫描流程:

等待上位机发送扫描开始指令;

根据控制器信号进入不同扫描程序(原理一样只是实现略有不同);

将通讯标识变量置1;

等待一个超时时间;

判断通讯标识;

如果为1表示上位机没有进行通讯,掉线状态。进行掉线保护操作;

为0表示进行通讯,正常状态。开启下一次扫描。

WHILE TRUE
    WAIT until Heart_StarFlag = 1                       '等待PC软件连接
    DELAY Heart_Time                                    'PC连接之后,延时一个超时时间,避免上位
    WHILE TRUE
ifHeart_Status=0thenHeart_Status=1       '等待PC上修改通讯变量
ticks=Heart_Time'超时判断处理,等待PC上修改Heart_Flag=0
        WAIT until ticks < 0 or Heart_Status=0
             if Heart_Status = 1 THEN
                RAPIDSTOP(2)
                WAIT IDLE
                OP(0,31,MODBUS_LONG(OutList_Address))   'MODBUS_LONG存储32位整型按位控制掉线急停IO
                Heart_StarFlag=-1
                Heart_Status = 0 ELSE
                OP(0,31,0)
            Endif
    WEND
WEND
end  

04 C#语言进行心跳检测开发

(一)新建WinForm项目并添加函数库

1.在VS2010菜单“文件”→“新建”→“项目”,启动创建项目向导。

wKgZPGdqIKuAUSeSAABq_dsJTdI335.png

2.选择开发语言为“Visual C#”和.NET Framework 4以及Windows窗体应用程序。

wKgZPGdqILCAZgUFAAFFotI8gKE552.png

3.找到厂家提供的光盘资料里面的C#函数库,路径如下(32位库为例)。

(1)进入厂商提供的光盘资料找到“04PC函数”文件夹,并点击进入。

wKgZO2dqILaAYUjuAAF_c5dZC6s158.png

(2)选择“01PC函数库V2.1”文件夹。

wKgZPGdqILyAYWy-AAE-QNZnxLo183.png

(3)选择“windows平台”文件夹。

wKgZO2dqIMGAQN0JAAD3dVQveDA983.png

(4)根据需要选择对应的函数库,这里选择32位库。

wKgZO2dqIMaAFx6VAADlTI5Pwmc986.png

(5)解压C#压缩包,里面有C#对应的函数库。

wKgZO2dqIMqAN0MDAAF3XrW7LhI273.png

(6)函数库具体路径如下。

wKgZO2dqIM6AAtBkAAFbt5-utow040.png

4.将厂商提供的C#的库文件以及相关文件复制到新建的项目中。

(1)将Zmcaux.cs文件复制到新建的项目里面中。

wKgZPGdqINOAcSW6AADznk8pJDo203.png

(2)将zauxdll.dll和zmotion.dll文件放入bindebug文件夹中。

wKgZO2dqINiACmeFAAEqhdvXRuk969.png

5.用vs打开新建的项目文件,在右边的解决方案资源管理器中点击“显示所有文件”,然后鼠标右击Zmcaux.cs文件,点击“包括在项目中”。

wKgZPGdqIN-AbO6kAABlk1QIPFk832.pngwKgZO2dqIOSAJ4mnAAB8glgArcc820.png

6.双击Form1.cs里面的Form1,出现代码编辑界面,在文件开头写入using cszmcaux,并声明控制器句柄g_handle。

wKgZO2dqIOqANCYhAADPBPMNIa8552.png

(二)PC函数介绍

1.PC函数手册可在光盘资料查看,具体路径如下。

wKgZO2dqIPKAPwVBAAA-YOQ1viQ897.png

2.链接控制器,获取链接句柄。

wKgZPGdqIPiAFM6NAAEk0KT1p4M492.png

3.下载并运行控制器程序。

wKgZPGdqIPyATDgnAABu_jXtbWs243.png

4.设置控制器程序参数。

wKgZO2dqIQKACgbAAAB-TJpMk0A275.pngwKgZPGdqIQ2ADi5DAACFWf6JLDI858.png

05 C#例程建设之网络通讯的心跳检测

(一)前情提要

上位机软件的主要功能:

1.下载并运行控制器程序;

2.设置扫描参数;

3.开启和关闭心跳检测;

4.设置急停IO。

界面如下图所示:

wKgZO2dqITGAFIDRAAAWFVFRID0149.png

(二)例程讲解

1.连接控制器获取句柄,上位机操作通过获取到的句柄来操作控制器。

//连接控制器,控制器默认IP是192.168.0.11
ZauxErr = zmcaux.ZAux_OpenEth("192.168.0.11", out g_Handle);
if (0 != ZauxErr)
{
    AlmInifFile.Write(DateTime.Now.ToString("F"), "ZAux_OpenEth执行错误,错误码:" + ZauxErr.ToString(), "错误码信息");
}
wKgZO2dqIUeASXw2AAAWnje5Pgw475.png

2.下载心跳bas程序

函数介绍:

通过OpenFileDialog获取控制器程序路径,然后通过openFile判断文件是否为空,最后通过ZAux_BasDown将控制器程序下载到控制器。

private void btnFile_Click(object sender, EventArgs e)
{
    string m_strOpenFileName;
    FileStream openFile;
    OpenFileDialog fileOpen = new OpenFileDialog();
    fileOpen.Filter = "Basic Files (*.bas)|*.bas|All Files (*.*)|*.*";
    fileOpen.RestoreDirectory = true;
    fileOpen.FilterIndex = 1;
    if (fileOpen.ShowDialog() == DialogResult.OK)
    {
        m_strOpenFileName = fileOpen.FileName;
        try{
            openFile = new FileStream(fileOpen.FileName, FileMode.Open, FileAccess.Read);
            openFile.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show("Open Failed!");
            return;
        }
        ret = zmcaux.ZAux_BasDown(g_handle, m_strOpenFileName, 0);
        controlReturnQue.Enqueue(ret);
        if (ret == 0)
        MessageBox.Show("心跳程序已成功加载");
    }
}
wKgZO2dqIWGAHzzeAAAWvKWcMh8294.pngwKgZPGdqIWaAFkYJAACV9E9UjSU066.png

3.启动心跳检测

函数介绍:

首先通过SetTimeOutPara设置扫描参数,然后ZAux_Direct_SetUserVar设置Heart_StarFlag心跳标示变量。启动控制器扫描程序,随后开启上位机扫描程序。

private void btnStart_Click(object sender, EventArgs e)
{
    SetTimeOutPara();
    ret = zmcaux.ZAux_Direct_SetUserVar(g_handle, "Heart_StarFlag", 1);
    controlReturnQue.Enqueue(ret);
    timeOut = 0;
    timer1.Enabled = true;
    timer1.Interval = int.Parse(tbxUpTimer.Text);
    tbState.Text = "已启动";
}
//上位机扫描程序
private void timer1_Tick(object sender, EventArgs e)
{
    ret = zmcaux.ZAux_Direct_SetUserVar(g_handle, "Heart_Status", 0);
    controlReturnQue.Enqueue(ret);
    if (ret != 0)
    timeOut++;
    if (timeOut > 1)
    {
        tbState.Text = "未启动";
        timer1.Stop();
    }
}
wKgZPGdqIYKAZWkwAACWKBYOUuA431.pngwKgZO2dqIYiAROhoAAAWmKNIuqo675.png

4.RTSys的使用

(1)打开【RTSys】软件,点击【连接】输入控制器的IP(默认IP:192.168.0.11)。

wKgZPGdqIZGAUfzgAABwmKDan60575.pngwKgZO2dqIZaAFkHkAAAQ6aJMBWg884.png

(2)打开输出口界面,即可通过输出口观察是否掉线。

wKgZO2dqIZ2AV5FTAABbuPENWb4461.png

(三)教学视频

教学视频可点击→“教学视频:运动控制卡网络通讯的心跳检测之C#上位机编程”查看。

本次,正运动技术运动控制卡网络通讯的心跳检测之C#上位机编程,就分享到这里。

更多精彩内容请关注“正运动小助手”公众号,需要相关开发环境与例程代码,请咨询正运动技术销售工程师:400-089-8936。

本文由正运动技术原创,欢迎大家转载,共同学习,一起提高中国智能制造水平。文章版权归正运动技术所有,如有转载请注明文章来源。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 运动控制
    +关注

    关注

    5

    文章

    793

    浏览量

    34298
  • 上位机
    +关注

    关注

    27

    文章

    994

    浏览量

    56729
  • 运动控制卡
    +关注

    关注

    7

    文章

    126

    浏览量

    16044
  • 运动控制系统

    关注

    0

    文章

    96

    浏览量

    14572
  • 正运动技术
    +关注

    关注

    0

    文章

    135

    浏览量

    847
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    6路高性能PCIe EtherCAT运动控制卡XPCIE6032H#运动控制卡# 正运动# 正运动控制卡

    运动控制
    正运动技术
    发布于 :2025年12月05日 13:53:57

    紧凑型网络运动控制卡ECI1808/ECI1A08

    紧凑型网络运动控制卡ECI1808/ECI1A08
    的头像 发表于 11-28 11:17 489次阅读
    紧凑型<b class='flag-5'>网络</b><b class='flag-5'>运动</b><b class='flag-5'>控制卡</b>ECI1808/ECI1A08

    高速高精运动控制!PCIe超实时2通道EtherCAT运动控制卡上市!

    PCle超实用2通道EtherCAT运动控制卡助您实现更极速精准的运动控制
    的头像 发表于 08-01 11:52 740次阅读
    高速高精<b class='flag-5'>运动</b><b class='flag-5'>控制</b>!PCIe超实时2通道EtherCAT<b class='flag-5'>运动</b><b class='flag-5'>控制卡</b>上市!

    全球首创!PCIe超实时6通道EtherCAT运动控制卡上市!

    PCle超实用6通道EtherCAT运动控制卡助您实现更极速精准的运动控制
    的头像 发表于 07-18 10:32 663次阅读
    全球首创!PCIe超实时6通道EtherCAT<b class='flag-5'>运动</b><b class='flag-5'>控制卡</b>上市!

    全球首创!PCIe 6路高性能EtherCAT运动控制卡XPCIE6032H #正运动技术 #运动控制卡

    运动控制
    正运动技术
    发布于 :2025年07月17日 10:01:51

    C#上位运动控制卡网络通讯的周期上报

    使用C#上位编程实现运动控制卡网络通讯的周期上报功
    的头像 发表于 06-26 13:59 538次阅读
    <b class='flag-5'>C#</b><b class='flag-5'>上位</b><b class='flag-5'>机</b>与<b class='flag-5'>运动</b><b class='flag-5'>控制卡</b><b class='flag-5'>网络通讯</b>的周期上报

    EtherCAT运动控制卡应用开发教程之Java

    运动控制卡的Java开发及DLL调用
    的头像 发表于 06-13 14:29 635次阅读
    EtherCAT<b class='flag-5'>运动</b><b class='flag-5'>控制卡</b>应用开发教程之Java

    控制系统调优必备知识:“运动控制卡 控制周期怎么算”你真的懂了吗?

    在工业自动化领域,运动控制卡控制周期这个参数常常被忽视,但它却是影响整个系统稳定性、精度甚至产能的关键因素。你是不是也遇到过这些问题:电机总是抖动?轨迹跟踪老是偏?想优化系统却无从下手?大概率是你的
    的头像 发表于 05-27 10:59 1184次阅读
    <b class='flag-5'>控制</b>系统调优必备知识:“<b class='flag-5'>运动</b><b class='flag-5'>控制卡</b> <b class='flag-5'>控制</b>周期怎么算”你真的懂了吗?

    LabVIEW运动控制(五):EtherCAT运动控制器的心跳检测功能

    LabVIEW心跳检测功能
    的头像 发表于 05-13 13:49 561次阅读
    LabVIEW<b class='flag-5'>运动</b><b class='flag-5'>控制</b>(五):EtherCAT<b class='flag-5'>运动</b><b class='flag-5'>控制</b>器的<b class='flag-5'>心跳</b><b class='flag-5'>检测</b>功能

    HTTP网络通讯过程

    的 OSI 模型。 OSI  是一种理论下的模型,而  TCP/IP  已被广泛使用,成为网络互联事实上的标准。 2. HTTP 网络通讯过程 示例:简单的网络拓扑模型 详解:当键入网址到网页显示的
    的头像 发表于 01-20 09:07 1074次阅读
    HTTP<b class='flag-5'>网络通讯</b>过程

    运动控制卡周期上报实时数据IO状态C++篇

    使用C++进行运动控制卡的周期上报功能实现
    的头像 发表于 12-17 13:59 1540次阅读
    <b class='flag-5'>运动</b><b class='flag-5'>控制卡</b>周期上报实时数据IO状态<b class='flag-5'>之</b><b class='flag-5'>C</b>++篇