一种数据处理方法、上位机及下位机与流程
未命名
07-12
阅读:99
评论:0

1.本公开涉及数据处理技术领域,具体地涉及一种数据处理数据处理方法、上位机及下位机。
背景技术:
2.随着工业4.0概念的提出,工业向集成化、智能化升级,工业4.0以智能制造为主导,而工业软件则被视为智能制造的核心基础性工具。
3.安装有工业软件的上位机向plc控制器等下位机发送控制指令时,不同的控制指令需要根据不同的通信需求制定、转码,指令生成方式繁琐,通用性差,且上、下位机之间通信效率低。另外,上、下位机每次进行通信时,由于传输的控制指令格式不确定,每次通信均需要下位机重新对控制指令一一校验确定控制指令的格式,并根据格式对控制指令进行解析,下位机解析还原控制指令过程繁杂。
技术实现要素:
4.本公开实施例的目的在于提供一种数据处理方法、上位机及下位机,以解决现有技术中存在的上位机下发的控制指令生成方式繁琐,通用性差,上、下位机之间通信效率低,以及下位机解析还原上位机下发的控制指令过程繁杂等技术问题。
5.为了解决上述技术问题,本公开实施例提供一种数据处理方法,应用于上位机,所述方法包括:
6.获取输入的初始指令;
7.将所述初始指令转换为预设格式的中间指令,所述中间指令包括功能码和与所述功能码对应的指令数据;
8.将所述中间指令传输至下位机,以使所述下位机根据所述功能码获取对应的所述指令数据。
9.在一些实施例中,所述将所述中间指令传输至下位机,包括:
10.根据所述指令数据将所述中间指令填充至对应的指令队列中;
11.在所述指令队列中所述中间指令的数量达到预设数量时,将所述指令队列传输至下位机。
12.在一些实施例中,所述将所述初始指令转换为预设格式的中间指令,包括:
13.识别所述初始指令中的控制对象和控制数据;
14.根据所述控制对象的类型,确定所述指令数据的数据类型;
15.根据所述控制对象和所述控制数据,确定所述功能码;
16.根据所述数据类型和所述功能码,将所述控制数据转换为所述指令数据,并根据所述功能码和所述指令数据得到所述中间指令。
17.在一些实施例中,所述根据所述控制对象的类型,确定所述指令数据的数据类型,包括:
18.在所述控制对象为i/o时,确定所述数据类型为整型;
19.在所述控制对象为轴时,根据所述控制数据,确定所述数据类型。
20.在一些实施例中,所述在所述控制对象为轴时,根据所述控制数据,确定所述数据类型,包括:
21.若所述控制数据为所述轴的执行与否,确定所述数据类型为整型;
22.若所述控制数据为设定所述轴的执行参数,则确定所述数据类型为浮点型。
23.在一些实施例中,所述指令队列包括整型指令队列及浮点型指令队列;
24.所述根据所述指令数据将所述中间指令填充至对应的指令队列中,包括:
25.在所述中间指令的指令数据为整型时,将所述中间指令填充至整型指令队列;
26.在所述中间指令的指令数据为浮点型时,将所述中间指令填充至浮点型指令队列。
27.在一些实施例中,所述将所述中间指令传输至下位机之前,还包括:
28.识别下位机的类型;
29.在识别到所述下位机为一体机时,采用共享内存的方式传输所述中间指令;
30.在识别到所述下位机为非一体机时,采用套接字的方式传输所述中间指令。
31.本公开实施例还提供一种数据处理方法,应用于下位机,所述方法包括:
32.接收上位机发送的中间指令,获取所述中间指令的功能码;
33.根据所述功能码获取对应的所述中间指令的指令数据;
34.调用与所述指令数据对应的处理模块处理所述指令数据。
35.在一些实施例中,所述调用与所述指令数据对应的处理模块处理所述指令数据,包括:
36.识别所述功能码的序号;
37.根据所述功能码的序号,调用对应的所述处理模块;
38.所述处理模块根据所述指令数据控制执行元件执行。
39.在一些实施例中,所述根据所述功能码的序号,调用对应的所述处理模块,包括:
40.调用与所述序号相对应的处理模块;或
41.将所述功能码的序号减去预定偏移值得到特征序号;
42.调用与所述特征序号相对应的处理模块。
43.本公开实施例还提供一种上位机,包括:
44.获取模块,配置为获取输入的初始指令;
45.转换模块,配置为将所述初始指令转换为预设格式的中间指令,所述中间指令包括功能码和与所述功能码对应的指令数据;
46.传输模块,配置为将所述中间指令传输至下位机,以使所述下位机根据所述功能码获取对应的所述指令数据。
47.本公开实施例还提供一种下位机,包括:
48.接收模块,配置为接收上位机发送的中间指令,获取所述中间指令的功能码;
49.获取模块,配置为根据所述功能码获取对应的所述中间指令的指令数据;
50.调用模块,配置为调用与所述指令数据对应的处理模块处理所述指令数据。
51.本公开实施例还提供一种电子设备,至少包括存储器和处理器,所述存储器上存
储有计算机程序,所述处理器在执行所述存储器上的计算机程序时实现上述任一应用于上位机或下位机的技术方案所述方法的步骤。
52.本公开实施例还提供一种计算机可读存储介质,所述计算机可读介质存储有计算机程序,所述计算机程序被处理器执行时实现上述任一应用于上位机或下位机的技术方案所述方法的步骤。
53.本公开实施例提供的数据处理方法、上位机及下位机,通过获取输入的初始指令,将所述初始指令转换为包含功能码和对应的指令数据的预设格式的中间指令,由于中间指令格式较为统一,即均包括功能码和与该功能码对应的指令数据,因此,便于下位机根据功能码对中间指令进行解析,得到指令数据,进而对执行元件进行控制,可以有效提高下位机解析控制数据的数据处理效率以及后续执行控制数据的执行效率,且数据处理方法通用性强,适用范围广。
附图说明
54.为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
55.图1为本公开实施例的应用于上位机的数据处理方法的流程图;
56.图2为本公开实施例的数据处理方法的信息传输示意图;
57.图3为本公开实施例的功能码的格式图;
58.图4为本公开实施例的中间指令的管理结构示意图;
59.图5为本公开实施例的应用于下位机的数据处理方法的流程图;
60.图6为本公开实施例的功能码与处理模块的关系示意图;
61.图7为本公开实施例的功能码与处理模块的另一关系示意图;
62.图8为本公开实施例的上位机的结构示意图;
63.图9为本公开实施例的下位机的结构示意图。
具体实施方式
64.此处参考附图描述本公开的各种方案以及特征。
65.应理解的是,可以对此处申请的实施例做出各种修改。因此,上述说明书不应该视为限制,而仅是作为实施例的范例。本领域的技术人员将想到在本公开的范围和精神内的其他修改。
66.包含在说明书中并构成说明书的一部分的附图示出了本公开的实施例,并且与上面给出的对本公开的大致描述以及下面给出的对实施例的详细描述一起用于解释本公开的原理。
67.通过下面参照附图对给定为非限制性实例的实施例的优选形式的描述,本公开的这些和其它特性将会变得显而易见。
68.还应当理解,尽管已经参照一些具体实例对本公开进行了描述,但本领域技术人员能够确定地实现本公开的很多其它等效形式,它们具有如权利要求所述的特征并因此都
位于借此所限定的保护范围内。
69.当结合附图时,鉴于以下详细说明,本公开的上述和其他方面、特征和优势将变得更为显而易见。
70.此后参照附图描述本公开的具体实施例;然而,应当理解,所申请的实施例仅仅是本公开的实例,其可采用多种方式实施。熟知和/或重复的功能和结构并未详细描述以避免不必要或多余的细节使得本公开模糊不清。因此,本文所申请的具体的结构性和功能性细节并非意在限定,而是仅仅作为权利要求的基础和代表性基础用于教导本领域技术人员以实质上任意合适的详细结构多样地使用本公开。
71.本说明书可使用词组“在一种实施例中”、“在另一个实施例中”、“在又一实施例中”或“在其他实施例中”,其均可指代根据本公开的相同或不同实施例中的一个或多个。
72.工业软件指应用于工业领域,以提高工业企业研发、生产、管理水平和工业装备性能的应用软件,其核心作用在于帮助工业企业提质增效降本,并增强企业在高端制造的竞争力。
73.工业软件功能主要有:(1)数据的采集、管理及后续的分析预测;(2)工艺模型的构建与优化(3)设备(下位机)的控制与调度。
74.工业软件的应用方案主要有“pc+板卡”、“pc+plc”两种。其中板卡以c#为编程语言,开发门槛较plc要高,因此“pc+plc”方案应用范围更广泛。
75.随着近年来硬件的升级迭代,以及内核管理技术的成熟,已能通过分核处理,将实时系统与windows系统/linux系统分别放在不同处理器中,实现上位机pc(软件侧)和下位机plc(控制侧)的一体化。
76.上位机和下位机通信交互的核心内容包括:
77.1)上位机将将控制指令打包发送至下位机;
78.2)下位机解析指令内容,并执行,实现对应的控制功能,并获取控制侧所控制的设备的当前状态,反馈至软件侧;
79.3)上位机解析反馈状态,并根据反馈信息对设备的显示和状态进行切换,或者重新发送控制指令至控制侧。
80.上位机向下位机下发控制指令的常用处理流程为:
81.1)将不同的通讯需求制定为不同的通信指令;
82.2)以g代码或文本格式,记录指令处理流程信息;
83.3)读取流程信息,将其逐行转换为对应的通信指令,以统一的符号标识指令结尾;
84.4)在通信数据前n位标识本次通信的指令个数,以防通信漏包;
85.5)拼接指令,整体发送至下位机。
86.上述处理流程存在的主要问题有:1)各控制指令的格式不统一,当控制需求变化时,需要重新设计指令格式;2)流程处理的指令个数不定,每次通信需下位机重新校验,下位机解析还原过程繁杂;3)当发生控制需求更改时,需要上位机重新整体下发控制指令,且下位机从头解析指令并执行,上位机下发指令过程和下位机解析执行过程繁琐,影响通信效率。
87.有鉴于此,本公开实施例提供一种数据处理方法、上位机及下位机,用于上位机和下位机之间的通信。
88.图1和图2示出了本公开实施例的应用于上位机的数据处理方法的流程图,如图1所示,本公开实施例提供一种数据处理方法,应用于上位机,包括:
89.s101:获取输入的初始指令。
90.其中,输入的初始指令为用于对下位机的执行元件进行控制的控制指令。上位机与下位机通信连接后,上位机可以获取执行元件的元件信息,并根据元件信息生成对应的至少一条初始指令,以便通过下位机对执行元件的执行进行控制。初始指令中包含用于对执行元件的执行进行控制控制数据。初始指令的格式可以为任意格式,本公开不具体限定。初始指令也可以由下位机生成,并输入至上位机。
91.特别地,为满足不同执行元件的初始指令的生成,本实施例中优选为上位机接收各执行元件对应的下位机发送的元件信息,进而生成对应的初始指令,并输入至上位机中预设的存储器中存储,当需要对某一或某些执行元件控制时,上位机调用对应的初始指令,并对其进行处理即可。
92.元件信息包括执行元件的设备名称、设备类型、设备位置、设备当前的运行状态中的至少一种。
93.s102:将所述初始指令转换为预设格式的中间指令,所述中间指令包括功能码和与所述功能码对应的指令数据。
94.其中,功能码表示执行元件所要执行的功能,指令数据为执行所述功能对应的数据。
95.本步骤中,根据执行元件所要执行的功能进行区分,为初始指令中包含的每一功能声明对应的功能码,然后,从初始指令中提取该功能对应的控制数据,将控制数据转换为便于下位机解析的指令数据,从而实现初始指令到中间指令的转换。中间指令可以以数组的形式存储,表示为{功能码,指令数据}。可以理解的是,上述指令数据可以直接为控制数据,也可以为控制数据对应的等效数据,只要能够将接收的初始指令转换为上述预设格式的中间指令即可。
96.s103:将所述中间指令传输至下位机,以使所述下位机根据所述功能码获取对应的所述指令数据。
97.在生成上述预设格式的中间指令以后,上位机将所述中间指令发送至下位机。下位机接收中间指令后,根据中间指令中的功能码对中间指令进行解析,得到指令数据,并对所述指令数据进行处理,从而控制与下位机连接的执行元件运行,下位机实时将执行元件的运行状态传输至上位机。
98.下位机在对接收的中间指令进行解析的过程中,可以预先判断中间指令中是否携带有功能码、功能码是否有效以判断中间指令是否有效,并在中间指令有效时,根据该功能码对对应的中间指令进行解析,得到指令数据,进而执行该指令数据,便于下位机对中间指令的解析执行。
99.本公开实施例提供的应用于上位机的数据处理方法,通过获取输入的初始指令,将所述初始指令转换为包含功能码和对应的指令数据的预设格式的中间指令,由于中间指令格式较为统一,即均包括功能码和与该功能码对应的指令数据,因此,便于下位机根据功能码对中间指令进行解析,得到指令数据,进而对执行元件进行控制,可以有效提高下位机解析控制数据的数据处理效率以及后续执行控制数据的执行效率,且数据处理方法通用性
强,适用范围广。
100.在一些实施例中,步骤s103中,将所述中间指令传输至下位机,包括:
101.s1031:根据所述指令数据将所述中间指令填充至对应的指令队列中;
102.s1032:在所述指令队列中所述中间指令的数量达到预设数量时,将所述指令队列传输至下位机。
103.上位机在将中间指令传输至下位机的过程中,先根据指令数据将中间指令填充至对应的指令队列中。在将中间指令填充至指令队列过程中,可以按照预设的执行顺序依次加入指令队列,也可以按照初始指令的生成顺序等,将各中间指令依次一一填充至指令队列中。然后,在所述指令队列中所述中间指令的数量达到预设数量时,将所述指令队列发送至下位机。下位机接收指令队列后,可以从指令队列中按序或者按需提取出中间指令,并根据中间指令中的功能码对中间指令进行解析,得到对应的指令数据,并处理所述指令数据,从而控制与下位机连接的执行元件运行。
104.本实施例中,在所述指令队列中所述中间指令的数量达到预设数量时将所述指令队列传输至下位机,无需在上位机和下位机每次通信时校验传输的指令个数,可以减少数据校验频率,提高上位机与下位机的数据传输效率,且下位机对固定格式的中间指令进行解析,解析过程方便快捷。
105.指令队列中所述中间指令的数量阈值可以根据控制流程中的流程节点数量确定,例如某一控制流程包含n个流程节点,上位机可以生成与n个流程节点对应的n个中间指令,因此,可以将指令队列中所述中间指令的预设数量确定为n,当中间指令按序填充至指令队列中的数量达到n时,确定该控制流程对应的中间指令已全部填充至指令队列,可以将该指令队列传输至下位机。
106.如上所述,上位机可以根据某一控制流程将该流程的一个指令队列发送至下位机,下位机解析指令队列并根据解析得到的指令数据控制执行元件运行时,上位机在接收到下位机某一指令队列执行完成或即将执行完成(执行最后一条控制指令)的反馈信息后,再发送该控制流程对应的另一指令队列,或者当某一控制流程仅包括一个指令队列时,发送另一控制流程对应的另一指令队列,便于将不同控制流程数据统一发送,也便于根据控制需求的变化,重新发送指令队列。
107.特别地,当某一控制流程包含的流程节点数量过多时,采用一个指令队列,若指令队列中填充的中间指令数量较多,填充各中间指令时可能造成延时等待,或者传输指令队列时由于指令队列中数据较多导致传输效率低,因此,可以根据实际需要将每一指令队列中中间指令的数量阈值确定为m,m<n,每一控制流程可以包括多个指令队列,当中间指令填充满一指令队列后,将该指令队列实时发送至下位机,并将剩余的中间指令填充至该控制流程的下一指令队列,实现指令队列的边填充边发送,提高数据传输效率。
108.现有的保存成文本的指令格式,在控制需求发生变化时,需要全部重新修改,且不方便实现程序断点(中间暂停或继续)。本实施例中,当控制需求更改时,可以基于中间指令的格式快速生成对应的中间指令填充至指令队列中,重新发送后续所要执行的中间指令对应的指令队列以替换之前的中间指令对应的指令队列即可,例如,以10条中间指令为一组队列替换即可,无需上位机重新整体下发控制指令(将整体控制流程以文本的方式保存发送),上位机发送的数据量减少,下位机接收中间指令后解析中间指令的处理量也相较于整
个文本大大减少,有效提高上位机和下位机数据处理效率。
109.特别地,若下位机的性能有保障,无需将各中间指令以指令队列的形式发送至下位机,可以定期(每个周期)发送单条中间指令,实现上位机和下位机之间的实时交互、控制,即在保证二者交互性能的情况下,尽可能的及时通信,保证通信传输的连续性和畅通。
110.在一些实施例中,步骤s102中,将所述初始指令转换为预设格式的中间指令,包括:
111.s1021:识别所述初始指令中的控制对象和控制数据;
112.s1022:根据所述控制对象的类型,确定所述指令数据的数据类型;
113.s1023:根据所述控制对象和所述控制数据,确定所述功能码;
114.s1024:根据所述数据类型和所述功能码,将所述控制数据转换为所述指令数据,并根据所述功能码和所述指令数据得到所述中间指令。
115.其中,控制对象为下位机所控制的执行元件的具体对象,每个执行元件可以包括至少一个控制对象,示例性地,工业控制中,控制对象主要包括i/o(input/output,输入/输出)和轴,其中,i/o中的输入指从仪表进入下位机的测量参数,输出指从下位机输出到执行元件的参量,一个参量叫做一个点。轴可以包括x轴、y轴和z轴,轴的参数可以为对应轴的转动方向(正转或反转)。
116.在识别出初始指令中的控制对象后,可以根据控制对象识别对应的控制数据,然后,根据控制对象的类型确定控制数据转换为指令数据后指令数据的数据类型,以固定指令数据的数据格式。
117.在步骤s1021识别出初始指令中的控制对象和控制数据后,可以根据控制对象和控制数据确定对应的功能码。例如,根据轴这一控制对象和控制数据确定的各功能码的格式如图3所示。
118.在通过步骤s1022确定指令数据的数据类型,以及通过步骤s1023确定功能码后,可以根据所述数据类型和所述功能码,对控制数据进行转换,将其转换为固定格式的指令数据,进而得到固定格式的中间指令。
119.步骤s1021至s1024中,由于控制对象的功能较为固定,因此,基于控制对象生成对应的中间指令,可以针对不同的应用场景,通用性强,且具有良好的适用性。
120.具体来说,由于不同行业生产流程与工业差异明显,工业软件通用性较低,不同行业工业软件之间存在明显壁垒。本公开实施例的数据处理方法,可以针对执行元件的控制与调度,设计通用的上位机数据处理框架,以提高编程自由度,同时,可根据控制对象自由设计初始指令形式,生成丰富的控制指令函数,有效提高行业软件的开发效率。例如,可以基于上述数据处理方法通过通用的方式开发得到工厂、汽车、过程等行业软件,并与下位机进行通信传输,从而对不同行业的执行元件进行精准控制。
121.上述实施例中,控制对象主要为具有通用功能的i/o和轴,具体实施中,控制对象也可以为执行元件中具有固定名称的具体部件(例如电机、齿轮等)。
122.在一些实施例中,步骤s1023中,根据所述控制对象的类型,确定所述指令数据的数据类型,包括:
123.s201:在所述控制对象为i/o时,确定所述数据类型为整型;
124.s202:在所述控制对象为轴时,根据所述控制数据,确定所述数据类型。
125.具体地,i/o只需以单个bit位便能控制表示i/o状态,同时,以16个bit为一组,以16位整型数据(int)对中间指令进行管理,管理函数的具体结构如图4所示。其中,变量funcode为功能码,指代控制对象所要执行的功能;变量length表示中间指令整体的字节长度(数组的长度);变量source表示具体的指令数据。
126.需要说明的是,i/o变量一般8个位为一组,有两组,一个字节(byte)管理8个位,考虑到还有整型数据,因此,便统一使用16位整型数据进行处理。
127.对于轴,由于轴不是按位处理,因此,根据所述轴对应的功能,来确定中间指令的管理方式。
128.可选地,步骤s202中,所述根据所述控制数据,确定所述数据类型,包括:
129.s301:若所述控制数据为所述轴的执行与否,确定所述数据类型为整型;
130.s302:若所述控制数据为设定所述轴的执行参数,则确定所述数据类型为浮点型。
131.若轴控制是控制轴的执行与否(执行或停止执行),此时,可以用整型0或1表示停止执行或执行,此时,可以与上述i/o控制类似,通过单个bit位处理,使用16位整型数据对指令数据进行管理;若轴控制是设置或修改轴的执行参数,例如设置轴的执行位置、速度等,则可用浮点型数据管理记录执行参数。轴控制的管理函数(指令数据)的具体结构如图4所示(以整型数据管理或以浮点型数据管理)。
132.可以理解的是,如图4所示,上述对中间指令的管理主要是对其中指令数据(source变量)的管理。控制对象所要执行的功能和中间指令的长度通常以整数表示,因此,中间指令中,功能码和指令数据的长度均以16位整型数据进行管理。
133.在一些实施例中,所述指令队列包括整型指令队列及浮点型指令队列;步骤s1031中,所述根据所述指令数据将所述中间指令填充至对应的指令队列中,包括:
134.s1031:在所述中间指令的指令数据为整型时,将所述中间指令填充至整型指令队列;
135.s1032:在所述中间指令的指令数据为浮点型时,将所述中间指令填充至浮点型指令队列。
136.指令队列可以以数组的形式存储,指令队列的格式表示如下:
137.intdataintdotaaryp300];
138.floatdatafloatdataary[300];
[0139]
其中,可以根据整型数据(intdata)和浮点型数据(floatdata)两种基本数据类型设置分别设置指令队列的数组,300表示该指令队列中中间指令的数量。
[0140]
步骤s103中,根据中间指令中指令数据的数据类型,将不同类型的中间指令填充至对应类型的指令队列中,然后将不同类型的指令队列传输至下位机,能够有效简化下位机解析中间指令的复杂度。
[0141]
在一些实施例中,将所述中间指令传输至下位机之前,还包括:
[0142]
s401:识别下位机的类型;
[0143]
s4021:在识别到所述下位机为一体机时,采用共享内存的方式传输所述中间指令;
[0144]
s4022:在识别到所述下位机为非一体机时,采用套接字的方式传输所述中间指令。
[0145]
步骤s401和s402中,上位机可以根据下位机的类型,采用对应的方式传输中间指令,以满足不同的传输需求。若下位机为一体机,上位机采用共享内存(share memory)的方式传输所述中间指令至下位机,从而提高二者的通信传输效率;若下位机为非一体机,上位机采用套接字(socket)的方式传输所述中间指令,保证数据能够实现无差错、无重复送,并且下位机能够按顺序接收中间指令,实现中间指令的可靠传输。
[0146]
需要说明的是,下位机为一体机时,上位机也可以采用套接字的方式传输所述中间指令,从而可以使得上位机能够兼容不同类型的下位机。
[0147]
图5示出了本公开实施例的应用于下位机的数据处理方法的流程图,如图5所示,本公开实施例提供一种数据处理方法,应用于下位机,所述方法包括:
[0148]
s501:接收上位机发送的中间指令,获取所述中间指令的功能码;
[0149]
s502:根据所述功能码获取对应的所述中间指令的指令数据;
[0150]
s503:调用与所述指令数据对应的处理模块处理所述指令数据。
[0151]
中间指令以指令队列的形式发送至下位机,指令队列中包含多个中间指令,每一中间指令包括功能码和对应的指令数据。所述功能码表示执行元件(本实施例中,主要为执行元件的控制对象,例如执行设备的轴)所要执行的功能,所述指令数据为执行所述功能对应的数据。下位机接收到上位机发送的中间指令后,可以使用与上位机一样长度的数组保存指令队列,然后,依次以for循环等解析指令队列,获取其中的功能码,然后根据功能码获取该功能码对应的指令数据。
[0152]
下位机接收的指令队列可以表示为:
[0153]
intarray:array[0..299]of intdata;
[0154]
floatarray:array[0..299]of floatdaia;
[0155]
其中,[0...299]与上述上位机发送的300个中间指令的指令队列对应,同时,将各中间指令以不同的序号(例如下标)表示,便于快速提取对应的中间指令进行解析。
[0156]
用于对指令数据进行处理的处理模块为与各功能码对应的子类功能模块,由预设的父类指针指向定义。如图6所示,由于不同功能码对应的控制数据,其执行流程类似,区别在于执行过程中的处理细节,因此,本实施例中,利用编程语言的多态性,并结合设计模式中的模板方法,预先在父类中固化执行元件的处理流程,在子类中填充指令数据的执行实现细节,即以统一的接口数组为父节点对各指令数据进行管理,以对应的功能码为对象进行实例化,从而调用该功能码对应的处理模块,对解析指令队列中各中间指令得到的指令数据进行处理,实现中间指令解析后指令数据处理流程的简化。
[0157]
上述设计模式里的模板方法是指在父类中定义流程,在子类中实现具体的接口函数,子类实例化时,流程调用子类实现的函数,这样不同的子类可以使用相同的执行流程,不同的处理细节。即指令数据的执行流程类似,指令的生效步序一样,但调用的具体函数不同。
[0158]
本公开实施例提供的应用于下位机的数据处理方法,在接收到上位机发送的中间指令后,根据所述功能码获取对应的所述中间指令的指令数据,可以利用统一的解析方式对格式较为统一的各中间指令进行解析,有效提高下位机解析控制数据的数据处理效率,之后,调用与所述指令数据对应的处理模块处理所述指令数据可以有效提高下位机执行控制数据的执行效率,且数据处理方法通用性强,适用范围广。
[0159]
本实施例中,以预定长度的数组保存接收到的指令队列,可以得到与上位机匹配的指令队列,从而实现指令队列的有效解析;同时,根据解析指令队列得到的功能码调用对应的处理模块对指令数据进行解析,可以对对应的指令数据进行精准处理,提高数据处理准确性,并提高下位机执行控制数据的执行效率。
[0160]
在一些实施例中,接收上位机发送的中间指令之后,所述方法还包括:
[0161]
s601:将所述中间指令对应的指令队列划分为浮点型数组和整型数组;
[0162]
s602:依次解析所述浮点型数组和所述整型数组中的每一个队列;
[0163]
s603:还原所述每一个队列的功能码和指令数据。
[0164]
由于指令队列划分为浮点型数组和整型数组,因此,本实施例中,根据指令队列的划分类型对不同的指令队列进行解析,先还原每一队列中的功能码,然后根据还原的功能码还原得到对应的指令数据,如此,可以有效提高指令队列的解析效率,同时,对不同类型的指令队列依次进行解析,便于确定各指令队列中每一指令数据处理后的执行顺序,有效保证全部控制数据的顺利执行。
[0165]
在一些实施例中,步骤s503中,所述调用与所述指令数据对应的处理模块处理所述指令数据,包括:
[0166]
s5031:识别所述功能码的序号;
[0167]
s5032:根据所述功能码的序号,调用对应的所述处理模块;
[0168]
s5033:所述处理模块根据所述指令数据控制执行元件执行。
[0169]
由于指令队列中的各中间指令对应的功能码以不同的序号存储,因此,本实施例中,可以识别功能码的序号,然后根据所述功能码的序号,调用对应的处理模块,处理模块根据功能码对应的指令数据,控制执行元件执行。例如,如图7所示,可以用父类指针指向子类,声明父类对象指针数组,根据功能码的序号实例化子类,然后在中间指令解析执行时,根据解析得到的功能码的序号调用对应的处理模块,将中间指令解析得到的指令数据作为执行元件执行的输入参数,处理模块对该输入参数进行处理即可实现指令数据的执行。
[0170]
在一些实施例中,步骤s5032中,根据所述功能码的序号,调用对应的所述处理模块,包括:
[0171]
s701:调用与所述序号相对应的处理模块;或
[0172]
s7021:将所述功能码的序号减去预定偏移值得到特征序号;
[0173]
s7022:调用与所述特征序号相对应的处理模块。
[0174]
当功能码按序标记表示时,可以直接调用与功能码序号对应的处理模块。另一些实施例中,功能码并不一定直接以序号表示,而是以一定的数组结构存储,例如图7所示,功能码以下标的形式表示,并存储在commandlib[下标]中,确定功能码的序号为1001后,可以减去预定的偏移值,确定功能码对应的特征序号为[0],之后根据该特征序号[0]调用对应的处理模块,以满足根据不同方式存储的功能码调用对应的处理模块的调用需求。
[0175]
在一些实施例中,执行步骤s502时,所述方法还包括:
[0176]
判断所述功能码是否有效;
[0177]
若所述功能码有效,对所述功能码对应的中间指令进行解析,得到所述指令数据。
[0178]
在对指令队列中的各解析中间指令进行解析的过程中,根据其功能码是否有效等判断中间指令是否有效,若功能码有效,确定中间指令有效,则对该功能码对应的中间指令
进行解析,得到其中的指令数据,进而根据功能码对应的处理模块对指令数据进行调用执行;若功能码无效,则中间指令可能存在问题,无需继续解析,如此,可以有效提高指令队列解析效率,并能够及时查找出出现问题的中间指令,进而对出现问题的中间指令进行处理,以便上位机及时传输正确的中间指令对应的指令队列。
[0179]
如图2所示,下位机解析指令队列并对解析得到的指令数据进行处理,然后根据处理后的指令数据控制执行元件执行后,可以将执行元件当前的运行状态反馈至上位机,由上位机根据运行状态,对控制数据进行更改,同时根据下位机的业务处理逻辑,重新生成对应的预设格式的中间指令发送至下位机,下位机对中间指令进行解析,得到功能码和对应的指令数据,并根据功能码调用对应的处理模块对指令数据进行处理,进而根据处理后的指令数据控制执行元件执行,如此往复,实现上位机和下位机的连续通信交互,可以显著提升二者的通信传输效率,且利用功能码的序号调用处理模块能够避免调用错误,保证执行元件执行的可靠性。
[0180]
本公开实施例提供的应用于下位机的数据处理方法与应用于上位机的数据处理方法相对应,基于上述应用于上位机的数据处理方法,本领域的技术人员能够了解本公开实施例中应用于下位机的数据处理方法的具体实施方式以及其各种变化形式,在此不再赘述。
[0181]
图8示出了本公开实施例的上位机的示意图。如图8所示,基于上述应用于上位机的数据处理方法,本公开实施例还提供一种上位机,包括:
[0182]
获取模块10,配置为获取输入的初始指令;
[0183]
转换模块20,配置为将所述初始指令转换为预设格式的中间指令,所述中间指令包括功能码和与所述功能码对应的指令数据;
[0184]
传输模块30,配置为将所述中间指令传输至下位机,以使所述下位机根据所述功能码获取对应的所述指令数据。
[0185]
在一些实施例中,传输模块30具体包括:
[0186]
填充单元,配置为根据所述指令数据将所述中间指令填充至对应的指令队列中;
[0187]
传输单元,配置为在所述指令队列中所述中间指令的数量达到预设数量时,将所述指令队列传输至下位机。
[0188]
在一些实施例中,转换模块20具体包括:
[0189]
识别单元,配置为识别所述初始指令中的控制对象和控制数据;
[0190]
第一确定单元,配置为根据所述控制对象的类型,确定所述指令数据的数据类型;
[0191]
第二确定单元,配置为根据所述控制对象和所述控制数据,确定所述功能码;
[0192]
转换单元,配置为根据所述数据类型和所述功能码,将所述控制数据转换为所述指令数据,并根据所述功能码和所述指令数据得到所述中间指令。
[0193]
在一些实施例中,第一确定单元进一步配置为:
[0194]
在所述控制对象为i/o时,确定所述数据类型为整型;
[0195]
在所述控制对象为轴时,根据所述控制数据,确定所述数据类型。
[0196]
在一些实施例中,在所述控制对象为轴时,第一确定单元进一步配置为:
[0197]
若所述控制数据为所述轴的执行与否,确定所述数据类型为整型;
[0198]
若所述控制数据为设定所述轴的执行参数,则确定所述数据类型为浮点型。
[0199]
在一些实施例中,所述指令队列包括整型指令队列及浮点型指令队列;填充单元进一步配置为:
[0200]
在所述中间指令的指令数据为整型时,将所述中间指令填充至整型指令队列;
[0201]
在所述中间指令的指令数据为浮点型时,将所述中间指令填充至浮点型指令队列。
[0202]
在一些实施例中,将所述中间指令传输至下位机之前,所述传输模块30还配置为:
[0203]
识别下位机的类型;
[0204]
在识别到所述下位机为一体机时,采用共享内存的方式传输所述中间指令;
[0205]
在识别到所述下位机为非一体机时,采用套接字的方式传输所述中间指令。
[0206]
图9示出了本公开实施例的下位机的示意图。如图9所示,基于上述应用于下位机的数据处理方法,本公开实施例还提供一种下位机,包括:
[0207]
接收模块40,配置为接收上位机发送的中间指令,获取所述中间指令的功能码;
[0208]
获取模块50,配置为根据所述功能码获取对应的所述中间指令的指令数据;
[0209]
调用模块60,配置为调用与所述指令数据对应的处理模块处理所述指令数据。
[0210]
在一些实施例中,下位机还包括解析模块,配置为:
[0211]
将所述中间指令对应的指令队列划分为浮点型数组和整型数组;
[0212]
依次解析所述浮点型数组和所述整型数组中的每一个队列;
[0213]
还原所述每一个队列的功能码和指令数据。
[0214]
在一些实施例中,调用模块60进一步配置为:
[0215]
识别所述功能码的序号;
[0216]
根据所述功能码的序号,调用对应的所述处理模块;
[0217]
所述处理模块根据所述指令数据控制执行元件执行。
[0218]
在一些实施例中,调用模块60进一步配置为:
[0219]
调用与所述序号相对应的处理模块;或
[0220]
将所述功能码的序号减去预定偏移值得到特征序号;
[0221]
调用与所述特征序号相对应的处理模块。
[0222]
本领域技术人员可以理解,上位机和/或下位机可以包括更多或更少的部件,例如,还可包括通信接口等,或者组合某些部件,或者不同的部件布置。
[0223]
需要说明的是,本公开实施例提供的上位机和下位机与上述实施例中的数据处理方法相对应,基于上述的数据处理方法,本领域的技术人员能够了解本公开实施例中上位机和下位机具体实施方式以及其各种变化形式,数据处理方法实施例中的任何可选项也适用于上位机和下位机,在此不再赘述。
[0224]
本公开实施例还提供一种电子设备,至少包括存储器和处理器,所述存储器上存储有计算机程序,所述处理器在执行所述存储器上的计算机程序时实现上述方法的步骤。
[0225]
在一些实施例中,执行计算机程序的处理器可以是包括一个以上通用处理设备的处理设备,诸如微处理器、中央处理单元(cpu)、图形处理单元(gpu)等。更具体地,该处理器可以是复杂指令集计算(cisc)微处理器、精简指令集计算(risc)微处理器、超长指令字(vliw)微处理器、运行其他指令集的处理器或运行指令集的组合的处理器。该处理器还可以是一个以上专用处理设备,诸如专用集成电路(asic)、现场可编程门阵列(fpga)、数字信
号处理器(dsp)、片上系统(soc)等。
[0226]
存储器可以是只读存储器(rom)、随机存取存储器(ram)、相变随机存取存储器(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、电可擦除可编程只读存储器(eeprom)、其他类型的随机存取存储器(ram)、闪存盘或其他形式的闪存、缓存、寄存器、静态存储器、光盘只读存储器(cd-rom)、数字通用光盘(dvd)或其他光学存储器、盒式磁带或其他磁存储设备,或被用于储存能够被计算机设备访问的信息或指令的任何其他可能的非暂时性的介质等。
[0227]
本公开实施例的电子设备可以包括但不限于诸如服务器、台式计算机、数字tv等固定终端设备,以及诸如车载设备(例如hud设备)、手持设备(例如手机、平板电脑等)、可穿戴设备(例如智能手表、智能手环等)等移动终端设备。
[0228]
本公开实施例还提供一种计算机可读存储介质,所述计算机可读介质存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。
[0229]
本公开实施例的计算机可读存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。本公开实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用,例如,可以为上述的存储器。
[0230]
本公开的实施例的计算机程序可以组织成一个或多个计算机可执行组件或模块。可以用这类组件或模块的任何数量和组合来实现本公开的各方面。例如,本公开的各方面不限于附图中示出的和本文描述的特定的计算机可执行指令或特定组件或模块。其他实施例可以包括具有比本文所示出和描述的更多或更少功能的不同的计算机可执行指令或组件。
[0231]
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
技术特征:
1.一种数据处理方法,应用于上位机,其特征在于,包括:获取输入的初始指令;将所述初始指令转换为预设格式的中间指令,所述中间指令包括功能码和与所述功能码对应的指令数据;将所述中间指令传输至下位机,以使所述下位机根据所述功能码获取对应的所述指令数据。2.根据权利要求1所述的数据处理方法,其特征在于,所述将所述中间指令传输至下位机,包括:根据所述指令数据将所述中间指令填充至对应的指令队列中;在所述指令队列中所述中间指令的数量达到预设数量时,将所述指令队列传输至下位机。3.根据权利要求1所述的数据处理方法,其特征在于,所述将所述初始指令转换为预设格式的中间指令,包括:识别所述初始指令中的控制对象和控制数据;根据所述控制对象的类型,确定所述指令数据的数据类型;根据所述控制对象和所述控制数据,确定所述功能码;根据所述数据类型和所述功能码,将所述控制数据转换为所述指令数据,并根据所述功能码和所述指令数据得到所述中间指令。4.根据权利要求3所述的数据处理方法,其特征在于,所述根据所述控制对象的类型,确定所述指令数据的数据类型,包括:在所述控制对象为i/o时,确定所述数据类型为整型;在所述控制对象为轴时,根据所述控制数据,确定所述数据类型。5.根据权利要求4所述的数据处理方法,其特征在于,所述在所述控制对象为轴时,根据所述控制数据,确定所述数据类型,包括:若所述控制数据为所述轴的执行与否,确定所述数据类型为整型;若所述控制数据为设定所述轴的执行参数,则确定所述数据类型为浮点型。6.根据权利要求2所述的数据处理方法,其特征在于,所述指令队列包括整型指令队列及浮点型指令队列;所述根据所述指令数据将所述中间指令填充至对应的指令队列中,包括:在所述中间指令的指令数据为整型时,将所述中间指令填充至整型指令队列;在所述中间指令的指令数据为浮点型时,将所述中间指令填充至浮点型指令队列。7.根据权利要求1所述的数据处理方法,其特征在于,所述将所述中间指令传输至下位机之前,还包括:识别下位机的类型;在识别到所述下位机为一体机时,采用共享内存的方式传输所述中间指令;在识别到所述下位机为非一体机时,采用套接字的方式传输所述中间指令。8.一种数据处理方法,应用于下位机,其特征在于,包括:接收上位机发送的中间指令,获取所述中间指令的功能码;根据所述功能码获取对应的所述中间指令的指令数据;
调用与所述指令数据对应的处理模块处理所述指令数据。9.根据权利要求8所述的数据处理方法,其特征在于,所述调用与所述指令数据对应的处理模块处理所述指令数据,包括:识别所述功能码的序号;根据所述功能码的序号,调用对应的所述处理模块;所述处理模块根据所述指令数据控制执行元件执行。10.根据权利要求9所述的数据处理方法,其特征在于,所述根据所述功能码的序号,调用对应的所述处理模块,包括:调用与所述序号相对应的处理模块;或将所述功能码的序号减去预定偏移值得到特征序号;调用与所述特征序号相对应的处理模块。11.一种上位机,其特征在于,包括:获取模块,配置为获取输入的初始指令;转换模块,配置为将所述初始指令转换为预设格式的中间指令,所述中间指令包括功能码和与所述功能码对应的指令数据;传输模块,配置为将所述中间指令传输至下位机,以使所述下位机根据所述功能码获取对应的所述指令数据。12.一种下位机,其特征在于,包括:接收模块,配置为接收上位机发送的中间指令,获取所述中间指令的功能码;获取模块,配置为根据所述功能码获取对应的所述中间指令的指令数据;调用模块,配置为调用与所述指令数据对应的处理模块处理所述指令数据。
技术总结
本公开实施例提供一种数据处理方法、上位机及下位机,应用于上位机的数据处理方法包括:获取输入的初始指令;将所述初始指令转换为预设格式的中间指令,所述中间指令包括功能码和与所述功能码对应的指令数据;将所述中间指令传输至下位机,以使所述下位机根据所述功能码获取对应的所述指令数据。能码获取对应的所述指令数据。能码获取对应的所述指令数据。
技术研发人员:胡国煌 尹作昌
受保护的技术使用者:深圳市雷赛智能控制股份有限公司
技术研发日:2023.03.31
技术公布日:2023/7/7
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
上一篇:一种用于边坡支护的作业台车的制作方法 下一篇:一种多肽抗皱组合物及其应用的制作方法