一种基于数控系统的OPCUA服务器系统的制作方法

allin2022-07-12  223


一种基于数控系统的opcua服务器系统
技术领域
1.本发明涉及数控机床领域,尤其涉及一种基于数控系统的opcua服务器系统。


背景技术:

2.在数控机床领域,由于生产厂家不同通信接口、通讯数据也存在着很大的差异,并伴随着不同设备的信息种类繁多,数据格式不统一等问题,使得在数据采集、分类、分析过程中,变得非常繁琐;车间数字化装备一旦发生替换或升级,往往需要重新修改车间信息系统软件,并且需要重新部署,使得实施难度大大增大,且导致设备及软件的通用性、互操作性、复用率降低。
3.同时,车间数据采集过程中,出现线路不通畅、断网等现象时。过去的采集设备会经常出现“归零”现象,无法锁存断电前数据。
4.另外,当多线程的服务器模型在响应成百上千路的连接请求时,创建的线程过多会造成资源严重占用的情况,使得线程进入锁死状态,降低了系统对外的响应效率。


技术实现要素:

5.本发明提供一种基于数控系统的opcua服务器系统,以克服当前机床服务器软件通用性底、无法锁存断电前数据、对外相应效率低等技术问题。
6.为了实现上述目的,本发明的技术方案是:
7.一种基于数控系统的opcua服务器系统,包括:通信采集模块、赋值模块和协议解析和读取模块;
8.所述通信采集模块包括通信线程池,所述通信线程池采用时间轮询方式和多线程并发方式采集并存储机床数据信息;其中,所述通信线程池设置线程池,线程池均相应通信通道,所述通信通道通过socket方式与机床内部socket服务器端口进行报文交换,进而实现通信线程池与机床进行数据通信;
9.所述赋值模块用于将机床数据信息进行节点数据赋值得到机床缓冲区数据;
10.所述协议解析和读取模块用于读取机床缓冲区数据,并将机床缓冲区数据初始化,将初始化的机床数据信息加载opcua标准的机构化数据模型,并将opcua标准的机构化数据模型中的变量类型通过字符串的形式进行赋值,进而获得机床数据信息与变量类型的映射关系,形成映射表,操作人员通过读取字符串与映射表实现机床数据信息的分类。
11.进一步的,所述机床缓冲区数据初始化具体为:加载opcua配置类数据,所述加载opcua配置类数据包括加载机床缓冲区数据、加载加密证书、加载访问用户的设定信息和时钟同步设置。
12.进一步的,所述通信线程池预设动态线程。
13.进一步的,所述通信模块与机床进行数据通信时采用非阻塞方式进行通信。
14.进一步的,获得机床数据信息与变量类型的映射关系具体为:将机床缓冲区数据中的数据字段值与opcua标准的机构化数据模型中的变量类型的字符串进行数据包抓取,
获得机床数据信息与变量类型的映射关系。
15.进一步的,所述赋值模块利用静态变量赋值方法将机床数据信息进行节点数据赋值。
16.进一步的,所述协议解析和读取模块还包括对opcua标准的机构化数据模型进行数据清洗后进行赋值.
17.进一步的,所述数据清洗具体为:将默认的xml格式的opcua标准的机构化数据模型转化为与机床数据信息相匹配的格式。
18.有益效果:本发明解决了国产非标生产设备,如本方案中数控机床,无法与国际标准协议互为通讯(互操作)问题,通过opcua标准的机构化数据模型中的变量类型通过字符串的形式进行赋值,获得机床数据信息与变量类型的映射关系;解决了采集数量单台设备几百条产生的资源占用过高问题;采用时间轮询方式和多线程并发方式采集并存储机床数据信息,解决了通讯通道在高速通讯时的高可用性,使得操作过程不产生卡顿现象,同时保存锁存断电前数据。
附图说明
19.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
20.图1为本发明opcua服务器系统结构示意图;
21.图2为本发明静态数据变量赋值信息数据流转图;
22.图3为本发明数据采集模型采集逻辑图。
具体实施方式
23.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
24.本实施例提供了一种基于数控系统的opcua服务器系统,如图1-2,包括:通信采集模块、赋值模块和协议解析和读取模块;
25.所述通信模块包括通信线程池,所述通信线程池采用事件轮询方式和多线程并发方式采集并存储机床数据信息;其中,所述通信线程池设置线程池,线程池均相应通信通道,所述通信通道通过socket方式与机床内部socket服务器端口进行报文交换,进而实现通信线程池与机床进行数据通信;具体的,通过定时器调度机制实现事件轮询的采集方式,其包括单一轮询周期可以同时调用或执行多个指令并生成可以控制的采集点,控制范围包括名称、采集周期、线程数量、是否不被系统其他进程杀掉等;
26.所述赋值模块用于将机床数据信息进行节点数据赋值得到机床缓冲区数据;
27.所述协议解析和读取模块用于读取机床缓冲区数据,并将机床缓冲区数据初始化,将初始化的机床数据信息加载opcua标准的机构化数据模型,并将opcua标准的机构化
数据模型中的变量类型(名称、可访问节点名和访问权限)通过字符串的形式进行赋值,进而获得机床数据信息与变量类型的映射关系,形成映射表,操作人员通过读取字符串与映射表实现机床数据信息的分类。具体映射表包括动态信息表和静态信息表。
28.以下为本技术实施例中的动态信息表和静态信息表:
29.30.31.[0032][0033]
表1.动态信息表
[0034]
浏览名称描述内容cx-test-staticinfo-cncid机床编号1cx-test-staticinfo-cncseriesmodel机床型号kmc400s-ucx-test-staticinfo-cncname机床名称五轴立式加工中心cx-test-staticinfo-cncbrand厂家品牌kede科德cx-test-staticinfo-cncproductiondate生产日期2021/12/12cx-test-staticinfo-cncwarranty保修状态在保cx-test-staticinfo-cnccallcenter联系方式0411-0000000cx-test-staticinfo-cncauthorizationcode授权码10.2.176.225
[0035]
表2.静态信息表
[0036]
在具体实施例中,所述机床缓冲区数据初始化具体为:加载opcua配置类,所述加载opcua配置类包括加载机床缓冲区数据、加载加密证书、加载访问用户的设定信息和时钟同步设置。
[0037]
在具体实施例中,所述通信线程池预设动态线程,预设动态线程可以很好的适配不同计算机,自动初始化分配合理的系统使用资源,所述预设动态线程具体为通过每台机床设备的cpu核心数量进行最小线程规划,例如预设线程为核心数的2倍或4倍,根据设备配置进行线程的高低设置。
[0038]
在具体实施例中,所述通信模块进行数据通信时采用非阻塞方式进行通信。非阻塞方式进行通信使每一个线程彼此之间不受任何干扰,且用户在出现网络中断请求后,也不会出现软件进程卡死的现象。更满足现场生产设备,如数控机床的安全性需求。当数据映射之后,对系统进行界面开发,以让用户清晰明了进行配置;所述非阻塞方式具体为:通过多线程方式实现了非阻塞效果,本实施例中利用多线程方式实现将每一个采集任务定义到线程池中的每一个线程中,彼此独立并拥有自己的生命周期,进而不会出现单一进程卡住或长时间等待现象。
[0039]
具体的,所述非阻塞方式为:以通讯线程对象和通讯指令集为主。其中,通讯指令集为利用内存缓冲区实现对结果的收集,以满足可以接收瞬时数据响应的请求结果。
[0040]
给定机床等设备作为数据提供方,已做好防粘包、丢包处理,并且满足数据提供的基本需求,整个过程为非阻塞异步方式实现,通过java的异步接口实现,整个通讯过程如下:
[0041]
(1)初始化通讯通道;
[0042]
(2)注册通道选择器,写入线程队列中,并设置是否为长连接、以及超时时间等必要设置;
[0043]
(3)通过定时器调度机制实现事件的轮询,事件为读取缓冲区中的数据和发送机床报文信息;
[0044]
(4)处理连接和读写事件;
[0045]
(5)处理成功后,关闭通道,释放资源;
[0046]
(6)抓取数据包,从队列(缓冲区)中取出实体对象数据所关联的数据字段值,即设备实际数据。
[0047]
在具体实施例中,获得机床数据信息与变量类型的映射关系具体为:将机床缓冲区数据中的数据字段值与opcua标准的机构化数据模型中的变量类型的字符串进行数据包抓取,获得机床数据信息与变量类型的映射关系;所述数据包抓取过程为:通过通讯指令发送给机床端,机床会返回相应数据报文包,即数据包,其格式为xml键值对格式,通过socket通讯通道获取通道内字符集信息,实现串流获取,即报文包在网络传输层中的数据,实现了数据包的抓取。
[0048]
在具体实施例中,所述赋值模块利用静态变量赋值方法将机床数据信息进行节点数据赋值,可以减少反复的对象重建带来的内存资源开销。
[0049]
在具体实施例中,所述协议解析和读取模块还包括对opcua标准的机构化数据模型进行数据清洗后进行赋值,所述数据清洗具体为:将默认的xml格式的opcua标准的机构化数据模型转化为与机床数据信息相匹配的格式,如int型、double型、string型。
[0050]
在具体应用过程中,在使用前需要对数控系统进行通信测试,测试本系统能够与机床进行连通。
[0051]
具体的,opcua标准的机构化数据模型可以分为目录、方法、变量、视图等,用于形成opcua基金会定义的标准数据格式,一个模型对应一个信息单元,每个信息单元下包含若干子变量信息,如轴坐标目录下包含x,y,z轴等信息。获得机床数据信息与变量类型的映射关系并保在机床系统内存中,更能满足实时性需求,且在节点不断扩充至上百上千条之后,不会给系统造成太多资源上的压力。
[0052]
具体的,本系统与机床设备之间通讯采用socket方式进行,即本系统通信时发起客户端与机床内部socket服务端接口进行报文交换,并按一定的频率进行。即编写socket通讯的客户端程序。但传统的socket客户端通讯程序存在阻塞机制,通过非阻塞框架解决通讯阻塞问题。并在此基础上增加cpu并发线程提高异步通信能力。获取当前计算机处理器内核数量,如数控系统为4核处理器,则设计线程(采集点数)x(cpu内核数)+2,增加的两个线程是作为冗余方案处理,保证总有一个冗余的线程供给断线重连的通道所用。还可以设计通信用例,解决的是数据采集过程所存在的卡顿、忙等、资源占用过高问题等问题。
[0053]
具体的,所述通信模块中每一个时间片,同时采用多个线程并发执行采集操作。同时每一个采集操作又分配了2个动态线程,以满足断线、数据通路异常等现象之后的连接恢复所复用的线程。同时,与机床上的数据通信,采用非阻塞设计,使每一个线程彼此之间不受任何干扰,且用户在出现网络中断请求后,也不会出现软件进程卡死的现象。更满足现场生产设备,如数控机床的安全性需求。当数据映射之后,对本系统进行界面开发,以让用户清晰明了进行配置。
[0054]
具体的,节点信息调用实体类对象(机床数据信息)对应对象,即可对节点类进行赋值。opcua基金会定义了几种生命周期,如订阅、修改、退出订阅、关闭等,本系统通过设置
对应接口,实现此过程在节点监视器类的监控下实时变换,其中,监视器类为每一个节点继承的一个类,目的是监听其他系统对本节点进行的订阅动作,比如订阅、修改、取消。
[0055]
具体的,通过函数调用相关订阅、修改、取消,opcua节点的生命周期状态。
[0056]
具体的,所述机床数据信息包括主轴进给量、主轴倍率、轴负载(转矩)、轴负载(电流)、当前坐标、剩余坐标、程序坐标、机床状态、当前刀具信息、当天加工件数等。
[0057]
以下为本发明中获取机床主轴信息采集测试实施例:
[0058]
本发明总通信采集模块的通信层分为,接口类:echoofspindle,接口实现类:spindleservice,业务通信类:spindlehandler,通信采集模块中设有数据采集模型,数据采集模型采集逻辑如图3所示,具体的,数据采集模型中设有线程池,通过轮询方式和多线程并发的方式采集机床的主轴信息,采集成功后,注销此线程并释放对应资源,生成下一采集线程进入队列进行等待;若采集不成功同样注销此线程并生成下一采集线程进入队列进行等待;多个瞬时线程进行数据采集,并且能够根据某些数据的特性,如实时要求性高的数据则将采集频率调低即可,如200ms,该频率通过定时器控制,如下所示。
[0059]
在spindleservice实现类中进行线程定义,每次新建一个线程,线程名为"spindleserver",且不驻留系统总线程池。
[0060]
通信采集模块向机床发送通讯指令,开启机床内部socket服务器端口,机床内部socket服务器发送对应的节点数据,赋值模块对节点数据赋值得到机床缓冲区数据;所述协议解析和读取模块加载opcua标准的机构化数据模型并通过字符串的形式进行赋值,机床得到字符串后返回应答数据并相应通讯结果,过滤信息并赋值给静态对象(机床主轴信息),赋值后为:spindledto.seto1(double.valueof(over.text())),其中spindledto为主轴倍率信息的静态变量,其倍率信息值为“100”;用户访问主轴倍率测试结果。
[0061]
如果通信错误则出现,进行报错通知,并输出为error.log格式文件于系统所在的目录中。
[0062]
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
转载请注明原文地址: https://www.8miu.com/read-554.html

最新回复(0)