当前位置: 首页 > news >正文

固高GTS800控制卡开发数控系统宏程序心得

在对固高GTS800控制卡做数控系统开发时,经过多年的总结与积累,总算是实现了一个数控系统的基本功能。

基本实现宏程序的译码与执行同时执行,虽然不是实时执行,但在充分利用插补缓存区的基础上,实现了相对的实时性。

系统采用两个子线程实现,

线程1:   负责插入编译后的G指令到插补缓存区,

线程2:   负责编译宏程序为G指令。

线程1的主要功能:

1. 自动执行器,根据插补缓存区状态及上位机输入状态来自动判断插补缓存区的执行,暂停,复位。

2.根据插补缓存区状态来决定什么时候可以自动启动插补。配合宏程序的编译执行。

3.在插补缓存区数据插入过程中,同时建立一个与插补缓存区相类似数据结构的栈结构,该栈结构与插补缓存区一一对应,保留插入时各轴的终点位置,当执行到该行时,根据当前值与终点位置可实现对机床当前执行行的剩余坐标的实时跟踪。根据插补缓存区中的行标识,来动态实现数据出栈过程。

4.在执行延时插补指令时,需要在延时指令前后增加一个自定义行号的指令,保证插补缓存区状态判断的准确性,因为当延时指令为最后一行时,一旦执行到该行,插补缓存区状态的判断就会认为当前插补缓存区为空,且静止,造成对插补缓存区的误判。所以最好的方式是在延时指令的前后插入一个自定义行号的指令。保证准确的判断。

5.当通过线程2中宏程序数据结构的优化,这里取消了对插补缓存区中,输出指令通过buff中的指令实现,而采用通过线程配合上位机的普通输出口实现,因为插补缓存区的输出指令对于在扩展模块上的输出口没用。

6.插补缓存区只执行插补指令和延时指令两种类型既可。

线程2主要功能: 

1.通过线程1中的开始编译宏程序状态位来启动宏程序编译。

2.当碰到特定的宏程序时,自动从内部暂停后续宏程序的编译,同时通知线程1,等待插补缓存区为空后,,再继续执行。例如探针指令,输出M指令,等等可扩展指令。

3.宏程序的译码过程可采用动态链表的方式,实现主子程序功能。

具体实现就不表了,mimi

相关文章:

固高GTS800控制卡开发数控系统宏程序心得

在对固高GTS800控制卡做数控系统开发时,经过多年的总结与积累,总算是实现了一个数控系统的基本功能。 基本实现宏程序的译码与执行同时执行,虽然不是实时执行,但在充分利用插补缓存区的基础上,实现了相对的实时性。 …...

linux入门---线程池的模拟实现

目录标题 什么是线程池线程的封装准备工作构造函数和析构函数start函数join函数threadname函数完整代码 线程池的实现准备工作构造函数和析构函数push函数pop函数run函数完整的代码 测试代码 什么是线程池 在实现线程池之前我们先了解一下什么是线程池,所谓的池大家…...

jQuery HTML/CSS 参考文档

jQuery HTML/CSS 参考文档 文章目录 应用样式 示例属性方法示例 jQuery HTML/CSS 参考文档 应用样式 addClass( classes ) 方法可用于将定义好的样式表应用于所有匹配的元素上。可以通过空格分隔指定多个类。 示例 以下是一个简单示例&#xff0c;设置了para标签 <p&g…...

QT 布局管理综合实例

通过一个实例基本布局管理&#xff0c;演示QHBoxLayout类、QVBoxLayout类及QGridLayout类效果 本实例共用到四个布局管理器&#xff0c;分别是 LeftLayout、RightLayout、BottomLayout和MainLayout。 在源文件“dialog.cpp”具体代码如下&#xff1a; 运行效果&#xff1a; Se…...

使用 pubsub-js 进行消息发布订阅

npm 包地址 github 包地址 pubsub-js 是一个轻量级的 JavaScript 基于主题的消息订阅发布库 &#xff0c;压缩后小于1b。它具有使用简单、性能高效、支持多平台等优点&#xff0c;可以很好地满足各种需求。 功能特点&#xff1a; 无依赖同步解耦ES3 兼容。pubsub-js 能够在…...

TA Shader基础

渲染管线 概念&#xff1a;GPU绘制物体的时候&#xff0c;标准的&#xff0c;流水线一样的操作 游戏引擎如何绘制物体&#xff1a;CPU提供绘制数据&#xff08;顶点数据&#xff0c;纹理贴图等&#xff09;给GPU&#xff0c;配置渲染管线&#xff08;装载Shader代码到GPU&…...

VScode + opencv(cmake编译) + c++ + win配置教程

1、下载opencv 2、下载CMake 3、下载MinGW 放到一个文件夹中 并解压另外两个文件 4、cmake编译opencv 新建文件夹mingw-build 双击cmake-gui 程序会开始自动生成Makefiles等文件配置&#xff0c;需要耐心等待一段时间。 简单总结下&#xff1a;finish->configuring …...

Vue中的常用指令v-html / v-show / v-if / v-else / v-on / v-bind / v-for / v-model

前言 持续学习总结输出中&#xff0c;Vue中的常用指令v-html / v-show / v-if / v-else / v-on / v-bind / v-for / v-model 概念&#xff1a;指令&#xff08;Directives&#xff09;是Vue提供的带有 v- 前缀 的特殊标签属性。可以提高操作 DOM 的效率。 vue 中的指令按照不…...

ChatGPT 提问技巧

ChatGPT是由 OpenAI 训练的⼀款⼤型语⾔模型&#xff0c;能够和你进⾏任何领域的对话。 它能够⽣成类似于⼈类写作的⽂本。您只需要给出提示或提出问题&#xff0c;它就可以⽣成你想要的东⻄。 在此⻚⾯中&#xff0c;您将找到可与 ChatGPT ⼀起使⽤的各种提示。 只需按照下…...

2023-11-09 LeetCode每日一题(逃离火灾)

2023-11-09每日一题 一、题目编号 2258. 逃离火灾二、题目链接 点击跳转到题目位置 三、题目描述 给你一个下标从 0 开始大小为 m x n 的二维整数数组 grid &#xff0c;它表示一个网格图。每个格子为下面 3 个值之一&#xff1a; 0 表示草地。1 表示着火的格子。2 表示一…...

阿里云-maven私服idea访问私服与组件上传

1.进入aliyun制品仓库 2. 点击 生产库-release进入 根据以上步骤修改本地 m2/setting.xml文件 3.pom.xml文件 点击设置获取url 4. idea发布组件...

Ubuntu上的TFTP服务软件

2023年11月11日&#xff0c;周六下午 目录 tftpd-hpa atftpd 配置和启动 tftpd-hpa 这是一个TFTP服务器软件包&#xff0c;提供了一个简单的TFTP服务器。 你可以使用以下命令安装它&#xff1a; sudo apt-get install tftpd-hpaatftpd 这是另一个常用的TFTP服务器软件包…...

jedis、lettuce与redis交互分析

概念梳理&#xff1a; redis是缓存服务器&#xff0c;jedis、lettuce都是Java语言下的redis客户端&#xff0c;用于与redis服务器进行交互。springboot项目中一般使用的是spring data redis&#xff0c;spring data redis依赖与jedis或lettuce&#xff0c;可以进行配置&#x…...

C++算法:矩阵中的最长递增路径

涉及知识点 拓扑排序 题目 给定一个 m x n 整数矩阵 matrix &#xff0c;找出其中 最长递增路径 的长度。 对于每个单元格&#xff0c;你可以往上&#xff0c;下&#xff0c;左&#xff0c;右四个方向移动。 你 不能 在 对角线 方向上移动或移动到 边界外&#xff08;即不允…...

OpenWRT配置SFTP远程文件传输,让数据分享更安全

文章目录 前言 1. openssh-sftp-server 安装2. 安装cpolar工具3.配置SFTP远程访问4.固定远程连接地址 前言 本次教程我们将在OpenWRT上安装SFTP服务&#xff0c;并结合cpolar内网穿透&#xff0c;创建安全隧道映射22端口&#xff0c;实现在公网环境下远程OpenWRT SFTP&#xf…...

已解决:rm: 无法删除“/opt/module/zookeeper-3.4.10/zkData/zookeeper_server.pid“: 权限不够

解决&#xff1a; ZooKeeper JMX enabled by default Using config: /opt/module/zookeeper-3.4.10/bin/../conf/zoo.cfg Stopping zookeeper ... /opt/module/zookeeper-3.4.10/bin/zkServer.sh: 第 182 行:kill: (4149) - 不允许的操作 rm: 无法删除"/opt/module/zooke…...

Flink(四)【DataStream API - Source算子】

前言 今天开始学习 DataStream 的 API &#xff0c;这一块是 Flink 的核心部分&#xff0c;我们不去学习 DataSet 的 API 了&#xff0c;因为从 Flink 12 开始已经实现了流批一体&#xff0c; DataSet 已然是被抛弃了。忘记提了&#xff0c;从这里开始&#xff0c;我开始换用 F…...

GIS入门,xyz地图瓦片是什么,xyz数据格式详解,如何发布离线XYZ瓦片到nginx或者tomcat中

XYZ介绍 XYZ瓦片是一种在线地图数据格式,由goole公司开发。 与其他瓦片地图类似,XYZ瓦片将地图数据分解为一系列小的图像块,以提高地图显示效率和性能。 XYZ瓦片提供了一种开放的地图平台,使开发者可以轻松地将地图集成到自己的应用程序中。同时,它还提供了高分辨率图像和…...

[工业自动化-14]:西门子S7-15xxx编程 - 软件编程 - STEP7 TIA博途是全集成自动化软件TIA portal快速入门

目录 一、TIA博途是全集成自动化软件TIA portal快速入门 1.1 简介 1.2 软件常用界面 1.3 软件安装的电脑硬件要求 1.4 入口 1.5 主界面 二、PLC软件编程包含哪些内容 2.1 概述 2.2 电机运动控制 一、TIA博途是全集成自动化软件TIA portal快速入门 1.1 简介 Siemens …...

【教3妹学编程-算法题】Range 模块

3妹&#xff1a;哈哈哈哈哈哈哈哈 2哥 : 3妹看什么呢&#xff0c;笑的这么开森 3妹&#xff1a;2哥你快来看啊&#xff0c;成都欢乐谷的NPC模仿“唐僧”&#xff0c; 太搞笑了。 2哥 : 哦这个我也看到了&#xff0c;真的是唯妙唯肖&#xff0c;不能说像&#xff0c;只能说一模一…...

浅谈MIKE前处理中投影坐标处理问题

MIKE 中投影坐标一直是个问题&#xff0c;尤其对 2d 里的科氏力影响很大&#xff0c; 由于我们现获取基础资料都是 CAD 格式&#xff0c;在 GIS 里转 shp 后我们会发现很多是地方坐标&#xff0c;对于这种情况&#xff0c;小编也是无能无力&#xff0c;只有想办法 让 CAD 提供方…...

你的SSH密钥可能已经过期了细

引言 在现代软件开发中&#xff0c;性能始终是衡量应用质量的重要指标之一。无论是企业级应用、云服务还是桌面程序&#xff0c;性能优化都能显著提升用户体验、降低基础设施成本并增强系统的可扩展性。对于使用 C# 开发的应用程序而言&#xff0c;性能优化涉及多个层面&#x…...

5步解锁暗黑破坏神2存档编辑自由:从新手到专家的完整指南

5步解锁暗黑破坏神2存档编辑自由&#xff1a;从新手到专家的完整指南 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 你是否曾经在暗黑破坏神2的单机冒险中感到资源匮乏&#xff1f;是否梦想过自由调整角色属性&#xff0c;打造…...

SQL视图能否存储计算结果_引入虚拟列与计算字段应用

SQL视图无法存储计算结果&#xff0c;每次查询都会实时执行底层SELECT语句中的所有计算&#xff1b;如需固化计算结果&#xff0c;应使用虚拟列&#xff08;MySQL/PostgreSQL支持&#xff09;或物化视图&#xff08;PostgreSQL需手动刷新&#xff0c;Oracle等支持自动刷新&…...

大模型落地卡在哪?:SITS2026圆桌实录揭示工程化人才缺口已达47.6%(附企业真实JD对标清单)

第一章&#xff1a;SITS2026圆桌&#xff1a;大模型工程化人才需求 2026奇点智能技术大会(https://ml-summit.org) 工程化落地的核心能力断层 在SITS2026圆桌讨论中&#xff0c;来自头部AI基础设施厂商、金融与医疗垂类企业的CTO一致指出&#xff1a;当前大模型项目失败主因并…...

Vue.js组件通信Props在函数式组件中传递与性能表现分析

函数式组件通过 context.props 显式接收 props&#xff0c;不支持响应式绑定、v-model 和自定义事件&#xff1b;需父组件传入回调函数&#xff0c;适用于纯展示型静态节点&#xff0c;Vue 3 中已废弃。Vue.js 中函数式组件&#xff08;Functional Components&#xff09;本身不…...

如何查看对象在数据文件中的分布_DBA_EXTENTS与FILE_ID映射关系

DBA_EXTENTS的FILE_ID对应v$datafile.FILE_ID而非FILE#&#xff0c;需用FILE_ID关联&#xff1b;FILE_ID0表示临时段或undo延迟清理区&#xff0c;应查v$tempfile而非v$datafile&#xff1b;查询必须加OWNER和TABLESPACE_NAME过滤以提升性能。DBA_EXTENTS 里 FILE_ID 和实际数据…...

C#怎么获取多显示器屏幕尺寸_C#如何适应不同分辨率【解析】

Screen.AllScreens 可获取所有显示器的 Bounds&#xff08;含位置和宽高&#xff09;及 WorkingArea&#xff0c;需配合 per-monitor V2 manifest 实现准确 DPI 感知&#xff0c;否则 Bounds 返回逻辑像素而非物理分辨率。怎么用 Screen.AllScreens 拿到所有显示器的尺寸直接遍…...

ComfyUI-Manager 终极指南:轻松管理ComfyUI自定义节点和模型

ComfyUI-Manager 终极指南&#xff1a;轻松管理ComfyUI自定义节点和模型 【免费下载链接】ComfyUI-Manager ComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and enable various…...

PyTorch 2.8镜像部署教程:支持screen后台运行与日志管理的稳定服务配置

PyTorch 2.8镜像部署教程&#xff1a;支持screen后台运行与日志管理的稳定服务配置 1. 镜像概述与环境准备 PyTorch 2.8深度学习镜像基于RTX 4090D 24GB显卡和CUDA 12.4深度优化&#xff0c;专为高性能计算任务设计。这个预配置环境消除了复杂的依赖安装过程&#xff0c;让开…...