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

embedded/2024/12/27 1:39:30/

本文导读

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

01 ECI2618B硬件介绍

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

ECI2618B控制卡功能特点:
(1)本身支持6差分脉冲轴+4单端脉冲轴运动控制,最多可扩展至12轴运动控制
(2)脉冲输出模式:脉冲/方向或双脉冲。
(3)AXIS接口支持编码器位置测量,可以配置为手轮输入模式。
(4)专用的手轮输入接口。
(5)每轴最大输出脉冲频率10MHz。
(6)通过CAN总线,最多可扩展到256个隔离输入口和256个隔离输出口。
(7)轴正负限位信号口/原点信号口可以随意配置到任何输入口。
(8)通用数字输出口最大输出电流可达500mA,可直接驱动部分电磁阀。
(9)支持点位运动、电子凸轮、直线插补、圆弧插补、连续插补运动、机械手指令。
(10)支持Basic多文件多任务编程。
(11)多种程序加密手段,保护客户的知识产权。
在这里插入图片描述

ECI2000系列经济型多轴运动控制卡可用于电子半导体设备(检测类设备、组装类设备、锁附类设备、焊锡机)、点胶设备和流水线等12轴以内脉冲应用场合。
控制器支持windows、linux、Mac、Android、wince各种操作系统下的开发,提供vc、c#、vb.net、labview等各种环境的dll库,如下图。上位机软件编程参考《ZMotion PC函数库编程手册》。
在这里插入图片描述

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

1.实时监测:
通过检测上位机与下位机的通信状态,可以实时监测上位机是否正常连接和通讯。一旦发现上位机掉线,系统可以及时采取相应的应对措施,避免因为掉线导致通讯中断或数据丢失。
2.系统稳定性:
上位机是控制系统的核心部分,掉线可能会导致整个系统失去控制。掉线检测可以保障系统的稳定性,及时发现掉线情况并进行处理,保持系统正常运行。
3.数据完整性:
上位机通常负责与用户界面交互、数据处理和决策,数据的完整性对系统运行至关重要。通过掉线检测,系统可以及时发现掉线情况,保证数据的完整性和准确性。
4.故障诊断:
掉线检测可以作为系统故障诊断的一种手段,通过监测上位机的状态,可以帮助确定系统出现问题的具体原因,加快故障排查和修复的速度。

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

(一)前情提要
心跳检测的实现主要是两个部分组成:
1.上位机周期修改变量;
2.控制器程序周期检测变量并在掉线的时候执行一些急停操作。
在示例中,上位机程序会周期修改Heart_Status,控制器程序会周期扫描Heart_Status,并在检测到变量的值异常的时候打开输出口,模拟掉线急停的操作。
流程图如下所示:
在这里插入图片描述

(二)创建变量

'**************************心跳相关变量定义************************
Global Heart_StarFlag               '开始通讯标识变量
Global Heart_Status                 '通讯标识变量
Global Heart_Time                   '心跳超时时间
Global Heart_OutNum                 '急停OP数量
Global OutList_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.等待上位机发送扫描开始指令;
2.根据控制器信号进入不同扫描程序(原理一样只是实现略有不同);
3.将通讯标识变量置1;
4.等待一个超时时间;
5.判断通讯标识;
6.如果为1表示上位机没有进行通讯,掉线状态。进行掉线保护操作;
7.为0表示进行通讯,正常状态。开启下一次扫描。

WHILE TRUEWAIT until Heart_StarFlag = 1                       '等待PC软件连接DELAY Heart_Time                                    'PC连接之后,延时一个超时时间,避免上位WHILE TRUEif Heart_Status = 0 then Heart_Status = 1           '等待PC上修改通讯变量ticks = Heart_Time                              '超时判断处理,等待PC上修改Heart_Flag = 0WAIT until ticks < 0 or Heart_Status=0if Heart_Status = 1 THENRAPIDSTOP(2)WAIT IDLEOP(0,31,MODBUS_LONG(OutList_Address))   'MODBUS_LONG存储32位整型按位控制掉线急停IOHeart_StarFlag=-1Heart_Status = 0 ELSEOP(0,31,0)EndifWEND
WEND
end  

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

(一)新建WinForm项目并添加函数库
1.在VS2010菜单“文件”→“新建”→“项目”,启动创建项目向导。
在这里插入图片描述

2.选择开发语言为“Visual C#”和.NET Framework 4以及Windows窗体应用程序。
在这里插入图片描述

3.找到厂家提供的光盘资料里面的C#函数库,路径如下(32位库为例)。
(1)进入厂商提供的光盘资料找到“04PC函数”文件夹,并点击进入。
在这里插入图片描述

(2)选择“01PC函数库V2.1”文件夹。
在这里插入图片描述

(3)选择“windows平台”文件夹。
在这里插入图片描述

(4)根据需要选择对应的函数库,这里选择32位库。
在这里插入图片描述

(5)解压C#压缩包,里面有C#对应的函数库。
在这里插入图片描述

(6)函数库具体路径如下。
在这里插入图片描述

4.将厂商提供的C#的库文件以及相关文件复制到新建的项目中。
(1)将Zmcaux.cs文件复制到新建的项目里面中。
在这里插入图片描述

(2)将zauxdll.dll和zmotion.dll文件放入bin\debug文件夹中。
在这里插入图片描述

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

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

(二)PC函数介绍
1.PC函数手册可在光盘资料查看,具体路径如下。
在这里插入图片描述

2.链接控制器,获取链接句柄。
在这里插入图片描述

3.下载并运行控制器程序。
在这里插入图片描述

4.设置控制器程序参数。
在这里插入图片描述
在这里插入图片描述

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

(一)前情提要
上位机软件的主要功能:
1.下载并运行控制器程序;
2.设置扫描参数;
3.开启和关闭心跳检测;
4.设置急停IO。
界面如下图所示:
在这里插入图片描述

(二)例程讲解
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(), "错误码信息");
}

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("心跳程序已成功加载");}
}

在这里插入图片描述
在这里插入图片描述

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();}
}

在这里插入图片描述
在这里插入图片描述

4.RTSys的使用
(1)打开【RTSys】软件,点击【连接】输入控制器的IP(默认IP:192.168.0.11)。
在这里插入图片描述
在这里插入图片描述

(2)打开输出口界面,即可通过输出口观察是否掉线。
在这里插入图片描述

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

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

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


http://www.ppmy.cn/embedded/149054.html

相关文章

芯科科技蓝牙、Wi-Fi、Wi-SUN产品广获业界认可,技术创新引领行业潮流

物联网领军企业领跑未来无线开发平台发展 2024年&#xff0c;Silicon Labs&#xff08;亦称“芯科科技“&#xff0c;NASDAQ&#xff1a;SLAB&#xff09;在物联网&#xff08;IoT&#xff09;领域持续深耕&#xff0c;凭借创新的企业发展理念与实践、行业领先的技术与产品&am…

No.27 笔记 | RCE远程命令执行基础

一、RCE概述 &#xff08;一&#xff09;定义 RCE指攻击者可以通过远程方式在目标系统上执行恶意代码的漏洞或攻击技术&#xff0c;范围广泛&#xff0c;包括代码执行、文件包含、反序列化、命令执行、写文件Getshell等情况。 &#xff08;二&#xff09;危害 攻击者可继承…

云手机群控能用来做什么?

随着云手机的发展&#xff0c;云手机群控技术逐渐从小众的游戏多开工具&#xff0c;发展为涵盖多个领域的智能操作平台。不论是手游搬砖、短视频运营&#xff0c;还是账号养成等场景&#xff0c;云手机群控都展现出了强大的应用潜力。本文将为大家详细解析云手机群控的应用场景…

关于UDP缓冲区和丢包统计

Tunning and observing UDP buffers 调整和观察 UDP 缓冲区 UDP 缓冲区由 7 个 sysctl 参数控制。单个缓冲区的大小由以下参数控制&#xff1a; net.core.wmem_default、net.core.wmem_max&#xff1a; 控制套接字默认和最大发送缓冲区大小&#xff0c;单位为字节。 每个套…

uni-app 跨端开发精美开源UI框架推荐

&#x1f380;&#x1f380;&#x1f380;uni-app 跨端开发系列 &#x1f380;&#x1f380;&#x1f380; 一、uni-app 组成和跨端原理 二、uni-app 各端差异注意事项 三、uni-app 离线本地存储方案 四、uni-app UI库、框架、组件选型指南 五、uni-app 蓝牙开发 六、uni-app …

解决:excel鼠标滚动幅度太大如何调节?

在excel里为什么滚动一次跳过很多行呢&#xff1f;很不方便。。。 1. 问题&#xff1a; 一开始单元格从第1行开始&#xff1a; 鼠标轻轻滚动一下后&#xff0c;直接跳到第4行&#xff1a; 鼠标在word和浏览器里都是好好的。在excel里为什么不是滚动一次跳过一行呢&#xff…

基于Spring Boot的个人健康管理系统

一、系统背景与意义 随着现代生活节奏的加快和人们健康意识的日益增强&#xff0c;个人健康管理成为了人们关注的焦点。然而&#xff0c;传统的健康管理方式往往依赖于纸质记录、定期体检等手段&#xff0c;不仅效率低下&#xff0c;而且难以实现对健康数据的持续跟踪和深入分…

Nginx的stream模块代理四层协议TCP的流量转发

Nginx的stream模块是一个功能强大的工具&#xff0c;专门用于处理四层协议&#xff08;即网络层和传输层&#xff0c;如TCP和UDP&#xff09;的流量。以下是对Nginx stream模块的详细解析&#xff1a; 一、基本功能 Nginx的stream模块主要用于实现TCP和UDP数据流的代理、转发…