《一种嵌入式数控系统性能监测的方法.pdf》由会员分享,可在线阅读,更多相关《一种嵌入式数控系统性能监测的方法.pdf(12页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103376772 A (43)申请公布日 2013.10.30 CN 103376772 A *CN103376772A* (21)申请号 201210128326.3 (22)申请日 2012.04.27 G05B 19/4063(2006.01) (71)申请人 沈阳高精数控技术有限公司 地址 110168 辽宁省沈阳市东陵区南屏东路 号 (72)发明人 于东 李校慧 秦承刚 胡毅 林立明 陆小虎 (74)专利代理机构 沈阳科苑专利商标代理有限 公司 21002 代理人 许宗富 (54) 发明名称 一种嵌入式数控系统性能监测的方法 (57) 摘要 本发明涉及数控。
2、技术领域, 具体的说是一种 嵌入式数控系统性能监测的方法。在嵌入式数控 系统中, 每个采集模块由内存分区管理模块指定 一个对应的共享内存分区 ; 采集模块将采集到的 性能指标数据存储到相应的共享内存分区中 ; 传 输模块将每个共享内存分区中的性能指标数据通 过以太网传输给远程监测系统 ; 在远程监测系统 中, 数据提取模块接收传输过来的性能指标数据 并将其存储到相应的数据文档中, 通过图形显示 模块对性能指标数据进行图形化显示。本发明实 时性好, 数据传输高速可靠, 表达直观形象, 易于 扩展新的性能监测任务, 各性能数据采集模块彼 此独立、 互不干扰。 (51)Int.Cl. 权利要求书 1。
3、 页 说明书 6 页 附图 4 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书1页 说明书6页 附图4页 (10)申请公布号 CN 103376772 A CN 103376772 A *CN103376772A* 1/1 页 2 1. 一种嵌入式数控系统性能监测的方法, 其特征在于, 包括以下步骤 : 在嵌入式数控系统中, 每个采集模块由内存分区管理模块指定一个对应的共享内存分 区 ; 采集模块将采集到的性能指标数据存储到相应的共享内存分区中 ; 传输模块将每个共 享内存分区中的性能指标数据通过以太网传输给远程监测系统 ; 在远程监测系统中, 数据提取模块接收传输。
4、过来的性能指标数据并将其存储到相应的 数据文档中, 通过图形显示模块对性能指标数据进行图形化显示。 2. 根据权利要求 1 所述的一种嵌入式数控系统性能监测的方法, 其特征在于, 所述每 个采集模块由内存分区管理模块指定一个对应的共享内存分区的过程为 : 根据采集模块所需共享内存分区大小 S, 在共享内存中找出第一个分区大小大于或等 于 S 的空闲分区 ; 如果找到的空闲分区是共享内存的第一个分区, 则设置该分区的起始地址为 0 ; 否则 设置该分区的起始地址为上一个分区的结束地址 ; 将找到的空闲分区中有效数据的结束地址设为该分区的起始地址, 分区内的数据量为 0 ; 分区的状态由 “空闲”。
5、 修改为 “已分配” ; 分区标识设为申请者传入的分区标识 NAME ; 如果找到的空闲分区不是共享内存的最后一个分区且该空闲分区的下一个分区是 “空 闲” 状态, 则将该分区一分为二, 前一部分的长度是 S, 后一部分合并给下一个分区, 返回该 空闲分区的编号给采集模块 ; 否则, 直接返回该空闲分区的编号给采集模块。 3. 根据权利要求 1 所述的一种嵌入式数控系统性能监测的方法, 其特征在于, 所述传 输模块将每个共享内存分区打成一个数据包后再传输。 4. 根据权利要求 3 所述的一种嵌入式数控系统性能监测的方法, 其特征在于, 所述数 据包包括数据类别标识、 数据量和数据包体, 其中数。
6、据包体为性能指标数据, 数据类别标识 是数据提取模块拆分数据包体和存入相应数据文档的依据。 5. 根据权利要求 1 所述的一种嵌入式数控系统性能监测的方法, 其特征在于, 如果所 述采集模块从嵌入式数控系统中移除, 则需要释放其占有的共享内存分区。 6. 根据权利要求 5 所述的一种嵌入式数控系统性能监测的方法, 其特征在于, 所述共 享内存分区的释放步骤为 : 将要释放的共享内存分区的状态改为空闲 ; 如果该共享内存分区之前存在与其相邻的一个空闲共享内存分区或连续的多个空闲 共享内存分区, 则进行分区合并 : 找到该段空闲共享内存分区的首分区 H, 将其分区长度加 上要释放的共享内存分区的分。
7、区长度, 要释放的共享内存分区的分区长度设为 0 ; 否则, 要 释放的共享内存分区为首分区 H ; 如果该共享内存分区不是共享内存中的最后一块分区且下一块分区为空闲分区, 则合 并空闲分区 : 将首分区 H 的分区长度加上下一块共享内存分区的分区长度, 该下一块共享 内存分区的分区长度设为 0 ; 否则, 无动作 ; 修改首分区 H 之后所有连续的空闲共享内存分区的起始地址为首分区 H 的结束地址。 7. 根据权利要求 1 所述的一种嵌入式数控系统性能监测的方法, 其特征在于, 所述图 形显示模块定时的读取数据文档中数据, 动态更新监测曲线。 权 利 要 求 书 CN 103376772 A。
8、 2 1/6 页 3 一种嵌入式数控系统性能监测的方法 技术领域 0001 本发明涉及数控技术领域, 具体的说是一种嵌入式数控系统性能监测的方法。 背景技术 0002 目前, 国内一些数控系统(尤其是高性能数控系统)还处于技术探索阶段, 对数控 系统的各种静态、 动态性能的监控有助于数控系统的设计、 测试、 运行。开发或维护人员希 望能够尽早、 尽快地获得反映系统性能的参数, 这样能够更合理地选择系统所用的构件, 评 价系统设计方案, 找出系统中的性能瓶颈, 从而优化设计, 为数控系统的进一步发展奠定基 础。 0003 然而嵌入式数控系统不同于基于 PC 平台的数控系统, 它的硬件资源有限, 。
9、性能监 测不能占用过多的系统资源。所以, 只能采用简单的打印输出到屏幕观察或记录到文件中 事后分析的方式, 而不能进行图形化监测。这样不够直观方便, 也无法进行实时跟踪。 发明内容 0004 针对现有技术存在的上述问题, 本发明的目的在于提供给嵌入式数控系统开发或 维护人员一种方便快捷、 直观形象、 准确可靠的嵌入式数控系统性能监测的方法。 0005 本发明为实现上述目的所采用的技术方案是 : 一种嵌入式数控系统性能监测的方 法, 包括以下步骤 : 0006 在嵌入式数控系统中, 每个采集模块由内存分区管理模块指定一个对应的共享内 存分区 ; 采集模块将采集到的性能指标数据存储到相应的共享内存。
10、分区中 ; 传输模块将每 个共享内存分区中的性能指标数据通过以太网传输给远程监测系统 ; 0007 在远程监测系统中, 数据提取模块接收传输过来的性能指标数据并将其存储到相 应的数据文档中, 通过图形显示模块对性能指标数据进行图形化显示。 0008 所述每个采集模块由内存分区管理模块指定一个对应的共享内存分区的过程 为 : 0009 根据采集模块所需共享内存分区大小 S, 在共享内存中找出第一个分区大小大于 或等于 S 的空闲分区 ; 0010 如果找到的空闲分区是共享内存的第一个分区, 则设置该分区的起始地址为 0 ; 否则设置该分区的起始地址为上一个分区的结束地址 ; 0011 将找到的空。
11、闲分区中有效数据的结束地址设为该分区的起始地址, 分区内的数据 量为 0 ; 分区的状态由 “空闲” 修改为 “已分配” ; 分区标识设为申请者传入的分区标识 NAME ; 0012 如果找到的空闲分区不是共享内存的最后一个分区且该空闲分区的下一个分区 是 “空闲” 状态, 则将该分区一分为二, 前一部分的长度是 S, 后一部分合并给下一个分区, 返 回该空闲分区的编号给采集模块 ; 否则, 直接返回该空闲分区的编号给采集模块。 0013 所述传输模块将每个共享内存分区打成一个数据包后再传输。 0014 所述数据包包括数据类别标识、 数据量和数据包体, 其中数据包体为性能指标数 说 明 书 C。
12、N 103376772 A 3 2/6 页 4 据, 数据类别标识是数据提取模块拆分数据包体和存入相应数据文档的依据。 0015 如果所述采集模块从嵌入式数控系统中移除, 则需要释放其占有的共享内存分 区。 0016 所述共享内存分区的释放步骤为 : 0017 将要释放的共享内存分区的状态改为空闲 ; 0018 如果该共享内存分区之前存在与其相邻的一个空闲共享内存分区或连续的多个 空闲共享内存分区, 则进行分区合并 : 找到该段空闲共享内存分区的首分区 H, 将其分区长 度加上要释放的共享内存分区的分区长度, 要释放的共享内存分区的分区长度设为 0 ; 否 则, 要释放的共享内存分区为首分区 。
13、H ; 0019 如果该共享内存分区不是共享内存中的最后一块分区且下一块分区为空闲分区, 则合并空闲分区 : 将首分区 H 的分区长度加上下一块共享内存分区的分区长度, 该下一块 共享内存分区的分区长度设为 0 ; 否则, 无动作 ; 0020 修改首分区H之后所有连续的空闲共享内存分区的起始地址为首分区H的结束地 址。 0021 所述图形显示模块定时的读取数据文档中数据, 动态更新监测曲线。 0022 本发明具有以下优点 : 0023 1. 实时性好。采用共享内存存储性能数据存取速度快 ; 多个数据采集模块分别使 用共享内存中不同的内存分区, 它们可同步写共享内存不会造成冲突, 进一步提高了。
14、存取 速度。 0024 2.数据传输高速可靠。 数据传输采用了基于TCP/IP协议的Socket网络编程完成 嵌入式数控系统与远程监测系统之间的通讯, 保证了数据传输的可靠性。 0025 3. 表达直观形象。远程监测系统接收并解析嵌入式数控系统发送的数据包, 使用 曲线图形的方式显示性能数据。 0026 4. 易于扩展新的性能监测任务。该系统中性能数据的存储、 传输由嵌入式数控系 统中的数据存储模块和数据传输任务完成, 为数据采集、 数据处理、 图形显示提供了规范的 接口, 若要监测新的性能测试指标, 只需要添加相应的数据采集模块、 在数据处理任务添加 对相应数据的解析方法及在图形显示任务中添。
15、加相应的监测界面, 而无需关心数据是如何 存储、 存储的数据如何传输等细节。 0027 5. 各性能数据采集模块彼此独立、 互不干扰。该模型中各数据采集图形显示任务 彼此独立, 它们只是利用共享内存模块和内存管理模块提供的接口共享内存, 对某个监测 任务的改动不会影响到其他的监测任务。 附图说明 0028 图 1 为本发明方法应用的数控系统测试平台整体结构图 ; 0029 图 2 为本发明方法中获取空闲内存块的流程图 ; 0030 图 3 为本发明方法中释放内存块流程图 ; 0031 图 4 为本发明方法中各功能模块之间数据流向图。 具体实施方式 说 明 书 CN 103376772 A 4 。
16、3/6 页 5 0032 下面结合附图及实施例对本发明做进一步的详细说明。 0033 图 1 为本发明应用的嵌入式数控系统远程性能监测的系统结构图。 0034 为了更好的理解本发明方法, 现逐一对系统中的各模块及任务进行说明 : 0035 (1) 共享内存模块 0036 本发明方法中采用所有性能数据存储在一个共享内存中的方式, 方便数据管理与 传输。 0037 将共享内存进行分区, 每个分区与一个采集模块相对应, 每个采集模块只能将其 采集到的数据存储到其对应的分区中。 0038 为了满足不同采集模块的所需存储空间的不同需求, 又避免共享内存的浪费, 共 享内存中的各内存分区大小不一, 是根据。
17、申请者的需求动态划分的, 申请者就是采集模块。 0039 共享内存模块主要是提供一些向共享内存存储数据的接口 ; 0040 模块初始化主要是申请一块连续的内存区域用于集中存储所有的性能数据 ; 0041 模块卸载实现释放共享内存。 0042 (2) 内存分区管理模块 0043 内存分区管理模块用于管理共享内存, 定义了一个内存分区结构体用于描述共享 内存中所有内存分区。 内存分区结构体由一个分区信息结构体数组和一个分区状态数组构 成。内存分区结构体数组描述了所有内存分区信息 ; 分区状态数组描述了所有分区的当前 状态, 分区的状态有已分配和空闲两种。 0044 所述的分区信息结构体由分区起始地。
18、址、 分区长度 ( 以字节为单位 )、 分区中有效 数据的结束地址、 分区中存放的数据量和分区标识构成。分区标识和分区长度由申请该内 存分区的采集模块指定。 0045 所述的实现共享内存动态划分是通过内存分区管理模块中内存分区申请时的分 区分割和内存分区回收时的分区合并来实现的。 所述分区合并是通过共享内存中一段连续 的空闲分区, 将这段连续空闲分区的首分区长度设为这段连续分区的长度, 而其余分区长 度都设为 0 实现的。所述内存分割发生在采集模块申请内存分区时, 在一段连续空闲分区 的头部划分出一个长度为采集模块所需长度的分区。 0046 内存分区管理模块的初始化实现对共享内存中所有内存分区。
19、的初始化。 共享内存 初始状态是一整块连续空闲分区, 也就是, 共享内存的第一个分区长度为整个共享内存的 长度, 分区起始地址为 0 ; 而其余所有分区长度为 0, 分区起始地址为共享内存的结束地址。 0047 内存分区管理模块提供的分区操作包括 : 0048 (a) 获取一空闲共享内存分区 0049 采集模块初始化时需要获取一个共享内存分区用于存储性能数据 ; 0050 获取一空闲共享内存分区的流程如图 2 所示, 具体步骤如下 : 0051 采集模块所需内存分区的大小 S 和分区标识 NAME 会作为参数传给本函数 ; 0052 从内存分区结构体数组的首元素开始, 将每个 “空闲” 分区的。
20、分区长度与 S 进行 比较, 看是否大于等于它, 直到找到第一个符合要求的空闲共享内存分区 ; 0053 如果符合要求的这一分区是共享内存中的第一个分区, 将该分区的起始地址设 为 0, 否则该分区的起始地址为上一个分区的结束地址, 也就是起始地址与分区长度之和 ; 0054 将找到的空闲分区中有效数据的结束地址设为该分区的起始地址, 分区内的数 说 明 书 CN 103376772 A 5 4/6 页 6 据量为 0 ; 分区的状态修改为 “已分配” ; 分区标识设为采集模块传入的分区标识 NAME ; 0055 如果找到的空闲分区不是共享内存的最后一个分区且该分区的下一个分区是 空闲的, 。
21、则将该分区一分为二, 前一部分的长度是采集模块所需长度, 后一部分合并给下一 个分区, 通过修改要分配分区的分区长度及该分区的下一个分区的分区长度和起始地址实 现 ; 0056 将该分区分配给采集模块。 0057 (b) 释放某内存分区 0058 数据采集模块卸载时需要释放其占用的共享内存分区 ; 0059 释放一个共享内存分区的流程如图 3 所示, 具体步骤如下 : 0060 将该共享内存分区的状态改为 “空闲” ; 0061 如果要释放分区之前存在连续的空闲共享内存分区块, 则进行分区合并 ; 通过 找到该连续的空闲内存分区块的首分区 H, 将其分区长度加上要释放的内存分区的分区长 度, 。
22、而要释放内存分区的分区长度设为 0 ; 0062 如果要释放分区之前不存在连续的空闲共享内存分区块, 则该要释放的共享内 存分区为连续空闲共享内存分区块的首分区 H ; 0063 如果要释放分区不是共享内存中的最后一块分区且释放分区的下一块分区为 空闲分区, 则合并空闲分区到分区 H ; 0064 将与要释放的空闲分区相连的一段连续的空闲内存分区 ( 可能只有要释放的 空闲分区 ) 除了首分区 H 以外的其他分区的起始地址均修改为首分区的结束地址。 0065 (c) 清空共享内存分区 0066 共享内存分区已满或数据传输模块取走数据时共享内存分区需要清空, 通过将此 分区中有效数据的结束地址设。
23、为共享内存分区的起始地址及分区中存放的数据量设为 0 实现 ; 0067 (d) 增大分区中有效数据的结束地址 0068 内存分区中存放入性能数据后要相应的增大有效数据的结束地址, 增加量为存入 性能数据的字节数 ; 0069 (e) 增加分区中的数据量 0070 数据采集任务每向共享内存分区添加一组数据, 分区的数据量就要加一 ; 所述的 一组数据一般是由一个标识性能数据归属者的关键字及表示性能指标的性能值构成。 0071 (3) 采集模块 0072 以采集实时任务的 CPU 利用率为例进行说明, 利用 RTAI 实现 ; 0073 嵌入式数控系统中加载采集实时任务的 CPU 利用率的数据采。
24、集模块时主要完成 : 初始化一个用于采集实时任务 CPU 利用率的周期任务 ; 获取共享内存中的一个共享内存分 区用于存储采集到的数据, 设分区号为 rttask_cpu_bno ; 0074 所述的采集实时任务 CPU 利用率的任务为实时任务, 周期地获取实时任务 CPU 利 用率并存储到共享内存中编号为 rttask_cpu_bno 的内存分区, 包括以下步骤 : 0075 (a) 在任务初始化时将所有实时任务的执行时间设为 0, 并获取系统的时间 time1 ; 0076 (b) 任务周期执行时, 获取系统的时间 time2 说 明 书 CN 103376772 A 6 5/6 页 7 。
25、0077 (c) 遍历实时任务链表, 获取每一个实时任务的 CPU 利用率并存储, 包括以下步 骤 : 0078 初始化一实时任务指针指向 rt_linux_task ; 0079 将实时任务指针指向下一个实时任务 ; 0080 判断该任务指针是否指向 rt_linux_task, 如果任务指针是指向 rt_linux_ task 则转向 ; 0081 获取任务指针指向任务的执行时间 exctime, exctime/(time2-time1) 就是该 实时任务的CPU利用率, 将该任务的名字及其CPU利用率存入共享内存编号为rttask_cpu_ bno 的内存分区 ; 0082 将任务指针。
26、指向任务的执行时间重置, 转向 ; 0083 获取系统时间用于重设 time1 ; 0084 等待下一个执行周期 0085 卸载采集实时任务的 CPU 利用率的采集模块时主要包括 : 删除采集实时任务 CPU 利用率的周期任务 ; 释放编号为 rttask_cpu_bno 的内存分区。 0086 (4) 传输模块 0087 嵌入式数控系统通过传输模块与远程监测系统进行通讯。首先监听连接请求, 当 远程监测系统发出连接请求时, 两端建立连接。数据传输任务开始周期的将共享内存中状 态为 “已分配” 的共享内存分区中的数据打包发送 ; 采用每一个共享内存分区的数据打一个 包的方式, 以便数据提取模块。
27、分类处理 ; 0088 数据包的构成 : 首先是共享内存分区的分区标识, 是数据提取任务对数据包分类 处理的依据, 根据该标识判定拆包的方式 ; 其次是内存分区的数据量 ; 最后是内存分区内 存储的性能数据。 0089 (5) 数据提取模块 0090 数据提取将接收到的数据包拆包并分类存储, 并以此作为图形显示模块的数据基 础。 0091 数据处理任务对数据包的处理过程包括以下步骤 : 0092 (a) 接收嵌入式数控系统发送过来的数据包 ; 0093 (b) 获取数据包的数据类别标识 ; 0094 (c) 获取数据包的数据量 N ; 0095 (d) 根据数据类别标识, 按照相应的方式对数据。
28、包体进行拆包, 获取性能信息, 存 入相应的数据文档 0096 以实时任务的CPU利用率为例, 数据包有N组数据, 每组数据都是由实时任务的名 称及其 CPU 利用率构成。按照这样的数据组合, 逐一将 N 组数据拆分出来, 存入存放实时任 务 CPU 利用率的文档。 0097 (6) 图形显示模块 0098 用于图形化显示性能数据 ; 0099 以实时任务的 CPU 利用率为例, 图形显示包括以下步骤 : 0100 (a) 图形化显示任务初始化 CPU 利用率的监测界面 ; 0101 (b) 读取数据文档中的性能数据, 将当前的所有实时任务的 CPU 利用率数据在监 说 明 书 CN 1033。
29、76772 A 7 6/6 页 8 测界面中使用曲线进行连接显示 ; 0102 (c) 定时的读取数据文档中数据, 根据实时任务的变换及其 CPU 利用率的变化动 态更新实时任务 CPU 利用率的曲线。 0103 本发明方法中各功能模块之间的数据流向图如图 4 所示, 包括以下步骤 : 0104 (a) 嵌入式数控系统中所有的采集模块按照各自的方式 ( 如周期触发、 事件触发 等方式 ) 进行性能数据的采集, 并将采集到的性能数据存入其预先申请的共享内存分区 中 ; 0105 (b) 嵌入式数控系统中的数据传输模块周期地获取共享内存中状态为 “已分配” 的 共享内存分区的数据, 按照预设的数据。
30、包格式进行封装, 发送给远程监测系统 ; 0106 (c) 远程监测系统的数据提取模块接收数据传输模块传过来的数据包, 解析数据 包获取性能数据存入相应的数据文档 ; 0107 (d) 图形显示模块周期地获取数据文档中的系统性能数据, 更新性能数据的图形 显示。 说 明 书 CN 103376772 A 8 1/4 页 9 图 1 说 明 书 附 图 CN 103376772 A 9 2/4 页 10 图 2 说 明 书 附 图 CN 103376772 A 10 3/4 页 11 图 3 说 明 书 附 图 CN 103376772 A 11 4/4 页 12 图 4 说 明 书 附 图 CN 103376772 A 12 。