plc应用包生成方法、plc应用包运行方法及相关装置
技术领域
1.本技术涉及工业控制技术领域和计算机技术领域,尤其涉及一种plc应用包生成方法、plc应用包运行方法及相关装置。
背景技术:
2.运动控制(mc)是自动化的一个分支,它使用通称为伺服机构的一些设备如液压泵,线性执行机或者是电机来控制机器的位置或速度。在cnc机床,机械臂等系统中,采用了大量运动控制系统。
3.运动控制系统又可以分为单轴,多轴。多轴系统通常是同步多轴控制。集中控制运动系统的多轴控制是依靠处理器/plc的软硬件来实现同步运动控制的。伺服驱动器没有自主控制的能力,它们只能接受plc设备发来的控制命令。
4.运动控制的执行依赖系统中的伺服电机。每个伺服电机提供一个可控制的旋转的轴。一些plc产品可以支持不同厂商提供的伺服产品,则需要一种称作“伺服驱动”的中间软件层,帮助标准化的plcopen的运动功能块实现对不同伺服电机类型的对接。
技术实现要素:
5.本技术实施例提供一种plc应用包生成方法、plc应用包运行方法及相关装置,用以提供一种基于webassembly的伺服驱动的实现方案。
6.本技术实施例提供一种plc应用包生成方法,包括:
7.获取用户指定的伺服驱动,以及输入的待创建的轴
对象的轴相关参数;
8.使用
所述轴相关参数生成轴配置相关
代码,所述轴配置相关代码用于创建轴对象和伺服驱动对象;
9.将plc应用用户代码和所述轴配置相关代码均编译为webassembly目标代码,所述plc应用用户代码为使用plcopen运动控制功能库中的运动控制功能块编码得到的;
10.将编译得到的该webassembly目标代码,与plcopen运动控制功能库和指定的所述伺服驱动,链接成webassembly模块,所述plcopen运动控制功能库和指定的所述伺服驱动的代码格式为webassembly代码;
11.生成包含所述webassembly模块的plc应用包。
12.进一步的,所述将编译得到的该webassembly目标代码,与plcopen运动控制功能库和指定的所述伺服驱动,链接成webassembly模块,包括:
13.将编译得到的该webassembly目标代码,与plcopen运动控制功能库、指定的所述伺服驱动和伺服开发基础库,链接成webassembly模块,所述伺服开发基础库的代码格式为webassembly代码。
14.进一步的,指定的所述伺服驱动包括:设备描述文件,所述设备描述文件中包含伺服电机的寄存器的io内存使用信息;
15.在所述生成包含所述webassembly模块的plc应用包之前,还包括:
16.基于所述设备描述文件中包含的寄存器在plc上的io内存映射使用信息,生成轴io内存映射表;
17.生成包含所述轴io内存映射表的io内存映射文件;
18.所述生成包含所述webassembly模块的plc应用包,包括:
19.生成包含所述webassembly模块和所述io内存映射文件的plc应用包。
20.进一步的,在所述生成包含所述webassembly模块的plc应用包之前,还包括:
21.生成包含所述轴相关参数的轴配置文件;
22.所述生成包含所述webassembly模块的plc应用包,包括:
23.生成包含所述webassembly模块和所述轴配置文件的plc应用包,其中,所述轴配置文件用于在所述plc应用包被加载并运行的过程中,设置伺服驱动对象的运动控制参数。
24.进一步的,指定的所述伺服驱动包括:设备描述文件,库
接口描述文件和对伺服驱动代码编译得到的webassembly目标代码,其中:
25.所述设备描述文件中包含伺服电机类型的描述信息,每种伺服电机类型的伺服电机的寄存器信息,以及该伺服电机的寄存器在plc上的io内存映射使用信息;
26.所述库接口描述文件包含属性字段,所述属性字段用于说明所述伺服驱动作为plc库具有伺服驱动的属性。
27.进一步的,指定的所述伺服驱动至少提供如下配置管理接口之一:
28.接口int10,用于创建伺服驱动对象;
29.接口int20,用于设置伺服驱动对象的运动控制参数;
30.接口int30,用于设置伺服驱动对象的轴io内存映射表的相关参数;
31.接口int40,用于初始化伺服驱动对象;
32.指定的所述伺服驱动至少提供如下运动控制功能接口之一:
33.接口int100,用于设置和获取伺服电机的加电状态;
34.接口int110,用于设置和获取伺服电机的位置状态;
35.接口int120,用于设置和获取伺服电机的速度状态;
36.接口int130,作为伺服驱动对象的周期任务执行入口,用于从plc的io内存区域中获取伺服电机的最新状态数据,以及将需要发送给伺服电机的控制指令缓存到所述io内存区域中。
37.进一步的,所述plcopen运动控制功能库提供至少如下运动控制功能接口:
38.接口int300,用于创建一个轴对象;
39.接口int310,用于遍历所有的轴对象,依次调用轴对象的伺服驱动对象的接口int130。
40.进一步的,所述伺服开发基础库提供如下功能接口:
41.接口int200,用于获取在plc上的io内存区域的起始地址。
42.进一步的,所述轴配置相关代码包括:
43.用于定义plcopen轴类型的全局变量,该全局变量使用轴对象的名称作为变量名称;
44.轴初始化函数,所述轴初始化函数包含以下内容:
45.通过调用所述plcopen运动控制功能库提供的接口int300,创建一个轴对象,并赋
值到该全局变量;
46.通过调用轴对象对应的伺服驱动提供的接口int10,创建一个驱动类型的伺服驱动对象,并将该伺服驱动对象添加到轴对象中;
47.针对伺服驱动对象调用接口int20,接口int30和接口int40,用于配置伺服驱动对象的运动控制参数和轴io内存映射表的相关参数。
48.本技术实施例还提供一种plc应用包运行方法,所述plc应用包为上述任一plc应用包生成方法生成的,包括:
49.加载所述plc应用包中的所述webassembly模块;
50.通过调用所述webassembly模块中的所述轴配置相关代码,创建轴对象和伺服驱动对象,并将创建的该伺服驱动对象添加到该轴对象中;
51.规划所述webassembly模块中所述plc应用用户代码包含的各任务的周期执行时间;
52.按照所述周期执行时间,针对每个待执行的任务,调用所述plcopen运动控制功能库,使得所述plcopen运动控制功能库通过调用所述伺服驱动,并基于所述plc应用用户代码中该任务对应的代码逻辑的运行,向该任务需要控制的伺服电机发送控制指令,该任务需要控制的伺服电机为该任务中已创建的轴对象的伺服驱动对象表示的伺服电机。
53.进一步的,所述通过调用所述webassembly模块中的所述轴配置相关代码,创建轴对象和伺服驱动对象,并将创建的该伺服驱动对象添加到该轴对象中,包括:
54.调用所述webassembly模块中的所述轴配置相关代码包含的所述轴初始化函数,以实现通过调用所述plcopen运动控制功能库提供的接口int300,创建一个轴对象,并赋值到该全局变量,以及通过调用轴对象对应的伺服驱动提供的接口int10,创建一个驱动类型的伺服驱动对象,并将该伺服驱动对象添加到轴对象中。
55.进一步的,还包括:
56.调用所述轴初始化函数,以实现针对伺服驱动对象调用接口int20,接口int30和接口int40配置伺服驱动对象的运动控制参数和轴io内存映射表的相关参数;或者
57.调用所述轴初始化函数,以实现针对伺服驱动对象调用接口int30和接口int40配置伺服驱动对象的轴io内存映射表的相关参数;以及使用所述轴配置文件中包含的所述轴相关参数,调用接口int20设置伺服驱动对象的运动控制参数。
58.进一步的,所述针对每个待执行的任务,调用所述plcopen运动控制功能库,使得所述plcopen运动控制功能库通过调用所述伺服驱动,并基于所述plc应用用户代码中该任务对应的代码逻辑的运行,向该任务需要控制的伺服电机发送控制指令,包括:
59.针对每个待执行的任务,调用所述plcopen运动控制功能库,使得所述plcopen运动控制功能库通过调用所述伺服驱动,获取该任务需要控制的伺服电机的最新状态数据;
60.基于所述最新状态数据,执行所述plc应用用户代码中该任务对应的代码逻辑,以缓存用于调用所述plcopen运动控制功能库包含的运动控制功能块的控制参数;
61.针对该任务,调用所述plcopen运动控制功能库,使得所述plcopen运动控制功能库,通过包含的运动控制功能块基于加载的所述控制参数和所述最新状态数据,生成控制指令,并通过调用所述伺服驱动将所述控制指令发送至需要控制的该伺服电机。
62.进一步的,所述针对每个待执行的任务,调用所述plcopen运动控制功能库,使得
所述plcopen运动控制功能库通过调用所述伺服驱动,获取该任务需要控制的伺服电机的最新状态数据,包括:
63.针对每个待执行的任务,调用所述plcopen运动控制功能库的接口int310,使得所述plcopen运动控制功能库通过调用所述伺服驱动的接口int130,从plc的io内存区域中获取该任务需要控制的伺服电机的最新状态数据。
64.进一步的,所述针对该任务,调用所述plcopen运动控制功能库,使得所述plcopen运动控制功能库,通过包含的运动控制功能块基于加载的所述控制参数和所述最新状态数据,生成控制指令,并通过调用所述伺服驱动将所述控制指令发送至需要控制的该伺服电机,包括:
65.所述针对该任务,调用所述plcopen运动控制功能库的接口int310,使得所述plcopen运动控制功能库,通过包含的运动控制功能块基于加载的所述控制参数和所述最新状态数据,生成控制指令,并通过调用所述伺服驱动的int130,将所述控制指令缓存到所述io内存区域中,使得所述控制指令能够被从所述io内存区域中获取并发送至需要控制的该伺服电机。
66.进一步的,所述轴io内存映射表中包含伺服驱动对象与数据存储位置的对应关系,所述数据存储位置包括伺服驱动对象对应的输入区的数据存储位置,以及伺服驱动对象对应的输出区的数据存储位置;
67.所述输入区用于存储该伺服驱动对象表示的伺服电机的最新状态数据;
68.所述输出区用于存储需要发送给该伺服驱动对象表示的伺服电机的控制指令。
69.进一步的,在所述轴io内存映射表中,伺服驱动对象对应的在输入区的数据存储位置,是基于plc上的io内存区域的起始地址start,以及该伺服驱动对象对应的输入区的起始位置offset1,以及该伺服驱动对象表示的伺服电机的寄存器的在输入区的偏移位置offset2表示的;
70.在所述轴io内存映射表中,伺服驱动对象对应的在输出区的数据存储位置,是基于plc上的io内存区域的起始地址start,以及该伺服驱动对象对应的输出区的起始位置offset1,以及该伺服驱动对象表示的伺服电机的寄存器的在输出区的偏移位置offset2表示的;
71.其中,plc上的io内存区域的起始地址start,可以由伺服驱动调用伺服开发基础库的接口int200获取。
72.本技术实施例提供一种plc应用包生成装置,包括:
73.驱动获取模块,用于获取用户指定的伺服驱动,以及输入的待创建的轴对象的轴相关参数;
74.代码生成模块,用于使用所述轴相关参数生成轴配置相关代码,所述轴配置相关代码用于创建轴对象和伺服驱动对象;
75.代码编译模块,用于将plc应用用户代码和所述轴配置相关代码均编译为webassembly目标代码,所述plc应用用户代码为使用plcopen运动控制功能库中的运动控制功能块编码得到的;
76.代码链接模块,用于将编译得到的该webassembly目标代码,与plcopen运动控制功能库和指定的所述伺服驱动,链接成webassembly模块,所述plcopen运动控制功能库和
指定的所述伺服驱动的代码格式为webassembly代码;
77.应用包生成模块,用于生成包含所述webassembly模块的plc应用包。
78.进一步的,所述代码链接模块,具体用于将编译得到的该webassembly目标代码,与plcopen运动控制功能库、指定的所述伺服驱动和伺服开发基础库,链接成webassembly模块,所述伺服开发基础库的代码格式为webassembly代码。
79.进一步的,指定的所述伺服驱动包括:设备描述文件,所述设备描述文件中包含伺服电机的寄存器的io内存使用信息;
80.所述代码生成模块,还用于基于所述设备描述文件中包含的寄存器在plc上的io内存映射使用信息,生成轴io内存映射表;生成包含所述轴io内存映射表的io内存映射文件;
81.所述应用包生成模块,具体用于生成包含所述webassembly模块和所述io内存映射文件的plc应用包。
82.进一步的,所述代码生成模块,还用于生成包含所述轴相关参数的轴配置文件;
83.所述应用包生成模块,具体用于生成包含所述webassembly模块和所述轴配置文件的plc应用包,其中,所述轴配置文件用于在所述plc应用包被加载并运行的过程中,设置伺服驱动对象的运动控制参数。
84.进一步的,指定的所述伺服驱动包括:设备描述文件,库接口描述文件和对伺服驱动代码编译得到的webassembly目标代码,其中:
85.所述设备描述文件中包含伺服电机类型的描述信息,每种伺服电机类型的伺服电机的寄存器信息,以及该伺服电机的寄存器在plc上的io内存映射使用信息;
86.所述库接口描述文件包含属性字段,所述属性字段用于说明所述伺服驱动作为plc库具有伺服驱动的属性。
87.进一步的,指定的所述伺服驱动至少提供如下配置管理接口之一:
88.接口int10,用于创建伺服驱动对象;
89.接口int20,用于设置伺服驱动对象的运动控制参数;
90.接口int30,用于设置伺服驱动对象的轴io内存映射表的相关参数;
91.接口int40,用于初始化伺服驱动对象;
92.指定的所述伺服驱动至少提供如下运动控制功能接口之一:
93.接口int100,用于设置和获取伺服电机的加电状态;
94.接口int110,用于设置和获取伺服电机的位置状态;
95.接口int120,用于设置和获取伺服电机的速度状态;
96.接口int130,作为伺服驱动对象的周期任务执行入口,用于从plc的io内存区域中获取伺服电机的最新状态数据,以及将需要发送给伺服电机的控制指令缓存到所述io内存区域中。
97.进一步的,所述plcopen运动控制功能库提供至少如下运动控制功能接口:
98.接口int300,用于创建一个轴对象;
99.接口int310,用于遍历所有的轴对象,依次调用轴对象的伺服驱动对象的接口int130。
100.进一步的,所述伺服开发基础库提供如下功能接口:
101.接口int200,用于获取在plc上的io内存区域的起始地址。
102.进一步的,所述轴配置相关代码包括:
103.用于定义plcopen轴类型的全局变量,该全局变量使用轴对象的名称作为变量名称;
104.轴初始化函数,所述轴初始化函数包含以下内容:
105.通过调用所述plcopen运动控制功能库提供的接口int300,创建一个轴对象,并赋值到该全局变量;
106.通过调用轴对象对应的伺服驱动提供的接口int10,创建一个驱动类型的伺服驱动对象,并将该伺服驱动对象添加到轴对象中;
107.针对伺服驱动对象调用接口int20,接口int30和接口int40,用于配置伺服驱动对象的运动控制参数和轴io内存映射表的相关参数。
108.本技术实施例提供一种plc应用包运行装置,所述plc应用包为上述任一plc应用包生成方法生成的,包括:
109.代码加载模块,用于加载所述plc应用包中的所述webassembly模块;
110.对象创建模块,用于通过调用所述webassembly模块中的所述轴配置相关代码,创建轴对象和伺服驱动对象,并将创建的该伺服驱动对象添加到该轴对象中;
111.周期规划模块,用于规划所述webassembly模块中所述plc应用用户代码包含的各任务的周期执行时间;
112.任务执行模块,用于按照所述周期执行时间,针对每个待执行的任务,调用所述plcopen运动控制功能库,使得所述plcopen运动控制功能库通过调用所述伺服驱动,并基于所述plc应用用户代码中该任务对应的代码逻辑的运行,向该任务需要控制的伺服电机发送控制指令,该任务需要控制的伺服电机为该任务中已创建的轴对象的伺服驱动对象表示的伺服电机。
113.进一步的,所述对象创建模块,具体用于调用所述webassembly模块中的所述轴配置相关代码包含的所述轴初始化函数,以实现通过调用所述plcopen运动控制功能库提供的接口int300,创建一个轴对象,并赋值到该全局变量,以及通过调用轴对象对应的伺服驱动提供的接口int10,创建一个驱动类型的伺服驱动对象,并将该伺服驱动对象添加到轴对象中。
114.进一步的,所述对象创建模块,还用于调用所述轴初始化函数,以实现针对伺服驱动对象调用接口int20,接口int30和接口int40配置伺服驱动对象的运动控制参数和轴io内存映射表的相关参数;或者
115.调用所述轴初始化函数,以实现针对伺服驱动对象调用接口int30和接口int40配置伺服驱动对象的轴io内存映射表的相关参数;以及使用所述轴配置文件中包含的所述轴相关参数,调用接口int20设置伺服驱动对象的运动控制参数。
116.进一步的,所述任务执行模块,具体用于针对每个待执行的任务,调用所述plcopen运动控制功能库,使得所述plcopen运动控制功能库通过调用所述伺服驱动,获取该任务需要控制的伺服电机的最新状态数据;
117.基于所述最新状态数据,执行所述plc应用用户代码中该任务对应的代码逻辑,以缓存用于调用所述plcopen运动控制功能库包含的运动控制功能块的控制参数;
118.针对该任务,调用所述plcopen运动控制功能库,使得所述plcopen运动控制功能库,通过包含的运动控制功能块基于加载的所述控制参数和所述最新状态数据,生成控制指令,并通过调用所述伺服驱动将所述控制指令发送至需要控制的该伺服电机。
119.进一步的,所述任务执行模块,具体用于针对每个待执行的任务,调用所述plcopen运动控制功能库的接口int310,使得所述plcopen运动控制功能库通过调用所述伺服驱动的接口int130,从plc的io内存区域中获取该任务需要控制的伺服电机的最新状态数据。
120.进一步的,所述任务执行模块,具体用于所述针对该任务,调用所述plcopen运动控制功能库的接口int310,使得所述plcopen运动控制功能库,通过包含的运动控制功能块基于加载的所述控制参数和所述最新状态数据,生成控制指令,并通过调用所述伺服驱动的int130,将所述控制指令缓存到所述io内存区域中,使得所述控制指令能够被从所述io内存区域中获取并发送至需要控制的该伺服电机。
121.进一步的,所述轴io内存映射表中包含伺服驱动对象与数据存储位置的对应关系,所述数据存储位置包括伺服驱动对象对应的输入区的数据存储位置,以及伺服驱动对象对应的输出区的数据存储位置;
122.所述输入区用于存储该伺服驱动对象表示的伺服电机的最新状态数据;
123.所述输出区用于存储需要发送给该伺服驱动对象表示的伺服电机的控制指令。
124.进一步的,在所述轴io内存映射表中,伺服驱动对象对应的在输入区的数据存储位置,是基于plc上的io内存区域的起始地址start,以及该伺服驱动对象对应的输入区的起始位置offset1,以及该伺服驱动对象表示的伺服电机的寄存器的在输入区的偏移位置offset2表示的;
125.在所述轴io内存映射表中,伺服驱动对象对应的在输出区的数据存储位置,是基于plc上的io内存区域的起始地址start,以及该伺服驱动对象对应的输出区的起始位置offset1,以及该伺服驱动对象表示的伺服电机的寄存器的在输出区的偏移位置offset2表示的;
126.其中,plc上的io内存区域的起始地址start,可以由伺服驱动调用伺服开发基础库的接口int200获取。
127.本技术实施例提供一种电子设备,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使:实现上述任一plc应用包生成方法,或者,实现上述任一plc应用包运行方法。
128.本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一plc应用包生成方法,或者,实现上述任一plc应用包运行方法。
129.本技术实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一plc应用包生成方法,或者,执行上述任一plc应用包运行方法。
130.本技术有益效果包括:
131.本技术实施例提供的方法中,获取用户指定的伺服驱动,以及输入的待创建的轴对象的轴相关参数;使用轴相关参数生成轴配置相关代码,轴配置相关代码用于创建轴对
象和伺服驱动对象;将plc应用用户代码和轴配置相关代码均编译为webassembly目标代码;将编译得到的该webassembly目标代码,与plcopen运动控制功能库和指定的伺服驱动,链接成webassembly模块,plcopen运动控制功能库和指定的伺服驱动的代码格式为webassembly代码;生成包含webassembly模块的plc应用包。采用该方法生成的plc应用包可以利用其中所包含的基于webassembly的伺服驱动,实现对伺服电机的有效控制。
132.本技术的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本技术而了解。本技术的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
133.附图用来提供对本技术的进一步理解,并且构成说明书的一部分,与本技术实施例一起用于解释本技术,并不构成对本技术的限制。在附图中:
134.图1为本技术实施例提供的plc应用包生成方法的流程图;
135.图2为本技术实施例中生成plc应用包所基于的开发环境的示意图;
136.图3为本技术另一实施例提供的plc应用包生成方法的流程图;
137.图4为本技术实施例提供的plc应用包运行方法的流程图;
138.图5为本技术实施例中生成plc应用包所基于的开发环境以及运行plc应用的运行环境的示意图;
139.图6为本技术另一实施例提供的plc应用包运行方法的流程图;
140.图7为本技术实施例提供的plc应用包生成装置的结构示意图;
141.图8为本技术实施例提供的plc应用包运行装置的结构示意图;
142.图9为本技术实施例提供的电子设备的结构示意图。
具体实施方式
143.为了给出一种基于webassembly的伺服驱动的实现方案,本技术实施例提供了一种plc应用包生成方法、plc应用包运行方法及相关装置,以下结合说明书附图对本技术的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本技术,并不用于限定本技术。并且在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。
144.本技术实施例提供一种plc应用包生成方法,如图1所示,包括:
145.步骤11、获取用户指定的伺服驱动,以及输入的待创建的轴对象的轴相关参数;
146.步骤12、使用轴相关参数生成轴配置相关代码,轴配置相关代码用于创建轴对象和伺服驱动对象;
147.步骤13、将plc应用用户代码和轴配置相关代码均编译为webassembly目标代码,plc应用用户代码为使用plcopen运动控制功能库中的运动控制功能块编码得到的;
148.步骤14、将编译得到的该webassembly目标代码,与plcopen运动控制功能库和指定的伺服驱动,链接成webassembly模块,plcopen运动控制功能库和指定的伺服驱动的代码格式为webassembly代码;
149.步骤15、生成包含webassembly模块的plc应用包。
150.采用该方法生成的plc应用包中的webassembly模块,包含了代码格式为webassembly代码的plcopen运动控制功能库和伺服驱动,还包含了对plc应用用户代码和轴配置相关代码进行编译得到的webassembly目标代码,从而可以利用其中所包含的基于webassembly的伺服驱动,实现对伺服电机的有效控制。
151.下面结合附图,用具体实施例对本技术提供的上述plc应用包生成方法进行详细描述。
152.本技术实施例提供一种plc应用包生成方法,如图2所示和图3所示,包括如下步骤:
153.步骤31、获取用户指定的伺服驱动,以及输入的待创建的轴对象的轴相关参数。
154.本技术实施例中,如图2所示,可以向用户提供轴配置开发界面d1,供用户输入待创建的轴对象的轴相关参数。
155.还可以向用户提供伺服驱动库l1,其中包含各种伺服驱动,供用户选择,用户可以基于需要选择指定的伺服驱动a4。
156.进一步的,指定的该伺服驱动可以包括:设备描述文件f1,库接口描述文件f2和对伺服驱动代码编译得到的webassembly目标代码f3,其中:
157.设备描述文件f1中包含一个或多个伺服电机类型的描述信息,每种伺服电机类型的伺服电机的寄存器信息,以及该伺服电机的寄存器在plc上的io内存映射使用信息;
158.其中,伺服电机的寄存器信息可以包括:寄存器名称,数据类型,寄存器在plc上的io内存区域中对应的io内存块的偏移位置(offset2),在伺服电机上对应的对象字典信息,为可选字段,可以用于在创建基于该伺服驱动对象的轴对象时,使用该对象字典信息初始化寄存器配置。
159.库接口描述文件f2包含属性字段,该属性字段用于说明伺服驱动作为plc库具有伺服驱动的属性。
160.本技术实施例中,指定的伺服驱动a4至少提供如下配置管理接口之一:
161.接口int10,用于创建伺服驱动对象;
162.接口int20,用于设置伺服驱动对象的运动控制参数;
163.接口int30,用于设置伺服驱动对象的轴io内存映射表的相关参数;
164.接口int40,用于初始化伺服驱动对象;
165.指定的伺服驱动a4至少提供如下运动控制功能接口之一:
166.接口int100,用于设置和获取伺服电机的加电状态;
167.接口int110,用于设置和获取伺服电机的位置状态;
168.接口int120,用于设置和获取伺服电机的速度状态;
169.接口int130,作为伺服驱动对象的周期任务执行入口,用于从plc的io内存区域中获取伺服电机的最新状态数据,以及将需要发送给伺服电机的控制指令缓存到所述io内存区域中。
170.步骤32、获取plcopen运动控制功能库,以及plc应用用户代码。
171.plcopen运动控制功能库a3可以包括多个运动控制功能块,用于实现各种运动控制功能。
172.本技术实施例中,plcopen运动控制功能库a3提供至少如下运动控制功能接口:
173.接口int300,用于创建一个轴对象;
174.接口int310,用于遍历所有的轴对象,依次调用轴对象的伺服驱动对象的接口int130。
175.plc应用用户代码a1为用户编写的用户实现plc控制的用户代码。
176.本技术实施例中,plc应用用户代码a1为使用plcopen运动控制功能库a3中的运动控制功能块编码得到的。
177.进一步的,本技术实施例中,还可以获取伺服开发基础库a5。
178.伺服开发基础库a5可以提供如下功能接口:
179.接口int200,用于获取在plc上的io内存区域的起始地址。
180.伺服开发基础库a5也可以合并到plcopen运动控制功能库a3中,作为plcopen运动控制功能库a3的一部分。
181.步骤33、使用轴相关参数生成轴配置相关代码,轴配置相关代码用于创建轴对象和伺服驱动对象。
182.本技术实施例中,可以由自动代码生成器d2使用轴相关参数生成轴配置相关代码a2,进一步的,生成的轴配置相关代码a2,可以包括如下内容:
183.用于定义plcopen轴类型的全局变量,该全局变量使用轴对象的名称作为变量名称;
184.轴初始化函数,轴初始化函数包含以下内容:
185.通过调用plcopen运动控制功能库a3提供的接口int300,创建一个轴对象,并赋值到该全局变量;
186.通过调用轴对象对应的伺服驱动a4提供的接口int10,创建一个驱动类型的伺服驱动对象,并将该伺服驱动对象添加到轴对象中;
187.针对伺服驱动对象调用接口int30和接口int40,用于配置伺服驱动对象的轴io内存映射表的相关参数;
188.进一步的,还可以针对伺服驱动对象调用接口int20,用于配置伺服驱动对象的运动控制参数。
189.步骤34、基于伺服驱动包括的设备描述文件中包含的寄存器在plc上的io内存映射使用信息,生成轴io内存映射表,并生成包含该轴io内存映射表的io内存映射文件。
190.本步骤可以由自动代码生成器d2生成轴io内存映射表。
191.进一步的,还可以获取供plc应用用户代码使用的io内存映射表,且生成的io内存映射文件中还包含供plc应用用户代码使用的该io内存映射表。
192.步骤35、生成包含轴相关参数的轴配置文件。
193.本步骤为可选步骤,所生成的轴配置文件c1可用于在plc应用包运行时,使用该轴配置文件c1中包含的所述轴相关参数,调用接口int20设置伺服驱动对象的运动控制参数。
194.步骤36、将plc应用用户代码和轴配置相关代码均编译为webassembly目标代码。
195.本步骤中,可以由编译器d3将plc应用用户代码a1和轴配置相关代码a2均编译为webassembly目标代码。
196.步骤37、将编译得到的该webassembly目标代码,与plcopen运动控制功能库和指定的伺服驱动,链接成webassembly模块,plcopen运动控制功能库和指定的伺服驱动的代
码格式为webassembly代码。
197.当还获取有伺服开发基础库a5时,本步骤,具体可以为将编译得到的该webassembly目标代码,与plcopen运动控制功能库a3、指定的伺服驱动a4和伺服开发基础库a5,链接成webassembly模块,伺服开发基础库a5的代码格式为webassembly代码。
198.本步骤中,可以由链接器d4完成上述链接成webassembly模块的操作。
199.步骤38、生成包含该webassembly模块的plc应用包。
200.当在上述各步骤中,还生成有io内存映射文件,则生成的plc应用包中还可以包含该io内存映射文件。
201.当在上述各步骤中,还生成有包含轴相关参数的轴配置文件c1,则生成的plc应用包中还可以包含该轴配置文件c1。
202.采用本技术上述图2所示plc应用包生成方法,生成的plc应用包中包含上述webassembly模块,可以利用其中所包含的基于webassembly的伺服驱动,实现对伺服电机的有效控制。
203.相应的,本技术实施例还提供一种plc应用包运行方法,该plc应用包为采用上述任一plc应用包生成方法生成的,如图4所示,包括:
204.步骤41、加载plc应用包中的webassembly模块;
205.步骤42、通过调用webassembly模块中的轴配置相关代码,创建轴对象和伺服驱动对象,并将创建的该伺服驱动对象添加到该轴对象中;
206.步骤43、规划webassembly模块中plc应用用户代码包含的各任务的周期执行时间;
207.步骤44、按照周期执行时间,针对每个待执行的任务,调用plcopen运动控制功能库,使得plcopen运动控制功能库通过调用伺服驱动,并基于plc应用用户代码中该任务对应的代码逻辑的运行,向该任务需要控制的伺服电机发送控制指令,该任务需要控制的伺服电机为该任务中已创建的轴对象的伺服驱动对象表示的伺服电机。
208.下面结合附图,基于上述图2所示方法生成的plc应用包,用具体实施例对本技术提供的上述plc应用包运行方法进行详细描述。
209.本技术实施例提供一种plc应用包运行方法,如图5和图6所示,包括:
210.步骤61、加载plc应用包中的webassembly模块。
211.本技术实施例中,如图5所示,可以由plc任务实时调度器b2通过webassembly运行引擎b1,加载plc应用包中的webassembly模块。
212.步骤62、通过调用webassembly模块中的轴配置相关代码,创建轴对象和伺服驱动对象,并将创建的该伺服驱动对象添加到该轴对象中。
213.本技术实施例中,可以由plc任务实时调度器b2通过webassembly运行引擎b1,调用webassembly模块中的轴配置相关代码a2包含的轴初始化函数,以实现通过调用plcopen运动控制功能库a3提供的接口int300,创建一个轴对象,并赋值到该全局变量,以及通过调用轴对象对应的伺服驱动a4提供的接口int10,创建一个驱动类型的伺服驱动对象,并将该伺服驱动对象添加到轴对象中。
214.本步骤中,通过调用轴初始化函数,还可以实现针对伺服驱动对象调用接口int20,接口int30和接口int40配置伺服驱动对象的运动控制参数和轴io内存映射表的相
关参数;或者
215.调用轴初始化函数,以实现针对伺服驱动对象调用接口int30和接口int40配置伺服驱动对象的轴io内存映射表的相关参数。
216.当没有通过调用轴初始化函数配置伺服驱动对象的运动控制参数时,还可以包括如下步骤63。
217.步骤63、使用plc应用包中包含的轴配置文件中包含的轴相关参数,调用接口int20设置伺服驱动对象的运动控制参数。
218.本步骤中,可以由plc任务实时调度器b2,将轴配置文件c1加载到内存中,并将轴配置文件c1中包含的轴相关参数,作为参数调用接口int20,实现伺服驱动对象的运动控制参数的设置。
219.步骤64、规划webassembly模块中plc应用用户代码包含的各任务的周期执行时间。
220.本步骤中,可以由plc任务实时调度器b2,规划webassembly模块中plc应用用户代码包含的各任务的周期执行时间。
221.按照规划的上述周期执行时间,针对每个待执行的任务,可以按照如下步骤执行:
222.步骤65、针对每个待执行的任务,plc任务实时调度器b2通过webassembly运行引擎b1,调用plcopen运动控制功能库a3,使得plcopen运动控制功能库a3通过调用伺服驱动a4,获取该任务需要控制的伺服电机的最新状态数据,该任务需要控制的伺服电机为该任务中已创建的轴对象的伺服驱动对象表示的伺服电机。
223.具体的,可以调用plcopen运动控制功能库a3的接口int310,使得plcopen运动控制功能库a3通过调用伺服驱动a4的接口int130,从plc的io内存区域中获取该任务需要控制的伺服电机的最新状态数据。
224.如图5所示,plc的io内存区域中存储的该最新状态数据,可以由plc io调度器b3从伺服电机获取并存储。
225.步骤66、plc任务实时调度器b2通过webassembly运行引擎b1,基于获取的最新状态数据,执行plc应用用户代码中该任务对应的代码逻辑,通过该代码逻辑的运行,实现将代码逻辑中的控制参数进行缓存,这些控制参数后续将作为输入参数,用于调用plcopen运动控制功能库包含的相应的运动控制功能块,其中,控制参数可以是一些具体的控制目标数据,例如,目标位置、目标速度等。
226.步骤67、针对该任务,plc任务实时调度器b2通过webassembly运行引擎b1,调用plcopen运动控制功能库a3,使得plcopen运动控制功能库a3,通过a3中包含的运动控制功能块基于加载的上述控制参数和最新状态数据,生成控制指令,并通过调用伺服驱动a4将控制指令发送至需要控制的该伺服电机。
227.具体的,可以调用plcopen运动控制功能库a3的接口int310,使得plcopen运动控制功能库a3,通过包含的运动控制功能块基于加载的上述控制参数和最新状态数据,生成控制指令,并通过调用伺服驱动a4的int130,将该控制指令缓存到plc的io内存区域中,使得控制指令能够被从该io内存区域中获取并发送至需要控制的该伺服电机。
228.如图5所示,可以由plc io调度器b3从该io内存区域中获取控制指令,并发送给伺服电机。
229.本技术实施例中,轴io内存映射表中包含伺服驱动对象与数据存储位置的对应关系,并且数据存储位置包括伺服驱动对象对应的输入区的数据存储位置,以及伺服驱动对象对应的输出区的数据存储位置;
230.输入区用于存储该伺服驱动对象表示的伺服电机的最新状态数据;
231.输出区用于存储需要发送给该伺服驱动对象表示的伺服电机的控制指令。
232.其中,一个伺服驱动对象对应的输入区和输出区,也可以理解为是plc的io内存区域中在输入方向和输出方向各拥有的一段连续内存块(drv-io block)。
233.上述步骤65中,可以基于该轴io内存映射表,从plc的io内存区域中该伺服驱动对象对应的输入区,获取该伺服驱动对象表示的伺服电机的最新状态数据;
234.上述步骤67中,可以基于该轴io内存映射表,将需要发送给该伺服电机的该控制指令,缓存到plc的io内存区域中该伺服驱动对象对应的输出区,使得plc io调度器b3可以从该io内存区域中该伺服驱动对象对应的输出区获取控制指令,并发送给伺服电机。
235.进一步的,在轴io内存映射表中,对应一个伺服驱动对象的在输入区的数据存储位置,可以基于plc上的io内存区域的起始地址start,以及伺服驱动对象对应的输入区内存块(drv-io block)的起始位置offset1,以及伺服驱动对象表示的伺服电机的寄存器在输入区内存块(drv-io block)的偏移位置offset2表示,即使用(start+offset1+offset2)表示伺服电机上的寄存器数据的存储位置;
236.在轴io内存映射表中,对应一个伺服驱动对象的在输出区的数据存储位置,可以基于plc上的io内存区域的起始地址start,以及伺服驱动对象对应的输出区内存块(drv-io block)的起始位置offset1,以及伺服驱动对象表示的伺服电机的寄存器在输出区内存块(drv-io block)的偏移位置offset2表示,即使用(start+offset1+offset2)表示需要发送给伺服电机的控制指令的存储位置;
237.其中,plc上的io内存区域的起始地址(start),可以由伺服驱动a4调用伺服开发基础库a5的接口int200获取,起始位置offset1可以通过伺服驱动的接口int30进行设置,偏移位置offset2为伺服驱动开发的过程中定义的。
238.本技术实施例中,plc io调度器b3可以基于(start+offset1+offset2),获取伺服电机的最新状态数据,以及缓存需要发送给该伺服电机的控制指令。
239.基于本技术实施例提供的上述方案,本技术实施例中,提供了一种plc伺服驱动包的构成方法,以及其包含的使用webassembly模块表示处理逻辑的接口标准与驱动设备文件的设计使用方法。
240.基于同一发明构思,根据本技术上述实施例提供的plc应用包生成方法,相应地,本技术另一实施例还提供了一种plc应用包生成装置,其结构示意图如图7所示,具体包括:
241.驱动获取模块71,用于获取用户指定的伺服驱动,以及输入的待创建的轴对象的轴相关参数;
242.代码生成模块72,用于使用所述轴相关参数生成轴配置相关代码,所述轴配置相关代码用于创建轴对象和伺服驱动对象;
243.代码编译模块73,用于将plc应用用户代码和所述轴配置相关代码均编译为webassembly目标代码,所述plc应用用户代码为使用plcopen运动控制功能库中的运动控制功能块编码得到的;
244.代码链接模块74,用于将编译得到的该webassembly目标代码,与plcopen运动控制功能库和指定的所述伺服驱动,链接成webassembly模块,所述plcopen运动控制功能库和指定的所述伺服驱动的代码格式为webassembly代码;
245.应用包生成模块75,用于生成包含所述webassembly模块的plc应用包。
246.进一步的,所述代码链接模块74,具体用于将编译得到的该webassembly目标代码,与plcopen运动控制功能库、指定的所述伺服驱动和伺服开发基础库,链接成webassembly模块,所述伺服开发基础库的代码格式为webassembly代码。
247.进一步的,指定的所述伺服驱动包括:设备描述文件,所述设备描述文件中包含伺服电机的寄存器的io内存使用信息;
248.所述代码生成模块72,还用于基于所述设备描述文件中包含的寄存器在plc上的io内存映射使用信息,生成轴io内存映射表;生成包含所述轴io内存映射表的io内存映射文件;
249.所述应用包生成模块75,具体用于生成包含所述webassembly模块和所述io内存映射文件的plc应用包。
250.进一步的,所述代码生成模块72,还用于生成包含所述轴相关参数的轴配置文件;
251.所述应用包生成模块75,具体用于生成包含所述webassembly模块和所述轴配置文件的plc应用包,其中,所述轴配置文件用于在所述plc应用包被加载并运行的过程中,设置伺服驱动对象的运动控制参数。
252.进一步的,指定的所述伺服驱动包括:设备描述文件,库接口描述文件和对伺服驱动代码编译得到的webassembly目标代码,其中:
253.所述设备描述文件中包含伺服电机类型的描述信息,每种伺服电机类型的伺服电机的寄存器信息,以及该伺服电机的寄存器在plc上的io内存映射使用信息;
254.所述库接口描述文件包含属性字段,所述属性字段用于说明所述伺服驱动作为plc库具有伺服驱动的属性。
255.进一步的,指定的所述伺服驱动至少提供如下配置管理接口之一:
256.接口int10,用于创建伺服驱动对象;
257.接口int20,用于设置伺服驱动对象的运动控制参数;
258.接口int30,用于设置伺服驱动对象的轴io内存映射表的相关参数;
259.接口int40,用于初始化伺服驱动对象;
260.指定的所述伺服驱动至少提供如下运动控制功能接口之一:
261.接口int100,用于设置和获取伺服电机的加电状态;
262.接口int110,用于设置和获取伺服电机的位置状态;
263.接口int120,用于设置和获取伺服电机的速度状态;
264.接口int130,作为伺服驱动对象的周期任务执行入口,用于从plc的io内存区域中获取伺服电机的最新状态数据,以及将需要发送给伺服电机的控制指令缓存到所述io内存区域中。
265.进一步的,所述plcopen运动控制功能库提供至少如下运动控制功能接口:
266.接口int300,用于创建一个轴对象;
267.接口int310,用于遍历所有的轴对象,依次调用轴对象的伺服驱动对象的接口
int130。
268.进一步的,所述伺服开发基础库提供如下功能接口:
269.接口int200,用于获取在plc上的io内存区域的起始地址。
270.进一步的,所述轴配置相关代码包括:
271.用于定义plcopen轴类型的全局变量,该全局变量使用轴对象的名称作为变量名称;
272.轴初始化函数,所述轴初始化函数包含以下内容:
273.通过调用所述plcopen运动控制功能库提供的接口int300,创建一个轴对象,并赋值到该全局变量;
274.通过调用轴对象对应的伺服驱动提供的接口int10,创建一个驱动类型的伺服驱动对象,并将该伺服驱动对象添加到轴对象中;
275.针对伺服驱动对象调用接口int20,接口int30和接口int40,用于配置伺服驱动对象的运动控制参数和轴io内存映射表的相关参数。
276.基于同一发明构思,根据本技术上述实施例提供的plc应用包运行方法,相应地,本技术另一实施例还提供了一种plc应用包运行装置,所述plc应用包为上述任一plc应用包生成方法生成的,其结构示意图如图8所示,具体包括:
277.代码加载模块81,用于加载所述plc应用包中的所述webassembly模块;
278.对象创建模块82,用于通过调用所述webassembly模块中的所述轴配置相关代码,创建轴对象和伺服驱动对象,并将创建的该伺服驱动对象添加到该轴对象中;
279.周期规划模块83,用于规划所述webassembly模块中所述plc应用用户代码包含的各任务的周期执行时间;
280.任务执行模块84,用于按照所述周期执行时间,针对每个待执行的任务,调用所述plcopen运动控制功能库,使得所述plcopen运动控制功能库通过调用所述伺服驱动,并基于所述plc应用用户代码中该任务对应的代码逻辑的运行,向该任务需要控制的伺服电机发送控制指令,该任务需要控制的伺服电机为该任务中已创建的轴对象的伺服驱动对象表示的伺服电机。
281.进一步的,所述对象创建模块82,具体用于调用所述webassembly模块中的所述轴配置相关代码包含的所述轴初始化函数,以实现通过调用所述plcopen运动控制功能库提供的接口int300,创建一个轴对象,并赋值到该全局变量,以及通过调用轴对象对应的伺服驱动提供的接口int10,创建一个驱动类型的伺服驱动对象,并将该伺服驱动对象添加到轴对象中。
282.进一步的,所述对象创建模块82,还用于调用所述轴初始化函数,以实现针对伺服驱动对象调用接口int20,接口int30和接口int40配置伺服驱动对象的运动控制参数和轴io内存映射表的相关参数;或者
283.调用所述轴初始化函数,以实现针对伺服驱动对象调用接口int30和接口int40配置伺服驱动对象的轴io内存映射表的相关参数;以及使用所述轴配置文件中包含的所述轴相关参数,调用接口int20设置伺服驱动对象的运动控制参数。
284.进一步的,所述任务执行模块84,具体用于针对每个待执行的任务,调用所述plcopen运动控制功能库,使得所述plcopen运动控制功能库通过调用所述伺服驱动,获取
该任务需要控制的伺服电机的最新状态数据;
285.基于所述最新状态数据,执行所述plc应用用户代码中该任务对应的代码逻辑,以缓存用于调用所述plcopen运动控制功能库包含的运动控制功能块的控制参数;
286.针对该任务,调用所述plcopen运动控制功能库,使得所述plcopen运动控制功能库,通过包含的运动控制功能块基于加载的所述控制参数和所述最新状态数据,生成控制指令,并通过调用所述伺服驱动将所述控制指令发送至需要控制的该伺服电机。
287.进一步的,所述任务执行模块84,具体用于针对每个待执行的任务,调用所述plcopen运动控制功能库的接口int310,使得所述plcopen运动控制功能库通过调用所述伺服驱动的接口int130,从plc的io内存区域中获取该任务需要控制的伺服电机的最新状态数据。
288.进一步的,所述任务执行模块84,具体用于所述针对该任务,调用所述plcopen运动控制功能库的接口int310,使得所述plcopen运动控制功能库,通过包含的运动控制功能块基于加载的所述控制参数和所述最新状态数据,生成控制指令,并通过调用所述伺服驱动的int130,将所述控制指令缓存到所述io内存区域中,使得所述控制指令能够被从所述io内存区域中获取并发送至需要控制的该伺服电机。
289.进一步的,所述轴io内存映射表中包含伺服驱动对象与数据存储位置的对应关系,所述数据存储位置包括伺服驱动对象对应的输入区的数据存储位置,以及伺服驱动对象对应的输出区的数据存储位置;
290.所述输入区用于存储该伺服驱动对象表示的伺服电机的最新状态数据;
291.所述输出区用于存储需要发送给该伺服驱动对象表示的伺服电机的控制指令。
292.进一步的,在所述轴io内存映射表中,伺服驱动对象对应的在输入区的数据存储位置,是基于plc上的io内存区域的起始地址start,以及该伺服驱动对象对应的输入区的起始位置offset1,以及该伺服驱动对象表示的伺服电机的寄存器的在输入区的偏移位置offset2表示的;
293.在所述轴io内存映射表中,伺服驱动对象对应的在输出区的数据存储位置,是基于plc上的io内存区域的起始地址start,以及该伺服驱动对象对应的输出区的起始位置offset1,以及该伺服驱动对象表示的伺服电机的寄存器的在输出区的偏移位置offset2表示的;
294.其中,plc上的io内存区域的起始地址start,可以由伺服驱动调用伺服开发基础库的接口int200获取。
295.上述各模块的功能可对应于图1至图6所示流程中的相应处理步骤,在此不再赘述。
296.本技术的实施例所提供的plc应用包生成装置、plc应用包运行装置可通过计算机程序实现。本领域技术人员应该能够理解,上述的模块划分方式仅是众多模块划分方式中的一种,如果划分为其他模块或不划分模块,只要plc应用包生成装置、plc应用包运行装置具有上述功能,都应该在本技术的保护范围之内。
297.本技术实施例提供一种电子设备,如图9所示,包括处理器91和机器可读存储介质92,所述机器可读存储介质92存储有能够被所述处理器91执行的机器可执行指令,所述处理器91被所述机器可执行指令促使:实现上述任一plc应用包生成方法,或者,实现上述任
一plc应用包运行方法。
298.本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一plc应用包生成方法,或者,实现上述任一plc应用包运行方法。
299.本技术实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一plc应用包生成方法,或者,执行上述任一plc应用包运行方法。
300.上述电子设备中的机器可读存储介质可以包括随机存取存储器(random access memory,ram),也可以包括非易失性存储器(non-volatile memory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
301.上述的处理器可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processing,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
302.本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、计算机可读存储介质,计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
303.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
304.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
305.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
306.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一
个方框或多个方框中指定的功能的步骤。
307.显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
技术特征:
1.一种plc应用包生成方法,其特征在于,包括:获取用户指定的伺服驱动,以及输入的待创建的轴对象的轴相关参数;使用所述轴相关参数生成轴配置相关代码,所述轴配置相关代码用于创建轴对象和伺服驱动对象;将plc应用用户代码和所述轴配置相关代码均编译为webassembly目标代码,所述plc应用用户代码为使用plcopen运动控制功能库中的运动控制功能块编码得到的;将编译得到的该webassembly目标代码,与plcopen运动控制功能库和指定的所述伺服驱动,链接成webassembly模块,所述plcopen运动控制功能库和指定的所述伺服驱动的代码格式为webassembly代码;生成包含所述webassembly模块的plc应用包。2.如权利要求1所述的方法,其特征在于,所述将编译得到的该webassembly目标代码,与plcopen运动控制功能库和指定的所述伺服驱动,链接成webassembly模块,包括:将编译得到的该webassembly目标代码,与plcopen运动控制功能库、指定的所述伺服驱动和伺服开发基础库,链接成webassembly模块,所述伺服开发基础库的代码格式为webassembly代码。3.如权利要求1所述的方法,其特征在于,指定的所述伺服驱动包括:设备描述文件,所述设备描述文件中包含伺服电机的寄存器的io内存使用信息;在所述生成包含所述webassembly模块的plc应用包之前,还包括:基于所述设备描述文件中包含的寄存器在plc上的io内存映射使用信息,生成轴io内存映射表;生成包含所述轴io内存映射表的io内存映射文件;所述生成包含所述webassembly模块的plc应用包,包括:生成包含所述webassembly模块和所述io内存映射文件的plc应用包。4.如权利要求1所述的方法,其特征在于,在所述生成包含所述webassembly模块的plc应用包之前,还包括:生成包含所述轴相关参数的轴配置文件;所述生成包含所述webassembly模块的plc应用包,包括:生成包含所述webassembly模块和所述轴配置文件的plc应用包,其中,所述轴配置文件用于在所述plc应用包被加载并运行的过程中,设置伺服驱动对象的运动控制参数。5.如权利要求1所述的方法,其特征在于,指定的所述伺服驱动包括:设备描述文件,库接口描述文件和对伺服驱动代码编译得到的webassembly目标代码,其中:所述设备描述文件中包含伺服电机类型的描述信息,每种伺服电机类型的伺服电机的寄存器信息,以及该伺服电机的寄存器在plc上的io内存映射使用信息;所述库接口描述文件包含属性字段,所述属性字段用于说明所述伺服驱动作为plc库具有伺服驱动的属性。6.如权利要求5所述的方法,其特征在于,指定的所述伺服驱动至少提供如下配置管理接口之一:接口int10,用于创建伺服驱动对象;接口int20,用于设置伺服驱动对象的运动控制参数;
接口int30,用于设置伺服驱动对象的轴io内存映射表的相关参数;接口int40,用于初始化伺服驱动对象;指定的所述伺服驱动至少提供如下运动控制功能接口之一:接口int100,用于设置和获取伺服电机的加电状态;接口int110,用于设置和获取伺服电机的位置状态;接口int120,用于设置和获取伺服电机的速度状态;接口int130,作为伺服驱动对象的周期任务执行入口,用于从plc的io内存区域中获取伺服电机的最新状态数据,以及将需要发送给伺服电机的控制指令缓存到所述io内存区域中。7.如权利要求6所述的方法,其特征在于,所述plcopen运动控制功能库提供至少如下运动控制功能接口:接口int300,用于创建一个轴对象;接口int310,用于遍历所有的轴对象,依次调用轴对象的伺服驱动对象的接口int130。8.如权利要求7所述的方法,其特征在于,所述伺服开发基础库提供如下功能接口:接口int200,用于获取在plc上的io内存区域的起始地址。9.如权利要求7所述的方法,其特征在于,所述轴配置相关代码包括:用于定义plcopen轴类型的全局变量,该全局变量使用轴对象的名称作为变量名称;轴初始化函数,所述轴初始化函数包含以下内容:通过调用所述plcopen运动控制功能库提供的接口int300,创建一个轴对象,并赋值到该全局变量;通过调用轴对象对应的伺服驱动提供的接口int10,创建一个驱动类型的伺服驱动对象,并将该伺服驱动对象添加到轴对象中;针对伺服驱动对象调用接口int20,接口int30和接口int40,用于配置伺服驱动对象的运动控制参数和轴io内存映射表的相关参数。10.一种plc应用包运行方法,其特征在于,所述plc应用包为权利要求1-9任一所述方法生成的,包括:加载所述plc应用包中的所述webassembly模块;通过调用所述webassembly模块中的所述轴配置相关代码,创建轴对象和伺服驱动对象,并将创建的该伺服驱动对象添加到该轴对象中;规划所述webassembly模块中所述plc应用用户代码包含的各任务的周期执行时间;按照所述周期执行时间,针对每个待执行的任务,调用所述plcopen运动控制功能库,使得所述plcopen运动控制功能库通过调用所述伺服驱动,并基于所述plc应用用户代码中该任务对应的代码逻辑的运行,向该任务需要控制的伺服电机发送控制指令,该任务需要控制的伺服电机为该任务中已创建的轴对象的伺服驱动对象表示的伺服电机。
技术总结
本申请公开了一种PLC应用包生成方法、PLC应用包运行方法及相关装置,包括:获取用户指定的伺服驱动,以及输入的待创建的轴对象的轴相关参数;使用轴相关参数生成轴配置相关代码,轴配置相关代码用于创建轴对象和伺服驱动对象;将PLC应用用户代码和轴配置相关代码均编译为WebAssembly目标代码,PLC应用用户代码为使用PLCOpen运动控制功能库中的运动控制功能块编码得到的;将编译得到的该WebAssembly目标代码,与PLCOpen运动控制功能库和指定的伺服驱动,链接成WebAssembly模块,PLCOpen运动控制功能库和指定的伺服驱动的代码格式为WebAssembly代码;生成包含WebAssembly模块的PLC应用包。采用该方案,可以利用基于WebAssembly的伺服驱动,实现对伺服电机的有效控制。效控制。效控制。
技术研发人员:
王观嵘
受保护的技术使用者:
北京万昇智能科技有限公司
技术研发日:
2022.07.07
技术公布日:
2022/10/11