CN114675857A - 控制系统、控制方法及数据存储区的分配方法 - Google Patents

控制系统、控制方法及数据存储区的分配方法 Download PDF

Info

Publication number
CN114675857A
CN114675857A CN202210273043.1A CN202210273043A CN114675857A CN 114675857 A CN114675857 A CN 114675857A CN 202210273043 A CN202210273043 A CN 202210273043A CN 114675857 A CN114675857 A CN 114675857A
Authority
CN
China
Prior art keywords
variable
storage
real
control program
time task
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210273043.1A
Other languages
English (en)
Inventor
陈宏君
张磊
李响
文继锋
曾凯
叶立文
洪礼鑫
周强
徐卫峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NR Electric Co Ltd
NR Engineering Co Ltd
Original Assignee
NR Electric Co Ltd
NR Engineering Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NR Electric Co Ltd, NR Engineering Co Ltd filed Critical NR Electric Co Ltd
Priority to CN202210273043.1A priority Critical patent/CN114675857A/zh
Publication of CN114675857A publication Critical patent/CN114675857A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供了一种控制系统,包括:编译单元,配置成将待更新的控制程序解耦,编译生成数据文件,并发送下载请求;非实时任务单元,与所述编译单元相通信,配置成接收到所述下载请求后,下载并读取所述数据文件,并发送可更新信号;实时任务单元,与所述非实时任务单元相通信,配置成实时运行控制程序,在接收到所述可更新信号后,根据所述非实时任务单元读取所述数据文件的结果,完成控制程序的更新。本发明所提供的控制系统,不仅支持控制程序的整体更新,也支持数据文件的部分单独更新;由非实时任务单元下载待更新的数据文件,准备工作就绪后,再由实时任务在运行控制程序的间隙完成更新操作,兼顾了控制程序的运行效率和数据的更新效率。

Description

控制系统、控制方法及数据存储区的分配方法
技术领域
本申请涉及计算机技术领域,尤其涉及一种包括可编程控制器的控制系统及应用可编程控制器进行控制的方法。
背景技术
符合IEC61131-3标准的语言已经在工业控制领域广泛使用,普遍采用解释执行和编译执行两种模式。解释执行可移植性强,但运行效率低,不适用于实时性高的场景。编译执行效率高,但通常将程序混合编译为1个大目标文件,仅单独修改数据、配置、指令时,控制器需要暂停运行,接收整个文件后重新初始化运行,无法实现部分增量更新,已有文件的增量更新方案往往采用整体数据块复制或者仅支持数据区未变动兼容情况下的复用。而实时控制系统往往需要在线不停机调试修改程序和运行程序。
发明内容
有鉴于现有技术的至少一个缺陷,本发明提供了一种控制系统,包括:
编译单元,配置成将待更新的控制程序解耦,编译生成数据文件,并发送下载请求;
非实时任务单元,与所述编译单元相通信,配置成接收到所述下载请求后,下载并读取所述数据文件,并发送可更新信号;
实时任务单元,与所述非实时任务单元相通信,配置成实时运行控制程序,在接收到所述可更新信号后,根据所述非实时任务单元读取所述数据文件的结果,完成控制程序的更新。
根据本发明的一个方面,其中所述数据文件包括变量搬移映射表,所述非实时任务单元进一步配置成:
解析所述变量搬移映射表。
根据本发明的一个方面,其中所述实时任务单元进一步配置成:
在接收到所述可更新信号后,根据所述变量搬移映射表,读取原变量存储地址的内存值,写入新变量存储地址。
根据本发明的一个方面,其中所述编译单元进一步配置成:
根据当前运行的控制程序的数据存储区分配信息、变量存储地址信息和所述待更新的控制程序,形成所述变量搬移映射表。
根据本发明的一个方面,其中所述非实时任务单元进一步配置成:
根据外部信号的触发,向所述编译单元上传所述当前运行的控制程序的数据存储区分配信息、变量存储地址信息。
根据本发明的一个方面,其中所述编译单元进一步配置成:编译生成配置文件、指令文件;所述非实时任务单元进一步配置成:
接收到所述下载请求后,下载所述配置文件、指令文件,读取所述配置文件,获得任务链信息,加载所述指令文件,获得函数指针地址。
根据本发明的一个方面,其中所述实时任务单元进一步配置成:
在接收到所述可更新信号后,运行初始化函数,为新增变量赋初始值;
根据所述任务链信息切换子程序之间的调用关系;
根据所述函数指针地址切换子程序的函数指针。
根据本发明的一个方面,其中所述编译单元进一步配置成:
根据所述待更新的控制程序的更新标记,生成所述指令文件、配置文件。
根据本发明的一个方面,其中所述实时任务单元进一步配置成:
接收到所述可更新信号后,在运行控制程序的间隙完成所述更新。
根据本发明的一个方面,其中所述实时任务单元进一步配置成:
接收到所述可更新信号后,暂停运行控制程序,完成所述更新后重新启动所述控制程序。
根据本发明的一个方面,所述控制系统包括可编程控制器、嵌入式处理器、计算机、移动终端上运行的虚拟控制器中的一种或多种;其中所述编译单元包括组态软件,所述非实时任务单元包括所述可编程控制器的非实时线程,所述实时任务单元包括所述可编程控制器的实时线程。
本发明还提供一种用于上文所述的控制系统的数据存储区的分配方法,包括:
按照预设长度将所述数据存储区划分为多个存储子区;
根据变量组所需的存储长度除以所述预设长度取整加一,为所述变量组分配一个或多个存储子区,并使已分配的一个或多个存储子区在所述数据存储区内依次排列;
将所述数据存储区中未分配的存储子区设置空闲标志。
根据本发明的一个方面,其中所述变量组包括一个或多个变量,所述方法进一步包括:
所述一个或多个变量在为所述变量组分配的一个或多个存储子区内,按照变量所需的存储长度依次排列;
在为所述变量组分配的一个或多个存储子区内,未存储变量的地址处设置空闲标志。
根据本发明的一个方面,所述方法进一步包括:
当所述变量组中的一个或多个变量被删除,在被删除变量的存储地址处设置空闲标志;
当所述变量组中新增一个或多个变量,根据新增变量的变量声明顺序和所需存储长度,在为所述变量组分配的一个或多个存储子区内,寻找具有空闲标志的相应长度的连续地址,将所述新增变量存储于所述连续地址。
根据本发明的一个方面,所述方法进一步包括:
当所述变量组中的一个或多个变量所需存储长度缩短,从所需存储长度缩短的变量存储地址的尾部缩短相应的长度,并将缩短的部分设置空闲标志;
当所述变量组中的一个或多个变量所需存储长度伸长,从所需存储长度伸长的变量存储地址的相邻地址处,寻找具有空闲标志的相应长度的连续地址,将伸长的部分存储于所述连续地址处;
当所述相邻地址处不足以存放所述伸长的部分时,将所述所需存储长度伸长的变量整体搬移到具有空闲标志的地址处存放;
在搬移变量的原存储地址处设置空闲标志。
根据本发明的一个方面,所述方法进一步包括:
当所述数据存储区新增一个或多个变量组,根据新增变量组所需的存储长度除以所述预设长度取整加一,在所述数据存储区内,寻找具有空闲标志的连续存储子区,将所述新增变量组存储于所述连续存储子区;
在为所述新增变量组分配的连续存储子区内,未存储变量的地址处设置空闲标志。
根据本发明的一个方面,所述方法进一步包括:
当所述数据存储区的一个或多个变量组被删除,将被删除变量组所在的一个或多个存储子区设置空闲标志。
根据本发明的一个方面,所述方法进一步包括:
当所述数据存储区的一个或多个变量组所需存储长度超过为所述一个或多个变量组分配的一个或多个存储子区,根据存储长度增加的变量组所需的存储长度除以所述预设长度取整加一,为所述存储长度增加的变量组重新分配一个或多个存储子区;
在所述数据存储区内,寻找具有空闲标志的相应长度的连续存储子区,将所述所需存储长度增加的变量组存储于所述连续存储子区;
在搬移变量组的原存储子区设置空闲标志。
根据本发明的一个方面,所述方法进一步包括:
当所述数据存储区不足以存放新增的一个或多个变量组,或所述数据存储区不足以存放搬移后的一个或多个变量组,将所述数据存储区中具有空闲标志的地址合并,重新划分存储子区。
根据本发明的一个方面,其中所述数据存储区包括全局变量数据存储区、局部变量数据存储区、输入输出映射数据存储区;所述变量组包括将一个或多个变量封装组成的结构体。
本发明还提供一种使用如上文所述的控制系统进行控制的方法,包括:
通过所述编译单元将待更新的控制程序解耦,编译生成数据文件,并发送下载请求;
通过所述非实时任务单元在接收到所述下载请求后,下载并读取所述数据文件,并发送可更新信号;
通过所述实时任务单元实时运行控制程序,在接收到所述可更新信号后,根据所述非实时任务单元读取所述数据文件的结果,完成控制程序的更新。
根据本发明的一个方面,所述数据文件包括变量搬移映射表,所述方法进一步包括:
通过所述非实时任务单元解析所述变量搬移映射表。
根据本发明的一个方面,所述方法进一步包括:
通过所述实时任务单元在接收到所述可更新信号后,根据所述变量搬移映射表,读取原变量存储地址的内存值,写入新变量存储地址。
根据本发明的一个方面,所述方法进一步包括:
通过所述编译单元根据当前运行的控制程序的数据存储区分配信息、变量存储地址信息和所述待更新的控制程序,形成所述变量搬移映射表。
根据本发明的一个方面,所述方法进一步包括:
所述非实时任务单元根据外部信号的触发,向所述编译单元上传所述当前运行的控制程序的数据存储区分配信息、变量存储地址信息。
根据本发明的一个方面,所述方法进一步包括:
通过所述编译单元编译生成配置文件、指令文件;
通过所述非实时任务单元在接收到所述下载请求后,下载所述配置文件、指令文件,读取所述配置文件,获得任务链信息,加载所述指令文件,获得函数指针地址。
根据本发明的一个方面,所述方法进一步包括:
通过所述实时任务单元在接收到所述可更新信号后,运行初始化函数,为新增变量赋初始值;根据所述任务链信息切换子程序之间的调用关系;根据所述函数指针地址切换子程序的函数指针。
根据本发明的一个方面,所述方法进一步包括:
通过所述编译单元根据所述待更新的控制程序的更新标记,生成所述指令文件、配置文件。
根据本发明的一个方面,所述方法进一步包括:
所述实时任务单元在接收到所述可更新信号后,在运行控制程序的间隙完成所述更新。
本发明所提供的控制系统,通过在编译阶段对待更新的控制程序解耦,对数据文件、指令文件、配置文件分别进行处理,不仅支持控制程序的整体更新,也支持数据文件、配置文件和指令文件的部分单独更新。本发明所提供的控制系统中,由非实时任务单元下载待更新的文件,准备工作就绪后,再由实时任务进行更新操作,该更新操作在运行控制程序的间隙完成,从而兼顾了控制程序的运行效率和数据的更新效率。对于数据文件,优选根据当前运行的控制程序的数据存储区分配信息、变量存储地址信息确定待更新的控制程序中的新增变量存储地址、变量/变量组搬移地址;对于指令文件、配置文件,优选根据待更新的控制程序中的更新标记进行部分编译,进一步提高了编译效率和更新效率。本发明所提供的控制系统的数据存储区,采用可扩展的划分存储子区的管理方式,采用变量紧凑分布的存储方式,在数据更新时,采用变量/变量组最小代价搬移的策略,保证了数据增量更新的快速性和程序运行的高效性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图,而并不超出本申请要求保护的范围。
图1示出了本发明的一个实施例所提供的控制系统;
图2A示出了本发明的一个实施例所提供的数据存储区分配方法;
图2B示出了本发明的一个实施例所提供的数据存储区分配方法;
图2C示出了本发明的一个实施例所提供的数据存储区分配方法;
图3示出了本发明的一个实施例所提供的变量组整体搬移的更新方法;
图4A示出了本发明的一个实施例所提供的变量组内部的变量存储方法;
图4B示出了本发明的一个实施例所提供的变量组内部的变量更新方法;
图4C示出了本发明的一个实施例所提供的变量组内部的变量更新方法;
图5示出了本发明的一个实施例所提供的控制方法。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本申请的方法及其核心思想。同时,本领域技术人员依据本申请的思想,基于本申请的具体实施方式及应用范围上做出的改变或变形之处,都属于本申请保护的范围。综上所述,本说明书内容不应理解为对本申请的限制。
在工业控制中,控制系统往往需要周期性地运行控制程序,或者根据外部信号的触发实时运行控制程序。因此,在控制程序需要更新时,实时控制系统需要在线不停机调试和运行程序。基于此,本发明提供一种通过对待更新的控制程序进行解耦编译,在不间断控制程序运行的同时,完成控制程序更新的控制系统。
根据本发明的一个实施例,如图1所示,本发明提供一种控制系统100,包括:编译单元110、非实时任务单元120和实时任务单元130。其中:
编译单元110配置成将待更新的控制程序解耦,编译生成数据文件、指令文件和配置文件,并发送下载请求S1。
其中,数据文件为自定义格式文件,包括数据分区信息、变量信息、变量搬移映射表。其中数据分区信息包括全局变量数据存储区、局部变量数据存储区和硬件输入输出映射数据存储区的分配区、空闲区信息。其中变量信息包括变量名、变量类型、相对偏移地址信息、默认值、保持标记属性。其中变量搬移映射表包括变量名、搬移前相对地址、搬移后相对地址、搬移内存长度。
其中,配置文件为自定义格式文件,包括任务链信息、任务属性(包括任务名称、任务等级、任务周期、是否使能、关联的触发变量)、各等级任务执行的子程序(程序组织单元)名、控制器属性(控制器名称、编号、描述、通信参数和设备定值)。
其中,指令文件为控制系统100能够运行的机器码,优选地,控制系统100包括可编程控制器,指令文件的编译过程是将采用IEC61131-3标准5种语言编写的若干程序组织单元(包括程序Program、功能块Function Block、函数Function)编译为二进制文件库。
编译单元110解耦编译生成数据文件、配置文件和指令文件,包括在当前运行的控制程序的基础上,对部分更新的数据文件、配置文件和指令文件进行编译后生成的内容,还包括对待更新的控制程序重新进行编译,生成新的数据文件、配置文件和指令文件。通过解耦操作,本发明所提供的实施例,不仅支持控制程序的整体更新,也支持数据文件、配置文件和指令文件的部分单独更新。
非实时任务单元120与编译单元110相通信,配置成接收到下载请求S1后,下载所述数据文件、指令文件和配置文件。其中优选地采用安全FTPS或TLS-TCP加密通信协议下载。非实时任务单元120读取所述数据文件,根据本次更新的更新方式适配处理数据文件;读取所述配置文件,获得任务链信息;加载所述指令文件,获得函数指针地址,并发送可更新信号S2。
实时任务单元130与非实时任务单元120相通信,配置成实时运行控制程序,并在接收到可更新信号S2后,根据所述非实时任务单元120读取所述数据文件的结果进行在线调试;根据所述任务链信息调整子程序之间的调用关系;根据所述函数指针地址切换子程序内的函数指针,在对应的任务等级下运行函数,以完成控制程序的更新。其中,优选地,所述子程序为所述控制程序的程序组织单元。
根据本发明的一个实施例,控制程序的更新方式包括:完全编译的更新方式和增量更新的更新方式。
如果本次更新的更新方式为完全编译的更新方式,则非实时任务单元120读取数据文件,实时任务单元130运行初始化函数,基于默认值为变量设置初始运行值;如果变量有保持标记,则基于层次变量名从掉电保持区读取并设置初始运行值。
根据本发明的一个实施例,所述数据文件包括变量搬移映射表,所述变量搬移映射表包括:变量名、变量搬移前相对地址、变量搬移后相对地址、变量搬移的内存长度。
如果本次更新的更新方式为增量更新的更新方式,如图1所示,非实时任务单元120读取数据文件,解析变量搬移映射表,实时任务单元130运行初始化函数,为新增变量设置初始运行值,并根据所述变量搬移映射表,读取原变量存储地址的内存值,并回写到新的变量存储地址,完成增量更新。
例如,int类型的全局变量GVar1,更新前变量GVar1相对于全局数据区pGlobalArea首地址的相对偏移地址为offset1,更新后变量GVar1相对于全局数据区pGlobalArea首地址的相对偏移地址为offset2,则需要将更新前的旧地址处的变量值赋给更新后的新地址,作为变量GVar1的初始值,实现变量运行值的搬移,变量搬移的代码如下:
int*pvar1=(int*)&((char*)pGlobalArea+offset1);//更新前变量地址
int val=*pvar1;//获取更新前变量运行值
int*pvar2=(int*)&((char*)pGlobalArea+offset2);//更新后变量地址
*pvar2=val1;//将更新前的变量值赋给更新后的存储地址作为变量初始值
根据本发明的一个实施例,非实时任务单元120进一步配置成:根据外部信号的触发,向编译单元110上传当前运行的控制程序的数据存储区分配信息、变量存储地址信息。编译单元110进一步配置成:根据当前运行的控制程序的数据存储区分配信息、变量存储地址信息和所述待更新的控制程序,形成所述变量搬移映射表。
根据本发明的一个实施例,可以通过用户的选择确定本次更新的更新方式。如图1所示,编译单元110根据预设的通信参数(优选为IP地址),登入非实时任务单元120,使能下载操作,弹出下载更新选项界面,获取用户选择的下载更新选项。当用户选择增量更新的更新方式时,非实时任务单元120向编译单元110上装当前运行的控制程序的数据文件,包括数据存储区分配信息、变量存储地址信息。编译单元110参照上装的当前运行的控制程序的数据存储区分配信息、变量存储地址信息数据和待更新的控制程序,形成新增变量的数据文件和变量搬移映射表。
根据本发明的一个实施例,如图1所示,编译单元110进一步配置成:根据所述待更新的控制程序的更新标记,生成所述指令文件、配置文件。
基于更新标记生成指令文件、配置文件,提高了编译单元110的编译效率,也提高了后续非实时任务单元120进行文件的下载、加载与读取,实时任务单元130进行子程序之间调用关系切换及函数指针切换的效率。
根据本发明的一个实施例,实时任务单元130进一步配置成:在指令接口函数运行的过程中,调用预定义的系统服务接口,基于层次变量名获取变量地址信息,基于变量类型进行指针地址转换和数据读写操作。
根据本发明的一个实施例,非实时任务单元120进一步配置成:基于变量名、变量类型、变量地址信息上传实时变量值到编译单元110;编译单元110进一步配置成:根据所述上传的实时变量值,下发变量设置值修改命令;实时任务单元130进一步配置成:在接收到所述变量设置值修改命令后,在线修改实时变量值。
根据本发明的一个实施例,如图1所示,实时任务单元130进一步配置成:接收到可更新信号S2后,在运行控制程序的间隙完成控制程序的更新。
上述实施例通过在编译阶段对待更新的控制程序解耦,对数据文件、指令文件、配置文件分别进行处理。对于数据文件,优选地,可以根据当前运行的控制程序的数据存储区分配信息、变量存储地址信息确定待更新的控制程序中的新增变量存储地址、变量/变量组搬移地址。对于指令文件、配置文件,优选地,可以根据待更新的程序中的更新标记进行部分编译。通过控制系统的非实时任务单元下载上述编译后的文件,读取数据文件、配置文件,加载指令文件,优选地,解析变量搬移映射表,获得控制程序的各子程序之间的调用关系,子程序中的函数地址,准备工作就绪后,发送可更新信号。由实时任务单元根据读取数据文件、配置文件、加载指令文件的结果,进行函数指针切换,子程序之间调用关系的调整,运行初始化函数为新增变量设置初始运行值,根据变量搬移映射表拷贝并写入搬移变量的新存储地址,完成数据增量更新。该操作在实时任务单元运行控制程序的间隙完成,从而兼顾了控制程序的运行效率和数据的更新效率。
根据本发明的一个实施例,实时任务单元130进一步配置成:接收到可更新信号S2后,暂停运行控制程序,完成所述更新后重新启动所述控制程序。
对于在一次更新中,同时存在大批量变量/变量组地址发生搬移的数据更新,可能无法在1个周期点间隙内完成。优选地,通过非实时任务单元120在线获取各个任务等级最大运行时间和剩余间隙时间,基于编译形成的数据文件,统计需要搬移的变量数和字节数,基于实测数据进行耗时估算,并发出能否在1个周期点间隙内无扰切换的提示。当非实时任务单元120提示数据修改过多的情况下,实时任务单元130暂停实时任务若干周期,以完成1个断面数据切换的功能。
根据本发明的一个实施例,控制系统100包括可编程控制器,嵌入式处理器,计算机,移动终端上运行的虚拟控制器中的一种或多种;其中编译单元110包括组态软件,非实时任务单元120包括可编程控制器的非实时线程,实时任务单元130包括可编程控制器的实时线程。
根据本发明的一个实施例,本发明还提供一种用于上述控制系统100的数据存储区的分配方法,包括:
如图2A-图2C所示,控制系统100的数据存储区分为全局变量数据存储区、局部变量数据存储区、硬件输入输出映射数据存储区。在每个数据存储区内,按照预设长度(字节数)划分为等长的多个存储子区。将全局变量分组管理,分为一个或多个全局变量组;将用于同一个子程序(程序组织单元)的变量封装为一个结构体,即一个局部变量组。对于每一个待存储的变量组,根据该待存储的变量组所需的存储长度(存储该变量组所需的字节数),除以该预设长度加1进行分配。也即,为每一个变量组分配一个或多个所述预设长度的存储子区。如图2A所示,全局变量数据存储区总字节数为M1,划分为N1个存储子区,每个存储子区的字节数为K1字节(M1/N1=K1)。设全局变量组1所需存储长度为L1,若L1<K1,则分配一个存储子区给全局变量组1,保留空余的(K1-L1)个字节备用;若L1>K1,则取[L1/K1]+1个存储子区分配给全局变量组1,优选地,该[L1/K1]+1个存储子区相连。如图2A中所示,分配一个存储子区给全局变量组1,空余的(K1-L1)个字节置空闲标志;全局变量组2所需存储长度为L2,L2<K1,分配一个存储子区给全局变量组2,空余的(K1-L2)个字节置空闲标志;全局变量组3所需存储长度为L3,K1<L3<2K1,分配两个存储子区给全局变量组3,空余的(2K1-L3)个字节置空闲标志。全局变量组1、2和3对应的存储子区尾部均有空余的字节数,置空闲标志,以备该全局变量组进行更新(扩容、增加变量)时使用。按各个全局变量组所需的长度分配存储子区,将分配后的各个存储子区依次排列,对于全局变量数据存储区尾部空余的一个或多个存储子区,置空闲标志(如图2A中所示的空闲存储子区)。
如图2B所示,局部变量数据存储区对应存储每一个子程序(程序组织单元)使用的局部变量组,局部变量数据存储区的总字节数为M2,划分为N2个存储子区,每个存储子区的字节数为K2(M2/N2=K2),设POUA变量组(对应子程序POUA的变量组)所需存储长度为LA,若LA<K2,则分配一个存储子区给POUA变量组,保留空余的(K2-LA)个字节备用;若LA>K2,则取[LA/K2]+1个存储子区分配给POUA变量组,优选地,该[LA/K2]+1个存储子区相连。如图2B中所示,分配一个存储子区给POUA变量组,空余的(K2-LA)个字节置空闲标志;POUB变量组所需存储长度为LB,K2<LB<2K2,分配两个存储子区给POUB变量组,空余的(2K2-LB)个字节置空闲标志;POUC变量组所需存储长度为LC,LC<K2,分配一个存储子区给POUC变量组,空余的(K2-LC)个字节置空闲标志。局部变量组POUA、POUB和POUC对应的存储子区尾部均有空余的字节,置空闲标志,以备该局部变量组进行更新时使用。按各个局部变量组所需的长度分配存储子区,将分配后的各个存储子区依次排列,对于局部变量数据存储区尾部空余的一个或多个存储子区,置空闲标志(如图中所示的空闲存储子区)。
如图2C所示,对于硬件输入输出映射数据存储区,按照预设长度(字节数)划分存储子区,分别存储开入插件变量、开出插件变量,优选地,按照插件槽号升序依次排列。
通过上述实施例所提供的方法,为各个变量组分配存储子区,对于每一个变量组内部,各个变量按照声明顺序和变量类型紧凑排列。如图4A所示,int类型的变量a、变量b字长为4,double类型的变量c、变量d字长为8,数组类型的变量arr1、变量arr2字长分别为10、20,则为int类型的变量a、变量b分配4字节的存储长度,为double类型的变量c、变量d分配8字节的存储长度,为数组类型的变量arr1分配10字节的存储长度,为数组类型的变量arr2分配20字节的存储长度,各变量按照声明顺序紧凑排列。也即,根据变量组内部一个或多个变量所需的存储长度(字节数)确定为该变量组分配的存储子区个数,在分配的一个或多个存储子区内,该一个或多个变量按照变量声明顺序依次紧凑排列,未存储变量的地址处置空闲标志。
本发明所提供的数据存储区的分配方法,在变量组内部实现了紧凑布局,节省了存储空间;在各个数据存储区内,对变量采用分组管理的方式,为每一个变量组分配一个或多个存储子区,已分配的存储子区依次排列,首地址对齐,通过变量组的首地址、变量相对偏移地址可以寻找锁定变量的存储地址,提高了读取和写入的效率。本发明所提供的控制系统100,采用上述数据存储区的分配方法,在数据文件需要更新时,采用最小搬移代价的策略,将需要搬移的变量搬移到具有空闲标志的存储地址,并尽可能地不改变变量在变量组内的相对偏移地址,大大提高了数据更新的效率。下面进行详细介绍。
如图3所示,在控制程序的数据文件更新时,当更新内容包括一个或多个变量组扩容,例如:变量组内新增变量、变量组内的数组类型变量的维数增加、结构体的总长度伸长等,导致变量组所需的存储长度(字节数)超出原先分配的一个或多个存储子区的长度时,对该扩容的变量组进行整体搬移。如图3所示,全局变量组1的原存储长度为L1(L1<K1,K1为全局变量数据存储区中划分的多个预设长度存储子区的长度),更新后,全局变量组1所需的存储长度为L1'(L1'>K1)。由于在分配存储子区时,依据各存储子区首地址对齐、紧密排列的原则,该数据存储区的空闲存储子区(具有空闲标志的一个或多个预设长度的存储子区),均处于该数据存储区的尾部,故将全局变量组1整体搬移到全局变量数据存储区的尾部。将全局变量组1整体搬移到全局变量数据存储区尾部的空闲存储子区,为更新后的全局变量组1分配两个预设长度的存储子区(L1'<2K1),两个存储子区尾部空余的地址处置空闲标志。
在多次进行数据更新后,具有空闲标志的存储子区也可能位于数据存储区的其他位置。当某次更新中,变量组扩容,所需存储长度超出原先为其分配的一个或多个存储子区的长度时,根据更新后变量组所需的存储长度除以所述预设长度取整加一,为更新后的变量组重新分配一个或多个存储子区。在所述数据存储区内,寻找具有空闲标志的相应的连续存储子区,将更新后的变量组存储于所述连续存储子区。
对于该变量组整体搬移的情况,变量搬移映射表记录变量组的首地址搬移的内存长度,变量组内的各个变量的存储地址相对于变量组首地址的相对偏移地址不变,搬移变量组的原存储子区置空闲标志。
在控制程序的数据文件更新时,当更新内容包括一个或多个变量组减容,变量组所需的存储长度(字节数)减少,例如,删除部分变量、数组类型变量维数减少、结构体的总长度缩短等导致变量组所需存储长度减少,在删除变量或尾部缩减的区域置空闲标志,无需搬移变量组或变量组内部的变量。
在控制程序的数据文件更新时,当更新内容包括新增一个或多个变量组,按照上文中所述的数据存储区的分配方法,为新增变量组分配一个或多个存储子区,在所述数据存储区内,寻找具有空闲标志的连续存储子区,将所述新增变量组存储于所述连续存储子区;在为所述新增变量组分配的连续存储子区内,未存储变量的地址处置空闲标志。
在控制程序的数据文件更新时,当更新内容包括删除一个或多个变量组,将该变量组所在的存储子区置空闲标志,不改变其他变量组的存储地址。
如图4A-图4C所示,当变量组内新增变量、删除部分变量,变量组内的数组类型变量维数增加或减少,结构体的总长度伸长或缩短时,按照尽可能地不改变变量存储地址的原则,优先在变量组所在的存储子区内寻找具有空闲标志的地址存储变量。如图4A所示,int类型的变量a、变量b分配4字节的存储长度,double类型的变量c、变量d分配8字节的存储长度,数组类型的变量arr1分配10字节的存储长度,数组类型的变量arr2分配20字节的存储长度,各变量依次紧凑排列,未存储变量的地址处置空闲标志。变量声明代码如下文所示:
int a;//4字节变量
int b;
double c;//8字节变量
double d;
char arr1[10];//char型数组,长度10
char arr2[20];
变量a、b、c、d、arr1、arr2相对偏移地址为0、4、8、16、24、34。
如图4B所示,本次更新中,删除int类型的变量b,数组类型的变量arr1减少2字节,则将变量b的原存储地址置空闲标志,变量arr1元存储地址的尾部2字节置空闲标志,其他变量的存储地址不变。如图4C所示,本次更新中,新增int类型的变量e、short类型的变量f,变量e所需存储长度(字节数)为4字节,变量f所需存储长度为2字节。按照变量声明顺序,首先在变量组所在的存储子区内寻找连续的4字节具有空闲标志的地址,则将变量e存储在变量b的原存储地址,然后再在变量组所在存储子区寻找连续的2字节具有空闲标志的地址,则将变量f存储在变量arr1尾部缩减的2字节处。本次更新的变量声明代码如下文所示:
int a;
double c;
double d;
int e;
char arr1[8];
char arr2[22];
short f;
在控制程序的数据文件更新时,当更新内容包括变量组中的一个或多个变量被删除,在被删除变量的存储地址处置空闲标志。
在控制程序的数据文件更新时,当更新内容包括变量组内部新增一个或多个变量时,根据新增变量的变量声明顺序和所需的存储长度,在该变量组所在的存储子区内寻找具有空闲标志的连续的相应长度的存储地址。
在控制程序的数据文件更新时,当更新内容包括变量组内部的一个或多个变量改变存储长度(所需字节数),例如:数组类型的变量改变维度,结构体类型的变量伸长或缩短,对于长度缩短的变量,优选地从该变量存储地址的尾部缩减,将其尾部的一个或多个字节置空闲标志。对于长度伸长的变量,优选地从该变量存储地址的相邻地址处寻找具有空闲标志的连续的相应伸长长度的存储地址,若相邻地址处存在足够长度的具有空闲标志的存储地址,则将该变量的存储地址扩展到相邻地址处;若相邻地址处不存在足够长度的具有空闲标志的存储地址,则将该变量整体搬移到变量组所在存储子区尾部的具有空闲标志的区域。搬移变量的原存储地址处置空闲标志。变量搬移映射表记录变量搬移的内存长度,变量相对偏移地址变化。
在控制程序的数据文件更新时,如果因为变量组内部新增变量,和/或一个或多个变量的存储长度增加,导致变量组所在的存储子区尾部的空闲不足,即变量组所在的存储子区不足以存放更新后的变量组,则认为该变量组扩容,该变量组所需的存储长度(字节数)大于原先分配的存储子区,需要对该变量组进行整体搬移。
在控制程序的数据文件更新时,如果需要对一个或多个变量组进行整体搬移,而该一个或多个变量组所在的数据存储区尾部的空闲存储子区不足。则将所述数据存储区中具有空闲标志的地址合并到所述数据存储区的尾部,重新划分存储子区。通过变量搬移映射表记录需要前移的一个或多个变量。
根据本发明的一个实施例,上文所述的数据存储区包括全局变量数据存储区、局部变量数据存储区、输入输出映射数据存储区。
当用户选择完全编译的更新方式时,依据上述数据存储区的分配方法形成数据文件;当用户选择增量更新的更新方式时,依据上述最小搬移代价的策略,参照当前运行的控制程序的数据存储区分配信息、变量存储地址信息,形成变量搬移映射表。
根据本发明的一个实施例,如图5所示,本发明还提供一种使用如上文所述的控制系统100进行控制的方法10,包括步骤S101-S103。其中
在步骤S101中,通过编译单元110将待更新的控制程序解耦,编译生成数据文件,并发送下载请求S1。
其中,数据文件为自定义格式文件,包括数据分区信息、变量信息、变量搬移映射表。其中数据分区信息包括全局变量数据存储区、局部变量数据存储区和硬件输入输出映射数据存储区的分配区、空闲区信息。其中变量信息包括变量名、变量类型、相对偏移地址信息、默认值、保持标记属性。其中变量搬移映射表包括变量名、搬移前相对地址、搬移后相对地址、搬移内存长度。
在步骤S102中,通过非实时任务单元120在接收到下载请求S1后,下载并读取所述数据文件,并发送可更新信号S2。
在步骤S103中,通过实时任务单元130实时运行控制程序,在接收到可更新信号S2后,根据非实时任务单元120读取所述数据文件的结果,完成控制程序的更新。
根据本发明的一个实施例,所述数据文件包括变量搬移映射表,控制方法10进一步包括:
通过非实时任务单元120在接收到下载请求S1后,下载并读取所述数据文件,解析所述变量搬移映射表。
通过实时任务单元130在接收到可更新信号S2后,根据所述变量搬移映射表,读取原变量存储地址的内存值,写入新变量存储地址。
根据本发明的一个实施例,控制方法10进一步包括:
非实时任务单元120根据外部信号的触发,向编译单元110上传所述当前运行的控制程序的数据存储区分配信息、变量存储地址信息。
通过编译单元110根据当前运行的控制程序的数据存储区分配信息、变量存储地址信息和所述待更新的控制程序,形成所述变量搬移映射表。
根据本发明的一个实施例,控制方法10进一步包括:
通过编译单元110将待更新的控制程序解耦,编译生成配置文件、指令文件。
其中,配置文件为自定义格式文件,包括任务链信息、任务属性(包括任务名称、任务等级、任务周期、是否使能、关联的触发变量)、各等级任务执行的子程序(程序组织单元)名、控制器属性(控制器名称、编号、描述、通信参数和设备定值)。
其中,指令文件为控制系统100能够运行的机器码,优选地,控制系统100包括可编程控制器,指令文件的编译过程是将采用IEC61131-3标准5种语言编写的若干程序组织单元(包括程序Program、功能块Function Block、函数Function)编译为二进制文件库。
通过非实时任务单元120在接收到下载请求S1后,下载所述配置文件、指令文件,读取所述配置文件,获得任务链信息,加载所述指令文件,获得函数指针地址。
通过实时任务单元130在接收到可更新信号S2后,运行初始化函数,为新增变量赋初始值;根据所述任务链信息切换各子程序之间的调用关系;根据所述函数指针地址切换子程序的函数指针。
根据本发明的一个实施例,控制方法10进一步包括:
通过编译单元110根据所述待更新的控制程序的更新标记,生成所述指令文件、配置文件。
根据本发明的一个实施例,控制方法10进一步包括:
实时任务单元130在接收到可更新信号S2后,在运行控制程序的间隙完成所述更新。
根据本发明的一个实施例,控制方法10进一步包括:
实时任务单元130接收到可更新信号S2后,暂停运行控制程序,完成所述更新后重新启动所述控制程序。
本发明所提供的控制系统及控制方法,通过在编译阶段对待更新的控制程序解耦,对数据文件、指令文件、配置文件分别进行处理,不仅支持控制程序的整体更新,也支持数据文件、配置文件和指令文件的部分单独更新。本发明所提供的控制系统中,由非实时任务单元下载待更新的文件,准备工作就绪后,再由实时任务进行更新操作,该更新操作在运行控制程序的间隙完成,从而兼顾了控制程序的运行效率和数据的更新效率。对于数据文件,优选根据当前运行的控制程序的数据存储区分配信息、变量存储地址信息确定待更新的控制程序中的新增变量存储地址、变量/变量组搬移地址;对于指令文件、配置文件,优选根据待更新的控制程序中的更新标记进行部分编译,进一步提高了编译效率和更新效率。本发明所提供的控制系统的数据存储区,采用可扩展的划分存储子区的管理方式,采用变量紧凑分布的存储方式,在数据更新时,采用变量/变量组最小代价搬移的策略,保证了数据增量更新的快速性和程序运行的高效性。

Claims (29)

1.一种控制系统,其特征在于,包括:
编译单元,配置成将待更新的控制程序解耦,编译生成数据文件,并发送下载请求;
非实时任务单元,与所述编译单元相通信,配置成接收到所述下载请求后,下载并读取所述数据文件,并发送可更新信号;
实时任务单元,与所述非实时任务单元相通信,配置成实时运行控制程序,在接收到所述可更新信号后,根据所述非实时任务单元读取所述数据文件的结果,完成控制程序的更新。
2.如权利要求1所述的控制系统,其中所述数据文件包括变量搬移映射表,所述非实时任务单元进一步配置成:
解析所述变量搬移映射表。
3.如权利要求2所述的控制系统,其中所述实时任务单元进一步配置成:
在接收到所述可更新信号后,根据所述变量搬移映射表,读取原变量存储地址的内存值,写入新变量存储地址。
4.如权利要求2或3所述的控制系统,其中所述编译单元进一步配置成:
根据当前运行的控制程序的数据存储区分配信息、变量存储地址信息和所述待更新的控制程序,形成所述变量搬移映射表。
5.如权利要求4所述的控制系统,其中所述非实时任务单元进一步配置成:
根据外部信号的触发,向所述编译单元上传所述当前运行的控制程序的数据存储区分配信息、变量存储地址信息。
6.如权利要求1-3中任一项所述的控制系统,其中所述编译单元进一步配置成:编译生成配置文件、指令文件;
所述非实时任务单元进一步配置成:
接收到所述下载请求后,下载所述配置文件、指令文件,读取所述配置文件,获得任务链信息,加载所述指令文件,获得函数指针地址。
7.如权利要求6所述的控制系统,其中所述实时任务单元进一步配置成:
在接收到所述可更新信号后,运行初始化函数,为新增变量赋初始值;
根据所述任务链信息切换子程序之间的调用关系;
根据所述函数指针地址切换子程序的函数指针。
8.如权利要求6所述的控制系统,其中所述编译单元进一步配置成:
根据所述待更新的控制程序的更新标记,生成所述指令文件、配置文件。
9.如权利要求1-3中任一项所述的控制系统,其中所述实时任务单元进一步配置成:
接收到所述可更新信号后,在运行控制程序的间隙完成所述更新。
10.如权利要求1-3中任一项所述的控制系统,其中所述实时任务单元进一步配置成:
接收到所述可更新信号后,暂停运行控制程序,完成所述更新后重新启动所述控制程序。
11.如权利要求1-3中任一项所述的控制系统,包括可编程控制器、嵌入式处理器、计算机、移动终端上运行的虚拟控制器中的一种或多种;其中所述编译单元包括组态软件,所述非实时任务单元包括所述可编程控制器的非实时线程,所述实时任务单元包括所述可编程控制器的实时线程。
12.一种用于如权利要求1-11中任一项所述的控制系统的数据存储区的分配方法,其特征在于,包括:
按照预设长度将所述数据存储区划分为多个存储子区;
根据变量组所需的存储长度除以所述预设长度取整加一,为所述变量组分配一个或多个存储子区,并使已分配的一个或多个存储子区在所述数据存储区内依次排列;
将所述数据存储区中未分配的存储子区置空闲标志。
13.如权利要求12所述的方法,其中所述变量组包括一个或多个变量,所述方法进一步包括:
所述一个或多个变量在为所述变量组分配的一个或多个存储子区内,按照变量所需的存储长度依次排列;
在为所述变量组分配的一个或多个存储子区内,未存储变量的地址处设置空闲标志。
14.如权利要求12或13所述的方法,进一步包括:
当所述变量组中的一个或多个变量被删除,在被删除变量的存储地址处设置空闲标志;
当所述变量组中新增一个或多个变量,根据新增变量的变量声明顺序和所需存储长度,在为所述变量组分配的一个或多个存储子区内,寻找具有空闲标志的相应长度的连续地址,将所述新增变量存储于所述连续地址。
15.如权利要求12或13所述的方法,进一步包括:
当所述变量组中的一个或多个变量所需存储长度缩短,从所需存储长度缩短的变量存储地址的尾部缩短相应的长度,并将缩短的部分设置空闲标志;
当所述变量组中的一个或多个变量所需存储长度伸长,从所需存储长度伸长的变量存储地址的相邻地址处,寻找具有空闲标志的相应长度的连续地址,将伸长的部分存储于所述连续地址处;
当所述相邻地址处不足以存放所述伸长的部分时,将所述所需存储长度伸长的变量整体搬移到具有空闲标志的地址处存放;
在搬移变量的原存储地址处设置空闲标志。
16.如权利要求12或13所述的方法,进一步包括:
当所述数据存储区新增一个或多个变量组,根据新增变量组所需的存储长度除以所述预设长度取整加一,在所述数据存储区内,寻找具有空闲标志的连续存储子区,将所述新增变量组存储于所述连续存储子区;
在为所述新增变量组分配的连续存储子区内,未存储变量的地址处设置空闲标志。
17.如权利要求12或13所述的方法,进一步包括:
当所述数据存储区的一个或多个变量组被删除,将被删除变量组所在的一个或多个存储子区设置空闲标志。
18.如权利要求12或13所述的方法,进一步包括:
当所述数据存储区的一个或多个变量组所需存储长度超过为所述一个或多个变量组分配的一个或多个存储子区,根据存储长度增加的变量组所需的存储长度除以所述预设长度取整加一,为所述存储长度增加的变量组重新分配一个或多个存储子区;
在所述数据存储区内,寻找具有空闲标志的相应长度的连续存储子区,将所述所需存储长度增加的变量组存储于所述连续存储子区;
在搬移变量组的原存储子区设置空闲标志。
19.如权利要求12或13所述的方法,进一步包括:
当所述数据存储区不足以存放新增的一个或多个变量组,或所述数据存储区不足以存放搬移后的一个或多个变量组,将所述数据存储区中具有空闲标志的地址合并,并重新划分存储子区。
20.如权利要求12或13所述的方法,其中所述数据存储区包括全局变量数据存储区、局部变量数据存储区、输入输出映射数据存储区;所述变量组包括将一个或多个变量封装组成的结构体。
21.一种使用如权利要求1-11中任一项所述的控制系统进行控制的方法,其特征在于,包括:
通过所述编译单元将待更新的控制程序解耦,编译生成数据文件,并发送下载请求;
通过所述非实时任务单元在接收到所述下载请求后,下载并读取所述数据文件,并发送可更新信号;
通过所述实时任务单元实时运行控制程序,在接收到所述可更新信号后,根据所述非实时任务单元读取所述数据文件的结果,完成控制程序的更新。
22.如权利要求21所述的方法,所述数据文件包括变量搬移映射表,所述方法进一步包括:
通过所述非实时任务单元解析所述变量搬移映射表。
23.如权利要求22所述的方法,进一步包括:
通过所述实时任务单元在接收到所述可更新信号后,根据所述变量搬移映射表,读取原变量存储地址的内存值,写入新变量存储地址。
24.如权利要求22或23所述的方法,进一步包括:
通过所述编译单元根据当前运行的控制程序的数据存储区分配信息、变量存储地址信息和所述待更新的控制程序,形成所述变量搬移映射表。
25.如权利要求24所述的方法,进一步包括:
所述非实时任务单元根据外部信号的触发,向所述编译单元上传所述当前运行的控制程序的数据存储区分配信息、变量存储地址信息。
26.如权利要求21-23中任一项所述的方法,进一步包括:
通过所述编译单元编译生成配置文件、指令文件;
通过所述非实时任务单元在接收到所述下载请求后,下载所述配置文件、指令文件,读取所述配置文件,获得任务链信息,加载所述指令文件,获得函数指针地址。
27.如权利要求26所述的方法,进一步包括:
通过所述实时任务单元在接收到所述可更新信号后,运行初始化函数,为新增变量赋初始值;根据所述任务链信息切换子程序之间的调用关系;根据所述函数指针地址切换子程序的函数指针。
28.如权利要求26所述的方法,进一步包括:
通过所述编译单元根据所述待更新的控制程序的更新标记,生成所述指令文件、配置文件。
29.如权利要求21-23中任一项所述的方法,进一步包括:
所述实时任务单元在接收到所述可更新信号后,在运行控制程序的间隙完成所述更新。
CN202210273043.1A 2022-03-18 2022-03-18 控制系统、控制方法及数据存储区的分配方法 Pending CN114675857A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210273043.1A CN114675857A (zh) 2022-03-18 2022-03-18 控制系统、控制方法及数据存储区的分配方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210273043.1A CN114675857A (zh) 2022-03-18 2022-03-18 控制系统、控制方法及数据存储区的分配方法

Publications (1)

Publication Number Publication Date
CN114675857A true CN114675857A (zh) 2022-06-28

Family

ID=82074271

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210273043.1A Pending CN114675857A (zh) 2022-03-18 2022-03-18 控制系统、控制方法及数据存储区的分配方法

Country Status (1)

Country Link
CN (1) CN114675857A (zh)

Similar Documents

Publication Publication Date Title
US6202205B1 (en) System and method for profile-based, on-the-fly optimization of library code
KR19980703329A (ko) 실시간 데이터 이송 시스템 및 스파스 파일을 적용하기 위한방법
CN108897547B (zh) 一种软件自动化部署方法及装置
CN111309335B (zh) 插件应用的编译方法、装置及计算机可读存储介质
CN111176717A (zh) 生成安装包的方法、装置及电子设备
CN113110853A (zh) 一种组态数据在线下载方法、装置及电子设备
CN111142466A (zh) 工程装置、工程装置的控制方法和存储介质
CN114675857A (zh) 控制系统、控制方法及数据存储区的分配方法
US9003354B2 (en) Optimizing memory usage and system performance in a file system requiring entire blocks to be erased for rewriting data
JP2015125713A (ja) プログラマブルコントローラ・システム、その支援装置、プログラマブルコントローラ、プログラム
CN110806891A (zh) 嵌入式设备软件版本的生成方法及装置
JP6119452B2 (ja) プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ、プログラム
CN112035380B (zh) 一种数据处理方法、装置、设备及可读存储介质
JP2004234634A (ja) コンパイラプログラム、コンパイラプログラムを記録したコンピュータ読み取り可能な記録媒体、コンパイル方法及びコンパイル装置
CN114661291A (zh) 控制系统及控制方法
JP6506050B2 (ja) 端末電子機器
JP6628951B1 (ja) プログラム作成支援装置、プログラム作成支援方法およびプログラム
CN111124396B (zh) 网站数据处理方法和装置
CN117806257A (zh) 一种dcs控制器增量无扰下装方法及装置
JPH10187468A (ja) 並列分散処理システムおよびその方法
JP4164819B2 (ja) ミキサ構成編集装置
JP4164820B2 (ja) ディジタルミキサシステム、ミキサ構成作成編集装置、およびミキサ制御プログラム
CN117827270A (zh) 一种前端脚本加载方法、装置、设备及介质
KR20000003162A (ko) 효율적인 플래시 메모리 운용 방법
CN115840569A (zh) 一种组态增量下装方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination