基于线程局部存储技术的多通道数控系统仿真

发布者:mu22最新更新时间:2013-02-21 来源: 21IC 关键字:存储技术  多通道  数控系统仿真 手机看文章 扫描二维码
随时随地手机看文章

1 概述

组件对象模型(CompONent Object Model, COM)是由美国微软公司提出的一种二进制代码互操作规范,ActiveX 是实现了一些特定接口(例如IDispatch)的标准COM 组件。

COM/ActiveX 规范已成为软件业内最重要的工业标准之一。

基于组件的软件构架方法通过重用已有的软件组件,可使软件开发者像搭积木一样快速构造应用软件,从而提高生产效率,使软件设计更加规范可靠。目前基于组件的软件开发方法已经在业界得到广泛应用。在数控系统中也使用组件技术实现加工仿真,但现有文献较少涉及多个ActiveX 组件实例的情况。ActiveX 组件采用类似Windows消息运行机制的单套间模型(Single Threaded Apartment, STA)来串行化对组件属性和方法的调用,即对ActiveX 组件的所有调用由COM 系统负责线程的同步。因此,该组件的调用是线程安全的。

COM 在STA 套间内的线程中创建一个隐藏窗口,将套间外的线程对这个对象的调用都转变成对隐藏窗口发送消息,并由隐藏窗口的消息处理函数来实际调用组件对象,从而实现STA 套间模型。

一个进程中的所有线程均处于同一虚拟地址空间,每个函数的局部变量在运行该函数的每个线程中都是唯一的,但静态和全局变量则被所有线程所共享。即在多个ActiveX 组件实例的情况下,ActiveX 组件的 STA 模型不能保证全局数据成员是线程安全的。

2 线程局部存储原理

线程局部存储(Thread Local Storage, TLS)是Win32 系统提供的一种简化多线程程序设计的底层基础技术,其实质是介入全局数据创建过程,建立并管理全局数据与线程的关联,使得全局数据为其关联线程所私有。TLS 原理如图1 所示。

 



 

每个进程拥有一组TLS 槽口(Slot),每个槽口用序号标识,Windows 2000 有1 088 个这样的槽口。线程通过API 函数可以分配TLS 槽口,在TLS 槽口存取数据,进程中使用同一个序号的不同线程可指向独立的局部堆内存中进行数据存储,即线程ID 和槽口号确定了一个二维空间映射,线程通过API 函数获得线程间相互独立的数据存储地址。[page]

图 1 也表明了采用TLS 机制的具有2 个ActiveX 组件实例的运行时软件内存结构,进程分配了2 个TLS 索引值gdwTlsIndex1 和 gdwTlsIndex2,这2 个索引值代表了TLS槽口的序号,但不同线程按照相同的序号却得到2 个独立的局部堆地址,而这些数据在线程内却具有全局数据的可访问性,即每个线程有单独的全局数据拷贝,该数据对线程内的函数具有全局作用域。

Win32 系统中与TLS 有关的API 及用法如下:

(1)进程初始化时分配TLS 槽口:

DWORD gdwTlsIndex;gdwTlsIndex = TlsAlloc();

(2)调用TlsSetValue 保存数据:

LPVOID lpvBuffer;lpvBuffer = (LPVOID) LocalAlloc(LPTR, 256);

TlsSetValue(gdwTlsIndex, lpvBuffer); //保存存储区指针

(3)调用TlsGetValue 取数据:

LPVOID lpvData;lpvData = TlsGetValue(gdwTlsIndex); //取TLS 槽口中保存的存//储区指针

(4)调用TlsFree 释放槽口:

lpvBuffer = TlsGetValue(gdwTlsIndex);

LocalFree((HLOCAL) lpvBuffer); //释放存储区

TlsFree(gdwTlsIndex); //释放TLS 槽口

3 应用实例

      一种基于Z-Buffer 的铣削实体加工仿真算法,华中数控HNC-32 数控系统HMI 的仿真系统继承自该代码,其主要结构如下:



      可见,显示缓存等核心数据结构设计为全局变量,但HNC-32 的设计目标是多通道数控系统,每个通道都需要一个实体加工仿真组件的实例,由于全局缓存数据为所有实例共享,因此出现的所有通道显示内容将完全一致,无法实现多通道仿真。为简化改造工作,将原系统中约50 多个全局变量合并为一个结构,并将原全局变量作为其成员,即一个大的结构变量包括了50 个原全局变量。

      按照 TLS 要求该结构变量必须动态创建,如下代码表明了它的声明、创建过程,代码还表明每个ActiveX 组件构造时即调用API 函数TlsAlloc 获得一个线程索引,在局部堆申请到存储空间后用API 函数TlsSetValue 将该存储区地址与线程索引对应。



[page]

在其他函数中,可以通过线程索dwTlsIndex 调用API函数TlsGetValue 引访问到上述大结构变量,进而访问到原全局变量,代码如下:

//被OpenPatg->hFile 调用读刀位文件并显示刀位轨迹

int CSimuCTRlBCtrl : ShowPath(FILE *FP){

GlobalValues *g=(GlobalValues *)TlsGetValue(dwTlsIndex);

g->CtrlObj->GetClientRect(&rt);...

应用实例界面如图 2 所示。



      在 TLS 改造后,每个ActiveX 实例均有单独的、与线程索引对应的局部堆全局变量,各个通道运行不同的代码程序并在各自通道的实体仿真上显示各自的运行结果,实现了多通道的独立执行。

      4 结束语

      基于组件的应用软件结构具有先进性,但在多实例条件下必须实现各实例全局数据的独立性,线程局部存储技术是最佳解决方案。在解决传统非面向对象开发的代码改造问题时,本文提出的改造方式具有对原有代码改动少、逻辑关系清楚等优点。在华中数控基于工业以太网现场总线的新一代多通道HNC-32 数控系统中的成功应用表明了该方法具有实用性。

关键字:存储技术  多通道  数控系统仿真 引用地址:基于线程局部存储技术的多通道数控系统仿真

上一篇:基于紫金桥组态软件的油井勘测监控系统
下一篇:ZigBee网络Cluster-Tree优化路由算法研究

推荐阅读最新更新时间:2024-05-02 22:33

一种基于OMAP-L138平台的多通道频谱分析仪设计
频谱分析仪作为信号分析领域中应用广泛的测试仪器,其主要功能是测量信号的幅度/频率响应,可以完成频谱分析、失真测量、衰减测量、电子组件增益测量等,是从事电子产品研发、生产、检验的重要工具。目前频谱分析仪主要有两种形式:一种是传统的频谱分析仪的前端电路是一定带宽内可调谐的接收机,输入信号经变频器变频后由低通滤器输出,滤波输出作为垂直分量,频率作为水平分量,在示波器屏幕上绘出坐标图,就是输入信号的频谱图。但是,传统的频谱分析仪有明显的缺点,它只能测量频率的幅度,缺少相位信息,因此属于标量仪器而不是矢量仪器。另一种是基于快速傅里叶变换FFT)的现代频谱分析仪,通过傅里叶运算将被测信号分解成分立的频率分量,达到与传统频谱分析仪同样的结果。这
[单片机]
一种基于OMAP-L138平台的<font color='red'>多通道</font>频谱分析仪设计
SD存储技术及其基于S3C2410的应用
摘要:本文首先介绍了SD Memory Card ( Secure D ig ita l MemoryCard)的基本结构和原理,着重对SD 卡的命令字和操作流程进行介绍。接着研究了三星32位嵌入式处理器S3C2410与SD 卡硬件接口电路及其对SD卡的基本读写操作方式。 关键词: SD;存储; S3C24101 1 引言 SD卡( Secure DigitalMemory Card)是一种基于Flash的新一代存储器,它着重数据存储的安全、容量和性能,是许多便携式电子产品如数码相机、手提电话, PDA 等理想的外部存储介质。 2 SD的基本概念 2. 1 SD的通信协议 SD卡系统可以在两种通信协议下工作: S
[工业控制]
SD<font color='red'>存储技术</font>及其基于S3C2410的应用
stm32 adc dma多通道采样 数据错位 的解决方法
解决方法:不要采用连续转换模式 ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; 需要时才实施转换 ADC_SoftwareStartConvCmd(ADC1, ENABLE); 转换后取消转换 ADC_SoftwareStartConvCmd(ADC1, DISABLE); 经过测试能够解决stm32 adc dma多通道采样 数据错位
[单片机]
多通道零相位差数据采集系统设计与实现
引言 ---- 数据采集技术是以前端的模拟信号处理、数字化、数字信号处理和计算机等高科技为基础而形成的一门综合技术,是联系模拟世界和数字世界的桥梁。它在许多领域得到了广泛的应用。数字技术促进了上述这些领域的发展,而反过来又对数据采集系统提出了愈来愈高的要求,本文所设计的16位16通道零相位差数据采集系统不仅具有较高的转化精度,而且提供多通道零相位差特性。正是由于各通道之间的信号在数字化之后,不存在相位差,这对那些诸如声纳阵列、多点振动检测、电力系统监测等需要对多路信号进行相位相关特性分析的事件而言,使用这种采集系统就特别有意义。USB接口的普遍性使本系统很容易与PC机接口。 1 系统设计 ---- 16位16通道零相位差数据采
[模拟电子]
利用Σ-Δ ADC在工业多通道数据采集系统中进行信号调理
        引言   许多高端工业应用中,高性能数据采集系统(DAS)与各种传感器之间需要提供适当的接口电路。如果信号接口要求提供多通道、高精度的幅度和相位信息,这些工业应用可以充分利用MAX11040等ADC的高动态范围、同时采样以及多通道优势。本文介绍了MAX11040的Σ-Δ架构,以及如何合理选择设计架构和外部元件,以获得最佳的系统性能。    高速、Σ-Δ架构的优势   图1所示为高端三相电力线监视/测量系统,这类工业应用需要以高达117dB的动态范围、64ksps采样速率精确地进行多通道同时采集数据。为了获得最高系统精度,必须正确处理来自传感器(例如,图1中的CT、PT变压器)的信号,以满足ADC输入
[电源管理]
利用Σ-Δ ADC在工业<font color='red'>多通道</font>数据采集系统中进行信号调理
STT-MRAM存储技术详解
存储器是当今每一个计算机系统、存储方案和移动设备都使用的关键部件之一。存储器的性能、可扩展性,可靠性和成本是决定推向市场的每个系统产品经济上成功或失败的主要标准。 目前,几乎所有产品都使用一种或组合使用若干种基于电荷存储的易失性存储器DRAM和SRAM,以及非易失性存储器NOR和NAND闪存。现有的这些存储器具有显著优势,导致其在过去30年占居市场主导地位。但因为系统始终在追求更快、更小、更可靠、更便宜,以在未来五到十年间进行有力竞争,所以上述存储器的不足,也给其未来蒙上阴影。 有新的突破性技术以挑战者姿态进入市场,特别是诸如电阻式RAM(RRAM)和相变RAM(PCRAM)等非易失性存储器(NVM),它们承诺提供高性能、低功耗、
[单片机]
STT-MRAM<font color='red'>存储技术</font>详解
新兴存储技术如何助力云存储落地?
    云存储服务落地,从底层硬件的角度来看,需要依赖存储基础设施,尤其是硬盘技术的发展。自1956年IBM公司推出首台磁盘存储器RAMAC,到2007年HGST(前身为Hitachi GST)推出全球首款1TB硬盘,首个1TB用了近50年的时间;而到今年HGST 推出年全球首款10TB硬盘,硬盘容量增长了十倍仅用了八年的时间。   但是随着云存储和大数据的不断发展,数据不断地创建和复制,存储需求远远超过硬盘磁录密度发展的速度,企业和云数据中心在提高存储效率以及降低成本方面面临着日益增大的压力。为帮助云数据中心应对数据增长的挑战,HGST率先推出了革命性的全新解决方案——氦气密封式硬盘平台。氦气密封式硬盘可以帮助云数据中心在几乎每一
[安防电子]
基于DAC5687的高速多通道信号模拟器设计
1 引 言 DAC5687是美国TI公司出品的一款双通道、16bit高速数模转换芯片。片内资源丰富, 具有内插、调制等多种功能。FPGA 因其属于大规模在系统可编程专用集成电路而且具有高密度、高速度、高可靠性等特点, 因此FPGA 应用于高速多通道雷达信号模拟器可大大提高系统设计的灵活性和系统的扩展性。 本文设计的高速多通道信号模拟器系统可广泛应用于通信、雷达信号的模拟产生, 为雷达设备, 特别是接收机设备检修提供参考信号, 分离设备故障问题, 简化设备检修过程。另外, 此高速多通道信号模拟器系统基于CPC I总线, 具用很好的工程稳定性和通用性。 2 系统概述 2. 1 系统组成 高速多通道信号模拟器采用通用C
[模拟电子]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved