CN113934409A - 一种编程方法、装置及计算机可读存储介质 - Google Patents

一种编程方法、装置及计算机可读存储介质 Download PDF

Info

Publication number
CN113934409A
CN113934409A CN202111203240.8A CN202111203240A CN113934409A CN 113934409 A CN113934409 A CN 113934409A CN 202111203240 A CN202111203240 A CN 202111203240A CN 113934409 A CN113934409 A CN 113934409A
Authority
CN
China
Prior art keywords
parallel
unit
units
subunit
target program
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.)
Granted
Application number
CN202111203240.8A
Other languages
English (en)
Other versions
CN113934409B (zh
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.)
Shenzhen Aoruitu Technology Co ltd
Original Assignee
Shenzhen Aoruitu Technology 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 Shenzhen Aoruitu Technology Co ltd filed Critical Shenzhen Aoruitu Technology Co ltd
Priority to CN202111203240.8A priority Critical patent/CN113934409B/zh
Publication of CN113934409A publication Critical patent/CN113934409A/zh
Application granted granted Critical
Publication of CN113934409B publication Critical patent/CN113934409B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/37Compiler construction; Parser generation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Programmable Controllers (AREA)

Abstract

本发明公开了一种编程方法、装置及计算机可读存储介质,其中,上述编程方法包括:获取编辑指令,其中,上述编辑指令包括通过对话窗体获得的指令;基于上述编辑指令构建变量、顺序子单元以及并行单元,其中,上述顺序子单元是上述并行单元的子单元,上述并行单元是包括至少一个顺序子单元的容器,上述顺序子单元是包括至少一条操作指令或至少一个执行条件的容器;基于上述变量、上述并行单元以及上述顺序子单元构建目标程序;执行与上述目标程序对应的功能进程。与现有技术相比,本发明方案直接通过对话窗体获得编辑指令,基于编辑指令直接构建对应的变量、顺序子单元以及并行单元并构建目标程序,有利于降低编程的难度,实现方便简单地编程。

Description

一种编程方法、装置及计算机可读存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及的是一种编程方法、装置及计算机可读存储介质。
背景技术
随着科学技术的发展,编程受到越来越多的关注和发展。现有技术中,有多种编程语言,且编程的方法通常是在对应的编程环境中通过键盘输入的文本字符串构成对应编程语言的代码,从而将代码进行编译并实现编程。
现有技术的问题在于,通过键盘输入的文本字符串构成对应编程语言的代码时有严格的句法语法规范,编程难度高,对编程人员的要求高,且编程语言难以理解,编程人员需要经过专门的学习、培训和训练才能正确编程。因此现有的编程方法不利于降低编程的难度,且使得普通用户不能方便简单地进行编程。
因此,现有技术还有待改进和发展。
发明内容
本发明的主要目的在于提供一种编程方法、装置及计算机可读存储介质,旨在解决现有技术中通过键盘输入的文本字符串构成对应编程语言的代码时有严格的句法语法规范,编程难度高,对编程人员的要求高,不利于降低编程的难度,且使得普通用户不能方便简单地进行编程的问题。
为了实现上述目的,本发明第一方面提供一种编程方法,其中,上述方法包括:
获取编辑指令,其中,上述编辑指令包括通过对话窗体获得的指令;
基于上述编辑指令构建变量、顺序子单元以及并行单元,其中,上述顺序子单元是上述并行单元的子单元,上述并行单元是包括至少一个顺序子单元的容器,上述顺序子单元是包括至少一条操作指令或至少一个执行条件的容器;
基于上述变量、上述并行单元以及上述顺序子单元构建目标程序;
执行与上述目标程序对应的功能进程。
可选的,上述变量、上述并行单元以及上述顺序子单元通过图形、列表、树型节点或文字代码的方式显示。
可选的,上述获取编辑指令,包括:
响应于按钮点击指令、快捷键操作指令和菜单操作指令中的至少一种,创建对话窗体;
基于上述对话窗体获取编辑指令。
可选的,上述基于上述编辑指令构建变量、顺序子单元以及并行单元,包括:
基于上述编辑指令分别设置各变量、顺序子单元以及并行单元的参数和/或属性,并生成对应的变量、顺序子单元以及并行单元。
可选的,上述基于上述变量、上述并行单元以及上述顺序子单元构建目标程序,包括:
基于设置好参数和/或属性的变量、并行单元以及顺序子单元构建目标程序,其中,上述目标程序中包括多个变量和多个并行单元,每个上述并行单元中包括多个按次序执行的顺序子单元,每个上述变量用于保存和/或传递信息。
可选的,上述顺序子单元的参数包括条件参数,上述条件参数用于限定上述顺序子单元中各上述操作指令的执行条件;每个上述顺序子单元包括至少一个出口,上述出口对应指定下一个进入执行状态的顺序子单元。
可选的,上述并行单元的属性包括状态属性和运行时机属性,上述状态属性用于指示上述并行单元的运行状态,上述运行时机属性用于指示上述并行单元的运行时机,上述方法还包括:
基于所有上述并行单元的运行时机属性将所有上述并行单元划分为上电初始化并行单元、开始并行单元、工作并行单元、停止并行单元以及监控并行单元,其中,上述上电初始化并行单元在上述目标程序被装载或被读入内存时执行,上述开始并行单元在上述目标程序被启动时执行,上述工作并行单元在上述目标程序工作时执行,上述停止并行单元在上述目标程序被停止时执行,上述监控并行单元用于监控并处理异常情况。
可选的,上述执行与上述目标程序对应的功能进程,包括以下步骤:
响应于程序初始化指令,将上述目标程序装载或读入内存中,对各上述并行单元进行初始化;
当上述目标程序中存在上电初始化并行单元时,将上述上电初始化并行单元的状态属性设置为运行态并调度运行,运行完成后进入下一步;
响应于程序启动指令,启动上述目标程序,将上述目标程序中的监控并行单元的状态属性设置为运行态,使上述监控并行单元参与调度运行后,如果上述目标程序中存在开始并行单元,将上述开始并行单元的状态属性设置为运行态并调度运行,运行完成后进入下一步,如果上述目标程序中不存在开始并行单元则直接进入下一步;
将上述目标程序中的所有工作并行单元的状态属性设置为运行态后进入下一步;
调度所有处于运行态的工作并行单元和监控并行单元运行,在不存在处于运行态的工作并行单元时直接进入下一步,当上述目标程序被停止时,若上述目标程序中不存在停止并行单元,则直接进入下一步,反之若所目标程序中存在停止并行单元,则把上述停止并行单元的状态属性设置为运行态并调度运行,运行完成后进入下一步;
停止上述监控并行单元的运行并终止上述目标程序的运行。
本发明第二方面提供一种编程装置,其中,上述装置包括:
编辑指令获取模块,用于获取编辑指令,其中,上述编辑指令包括通过对话窗体获得的指令;
编辑指令处理模块,用于基于上述编辑指令构建变量、顺序子单元以及并行单元,其中,上述顺序子单元是上述并行单元的子单元,上述并行单元是包括至少一个顺序子单元的容器,上述顺序子单元是包括至少一条操作指令或至少一个执行条件的容器;
目标程序构建模块,用于基于上述变量、上述并行单元以及上述顺序子单元构建目标程序;
功能进程执行模块,用于执行与上述目标程序对应的功能进程。
本发明第三方面提供一种计算机可读存储介质,上述计算机可读存储介质上存储有编程程序,上述编程程序被处理器执行时实现任意一项上述编程方法的步骤。
由上可见,本发明方案中,获取编辑指令,其中,上述编辑指令包括通过对话窗体获得的指令;基于上述编辑指令构建变量、顺序子单元以及并行单元,其中,上述顺序子单元是上述并行单元的子单元,上述并行单元是包括至少一个顺序子单元的容器,上述顺序子单元是包括至少一条操作指令或至少一个执行条件的容器;基于上述变量、上述并行单元以及上述顺序子单元构建目标程序;执行与上述目标程序对应的功能进程。与现有技术中只能通过键盘输入的文本字符串构成对应编程语言的代码从而实现编程的方案相比,本发明方案中,可以直接通过对话窗体获得编辑指令,从而基于编辑指令直接构建对应的变量、顺序子单元以及并行单元并构建目标程序,使得编程人员无需掌握复杂难度的编程语言,无需考虑严格的句法和语法规范即可快速简单地进行编程。有利于降低编程的难度,实现方便简单地编程。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1是本发明实施例提供的一种编程方法的流程示意图;
图2是本发明实施例图1中步骤S100的具体流程示意图;
图3是本发明实施例提供的一种目标程序的组成原理示意图;
图4是本发明实施例提供的一种顺序子单元的组成原理示意图;
图5是本发明实施例提供的一种顺序子单元执行的具体流程示意图;
图6是本发明实施例提供的一种并行单元的组成原理示意图;
图7是本发明实施例提供的一种目标程序的总体运行流程图;
图8是本发明实施例提供的一种选择分支控制的流程示意图;
图9是本发明实施例提供的一种组合逻辑实现流程示意图;
图10是本发明实施例提供的另一种组合逻辑实现流程示意图;
图11是本发明实施例提供的一种循环重复控制实现流程示意图;
图12是本发明实施例提供的一种编程装置的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况下,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当…时”或“一旦”或“响应于确定”或“响应于检测到”。类似的,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述的条件或事件]”或“响应于检测到[所描述条件或事件]”。
下面结合本发明实施例的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其它不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施例的限制。
随着科学技术的发展,编程受到越来越多的关注和发展。现有技术中,有多种编程语言,且编程的方法通常是在对应的编程环境中通过键盘输入的文本字符串构成对应编程语言的代码,从而将代码进行编译并实现编程。而一些专门应用领域有使用图形元素绘制及输入文字的形式来完成编程,比较典型的,在工业控制领域,很多可编程逻辑元器件有使用图形元素绘制及输入文字的形式来完成编程,如各种PLC等。
以控制软件为例,目前,控制软件所控制和监控的元素和部件是各式各样的,例如,可能包括:各种马达、步进电机、伺服电机、直线电机等电机类设备;各种气阀气缸、流体阀、电磁铁等开关器件;电场、磁场等各种场;电压信号、电流信号、声音信号、光信号等各种信号;以及其它各类新出现的元器件。以上这些元素或部件对于控制系统来说,是通过相应的驱动电路或者传感器来进行控制的,每个应用场合对于各种元素和部件的控制功能或者控制序列是不一样的,控制软件就需要向使用者提供一个编程环境或平台,以便其可以根据实际的需求编制出其相应的控制功能或者控制序列,使系统、机器或者器件器具实现其功能。
目前,控制软件提供的编程方法或模式主要包括键盘输入文本构成高级编程语言对应的源代码的方法。键盘输入文本的方法在通用的运动控制卡、可编程控制器件(PLC,Programmable Logic Controller)等的控制编程中得到广泛使用,这种方法是使用C语言、Basic语言或者类似C语言、Basic语言的编程语言进行编程,具体的控制操作通过调用驱动程序、写变量、写网络端口或写寄存器来实现;流程控制和序列例如顺序控制、循环控制、选择控制等等由这一类编程语言的顺序语句、循环语句、选择语句来编制实现;对于并行性控制,这类方法一般使用多线程、信号量、全局变量等等完成并行性控制。这种方法通过键入文本字符串完成编程,有严格的句法语法规范,有严格语法的选择语句和循环语句,这种方法对于并行控制的实现较为复杂,C语言、Basic语言等等高级语言是针对中央处理器而发展起来的,对于并行控制来说,不太方便;且对编程人员的要求比较高,需要经过专门的学习、培训和训练才能正确编程,对编程人员有较高的技术水准要求。因此,现有技术的问题在于,通过键盘输入的文本字符串构成对应编程语言的代码时有严格的句法语法规范,编程难度高,对编程人员的要求高,且编程语言难以理解,编程人员需要经过专门的学习、培训和训练才能正确编程。因此现有的编程方法不利于降低编程的难度,且使得普通用户不能方便简单地进行编程。
另外,PLC也可能使用图形法(如梯形图法),这类方法就是把各类控制动作及其条件用图形列出,然后使用周期扫描的方法,对图形节点进行判别,当条件满足就执行控制动作,不满足就不执行,接着判断下一个节点,直到扫描完所有的图形节点之后,完成本次扫描,然后等待下一次扫描。这种图形法是使用周期扫描的方法对各行条件进行判别,然后执行或不执行,这些控制逻辑具有并行性,对于并行控制的描述、编制和实现比较方便,但其顺序控制、选择控制和循环控制是由各种条件、变量、状态值等进行互锁并由周期扫描一步一步推动来完成的,这种编程图形编程的方法的顺序控制、选择控制和循环控制的条理性不清晰,不太容易弄清楚运行次序,要根据各个条件假设向后推导;且这种编程方法也需要经过专门的学习、培训和训练才能正确编制正确的控制逻辑,编程人员往往需要一定的经验才能编制出稳定可靠的程序。因此,这种使用图形进行编程的方法也不利于降低编程的难度。
为了解决现有技术的问题,本发明方案中,获取编辑指令,其中,上述编辑指令包括通过对话窗体获得的指令;基于上述编辑指令构建变量、顺序子单元以及并行单元,其中,上述顺序子单元是上述并行单元的子单元,上述并行单元是包括至少一个顺序子单元的容器,上述顺序子单元是包括至少一条操作指令或至少一个执行条件的容器;基于上述变量、上述并行单元以及上述顺序子单元构建目标程序;执行与上述目标程序对应的功能进程。与现有技术中只能通过键盘输入的文本字符串构成对应编程语言的代码从而实现编程的方案相比,本发明方案中,可以直接通过对话窗体获得编辑指令,从而基于编辑指令直接构建对应的变量、顺序子单元以及并行单元并构建目标程序,使得编程人员无需掌握复杂难度的编程语言,无需考虑严格的句法和语法规范即可快速简单地进行编程。有利于降低编程的难度,实现方便简单地编程。
示例性方法
如图1所示,本发明实施例提供一种编程方法,具体的,上述方法包括如下步骤:
步骤S100,获取编辑指令,其中,上述编辑指令包括通过对话窗体获得的指令。
具体的,上述编辑指令是用户通过操作对话窗体输入的指令,用于构建(和组装)程序所需的变量、并行单元和顺序子单元。在一种应用场景中,上述编辑指令可以是用户通过点击对话窗体中的按键、拖拽对话窗体中的模块等方式输入的指令。本实施例中,用户可以直接通过与对话窗体的交互向用于编程的设备(例如计算机设备)输入对应的编辑指令,进而使得用于编程的设备可以基于编辑指令进行处理最终构建目标程序,使得用户无需输入复杂的文本字符串,无需理解和考虑复杂的语法和句法,可以降低编程难度。
步骤S200,基于上述编辑指令构建变量、顺序子单元以及并行单元,其中,上述顺序子单元是上述并行单元的子单元,上述并行单元是包括至少一个顺序子单元的容器,上述顺序子单元是包括至少一条操作指令或至少一个执行条件的容器。
其中,容器就是能运行的一个(或一组)组件,以及它必需的运行环境。上述顺序子单元中包括的操作指令具体可以为工作指令、工作计算和/或控制动作。
具体的,根据通过对话窗体获得的编辑指令,可以直接构建变量、顺序子单元以及并行单元。在一种应用场景中,用户需要构建某个变量时,可以直接通过点击或拖拽的方式将预先设置的变量拖入到对应位置,并设置其初始参数值等。在另一种应用场景中,用户还可以通过点击或拖拽的方式构建顺序子单元并设置其属性、参数等,然后通过拖拽等方式将顺序子单元组合成并行单元。其中,上述变量用于保存数据、保存状态、在各个单元(包括顺序子单元和并行单元)中共享或者传递信息等。
上述顺序子单元是包括至少一条操作指令或至少一个执行条件的容器,执行条件可以用于判断下一步执行何种操作(执行本顺序子单元中的操作指令或直接转向下一个顺序子单元),也可以用于实现阻塞功能。在一个实施例中,执行条件是一个(或多个)用于判断的条件,在条件不成立(或成立)时可以阻止程序的进行下一步操作,从而实现阻塞功能。在一种应用场景中,当顺序子单元中包括一条或多条操作指令时,该顺序子单元用于执行对应的操作指令。在另一种应用场景中,顺序子单元只用于实现阻塞功能,例如,只包含一个用于判断的执行条件,条件不满足就不向后执行,当满足时就向后执行(执行下一个顺序子单元),从而实现阻塞功能。具体的,执行条件可以包括针对整个顺序子单元的执行条件(即顺序子单元对应的执行条件)和针对顺序子单元中的操作指令的执行条件(即操作指令对应的执行条件),本实施例中,以顺序子单元同时包括操作指令和操作指令对应的执行条件为例进行说明,顺序子单元中操作指令对应的执行条件用于限定该顺序子单元中的操作指令是否执行,在此不作具体限定。
步骤S300,基于上述变量、上述并行单元以及上述顺序子单元构建目标程序。
具体的,可以从编辑指令中获取组装上述变量、上述并行单元以及上述顺序子单元的顺序,从而获得目标程序;也可以根据获得的编辑指令和预先设置的组合顺序对上述变量、上述并行单元以及上述顺序子单元进行组合;还可以有其它构建目标程序的方式,在此不作具体限定。其中,上述目标程序是需要通过编程获得的用于实现用户想实现的具体功能的程序。
步骤S400,执行与上述目标程序对应的功能进程。
本实施例中,一个完整的目标程序中包含任意数量的变量、并行单元和顺序子单元,各个并行单元之间是通过持续运行或者周期扫描等方法实现并行执行的,顺序子单元是并行单元的子单元,一个并行单元可以包含任意数量的顺序子单元,并行单元内部的顺序子单元是按一定的次序或者序列运行的,顺序子单元的运行顺序可以是预先设定的(例如预先设定按创建顺序运行)或通过编辑指令指定的。通过按照对应的顺序执行目标程序中的并行单元和顺序子单元对应的功能进程,可以实现目标程序对应的功能。
由上可见,本发明实施例提供的编程方法中,获取编辑指令,其中,上述编辑指令包括通过对话窗体获得的指令;基于上述编辑指令构建变量、顺序子单元以及并行单元,其中,上述顺序子单元是上述并行单元的子单元,上述并行单元是包括至少一个顺序子单元的容器,上述顺序子单元是包括至少一条操作指令或至少一个执行条件的容器;基于上述变量、上述并行单元以及上述顺序子单元构建目标程序;执行与上述目标程序对应的功能进程。与现有技术中只能通过键盘输入的文本字符串构成对应编程语言的代码从而实现编程的方案相比,本发明方案中,可以直接通过对话窗体获得编辑指令,从而基于编辑指令直接构建对应的变量、顺序子单元以及并行单元并构建目标程序,使得编程人员无需掌握复杂难度的编程语言,无需考虑严格的句法和语法规范即可快速简单地进行编程。有利于降低编程的难度,实现方便简单地编程。
本实施例中,上述变量、上述并行单元以及上述顺序子单元通过图形、列表、树型节点或文字代码的方式显示。具体的,本实施例中的变量、并行单元、顺序子单元可以用对话窗体的方式方便地创建、修改和删除,可以使用图形或列表、树型节点、文字代码等方式来显示,也就是说本实施例中提供的编程方法可以使用图形、列表、树型结构和对话窗体来编制可以实现并行运行、顺序进行、选择分支和循环重复等流程控制的程序,这能方便地实现各种流程的控制,大大降低编程的难度,且能方便用户及时查看和理解编制好的程序。同时,对于一些专业编程人员,也可以为其提供文字代码显示和编辑的方式,方便其使用。进一步的,还可以实现在程序文档中查找图形、列表、树型节点和具体文字代码,可以方便地定位修改。
具体的,如图2所示,本实施例中,上述步骤S100具体包括如下步骤:
步骤S101,响应于按钮点击指令、快捷键操作指令和菜单操作指令中的至少一种,创建对话窗体。
步骤S102,基于上述对话窗体获取编辑指令。
其中,上述按钮点击指令、快捷键操作指令和菜单操作指令是用于编程的设备(即执行上述编程方法的设备)获取的用于触发创建编程用的对话窗体的指令,可以基于预设的按钮、快捷键或菜单获得。创建对话窗体后,用户只需要与对话窗体进行点击、拖拽、必要的参数输入等交互操作,用于编程的设备即可以根据对应的交互操作获得编辑指令,从而实现编程。有利于降低编程难度,且使得编程更方便,降低对用户的技术要求。
具体的,上述基于上述编辑指令构建变量、顺序子单元以及并行单元,包括:基于上述编辑指令分别设置各变量、顺序子单元以及并行单元的参数和/或属性,并生成对应的变量、顺序子单元以及并行单元。
其中,上述参数和/或上述属性是各变量、顺序子单元以及并行单元对应需要设置的具体参数(例如,变量的初始值、顺序子单元中操作指令的执行条件等)和属性(例如运行时机属性等),具体需要设置的参数和属性可以预先设定,也可以通过获取的编辑指令中的相关信息确定,在此不作具体限定。
具体的,本实施例中,上述基于上述变量、上述并行单元以及上述顺序子单元构建目标程序,包括:基于设置好参数和/或属性的变量、并行单元以及顺序子单元构建目标程序,其中,上述目标程序中包括多个变量和多个并行单元,每个上述并行单元中包括多个按次序执行的顺序子单元,每个上述变量用于保存和/或传递信息。
其中,上述变量的参数可以是变量的初始数值、最大值等数值参数,上述变量的属性可以包括范围属性,例如,若变量的范围属性为全局,则该变量为全局变量,若变量的范围属性为局部,则该变量为局部变量(如只在对应的顺序子单元中使用该变量),具体的变量参数和属性可以根据实际情况进行设置和调整,在此不做具体限定。
图3是本发明实施例提供的一种目标程序的组成原理示意图,如图3所示,本实施例中,一个完整的目标程序包含任意数量(n,n不小于1,n的具体取值由实际情况以及对应的编辑指令确定)的变量、并行单元和顺序子单元。各个并行单元之间是通过持续运行或者周期扫描等方法实现并行执行的,一个并行单元可以包含任意数量的顺序子单元,并行单元内部的顺序子单元是按一定的次序(该次序可以预先设置也可以根据编辑指令确定)或者序列运行的,变量用于保存数据、保存状态、在各个单元中共享或者传递信息等等。如此,目标程序中使用变量、并行单元和顺序子单元配合来实现并行运行、顺序进行、选择分支和循环重复等控制逻辑的实现,使得编程过程中编程人员(即用户)能非常方便地编制并行运行、顺序进行、选择分支、循环重复等等流程控制程序,大大简化编程难度。
具体的,本实施例中的并行单元不同于高级编程语言中的线程、进程和任务,也不同于图形法中的并行语句,本实施例中的顺序子单元不同于高级编程语言中的语句和函数,也不同于PLC图表法的语句和条件判断;本实施例中的并行单元就是任意数量顺序子单元的容器,是并行调度处理的对象,而顺序子单元又是任意条工作指令、任意工作计算或者任意数量控制动作的容器,是顺序或依次执行的对象。高级编程语言的线程、进程和任务内包含的是一条条分散的语句或者子函数调用,而PLC图形法是使用分散的语句或图元直接对应到并行控制,对编程人员的技术要求高。本发明的使用变量、并行单元与顺序子单元配合完成控制逻辑的编程和实现的方法,显著区别于高级编程语言法和PLC的图形法,不要求编程人员理解复杂的编程语言语法和句法,可以降低编程难度。
具体的,上述顺序子单元的参数包括条件参数,上述条件参数用于限定上述顺序子单元中各上述操作指令的执行条件;每个上述顺序子单元包括至少一个出口,上述出口对应指定下一个进入执行状态的顺序子单元。
本实施例中顺序子单元是任意条操作指令(包括工作指令、工作运算和/或工作控制动作)的容器。顺序子单元内的工作指令、工作运算或工作控制动作的执行可以指定执行条件也可以不指定执行条件,本实施例中,以指定执行条件为例进行说明,但不作为具体限定。其中,上述执行条件通过上述条件参数确定,上述条件参数可以预先设定,也可以根据获得的参数设定指令进行设定,在此不做具体限定。当本顺序子单元进入运行状态时,如果指定条件了就进行条件判断,满足条件才执行本顺序子单元内的工作指令、工作运算或工作控制动作,如果没有指定条件就无条件执行。
一个顺序子单元的出口用于指示在完成该顺序子单元的工作后下一步要进行的操作,例如,当一个顺序子单元(例如顺序子单元A)的一个出口指定可下一个进入执行状态的顺序子单元(例如顺序子单元B)时,当顺序子单元A被执行完成后,顺序子单元B进入执行状态并执行。本实施例中,一个顺序子单元具有一个或以上的出口,固定有的一个出口为执行后出口。图4是本发明实施例提供的一种顺序子单元的组成原理示意图,如图4所示,本实施例中,上述顺序子单元包括两个出口,一个为执行后出口,另一个为不执行出口,执行后出口就是这个顺序子单元只有执行了工作指令、工作运算和工作控制动作之后才从这个出口出去,而不执行出口就是只有不满足执行条件时才能从这出去的出口;每个出口可以指定下一个进入执行状态的顺序子单元,也可以不指定下一个顺序子单元(表明对应的顺序操作执行完毕或可以直接按照预设的规则选择下一个顺序子单元)。在一种应用场景中,还可以为不同的工作指令、工作运算和工作控制动作设置不同的执行条件和对应的执行后出口,一个顺序子单元可以包括多个出口,在此不作具体限定。
进一步的,如图4所示,顺序子单元还可以进行初始化处理、执行前处理和执行后处理。具体的,顺序子单元可以有三个变量或寄存器的处理操作,分别是:初始化处理、执行前处理、执行后处理;初始化处理就是并行单元准备把某一个非运行位顺序子单元转变为运行位顺序子单元时立即执行这个顺序子单元内所设定的初始化处理,然后这个顺序子单元立即转变为运行位顺序子单元;执行前处理就是当准备执行本顺序子单元包含的工作指令、工作运算或工作控制动作时,先处理执行前处理所设定的变量或寄存器处理操作,执行后处理就是执行完本顺序子单元包含的工作指令、工作运算或工作控制动作后,从执行了出口出去之前,处理执行后处理所设定的变量或寄存器处理操作。其中,上述初始化处理、执行前处理和执行后处理的具体操作可预先设定,也可以根据实际需求进行调整,在此不作具体限定。其中,运行位是正在执行的位置标记,运行位顺序子单元是正在执行的顺序子单元。
可选的,上述顺序子单元还可以包括其它参数和属性,例如用于限定一个顺序子单元的执行时间的时间参数等。本实施例中,顺序子单元的属性还包括运行连贯性属性,运行连贯性属性指明此顺序子单元的执行连贯性要求。例如,如果是一般连贯性,则此顺序子单元进入运行位后,不是立即运行,而是等待本顺序子单元所在的并行单元的下一次执行、扫描或者调度的机会时再执行;如果是高连贯性,则本顺序子单元进入运行位后立即运行。
图5是本发明实施例提供的一种顺序子单元执行的具体流程示意图,具体的,如图5所示,对于一个顺序子单元(图5中的本顺序子单元),按照如下步骤执行对应的工作指令:
第一步,当本顺序子单元变成所在的并行单元的运行位顺序子单元时,如果设定了初始化处理,则立即执行初始化处理,然后变为运行位顺序子单元,然后运行下一步;
第二步,如果没有设定执行条件,则直接运行下一步;如果设定了执行条件,则判断执行条件是否满足,如果满足则运行到下一步,不满足则运行第七步;
第三步,如果设定了执行前处理,则进行执行前处理;如果没有设定,则直接运行下一步;
第四步,执行工作指令、工作运算或工作控制动作,然后运行下一步;
第五步,如果设定了执行后处理,则进行执行后处理;如果没有设定,则直接运行下一步;
第六步,执行后出口里如果设定了下一个顺序子单元,则按设定把下一个顺序子单元设为运行位顺序子单元,没有设定则按预设规则选一个顺序子单元设为运行位顺序子单元;
第七步,如果设定了不执行出口则完成本顺序子单元的运行从不执行出口脱离运行位;如果不执行出口设定了下一个顺序子单元,则按设定把下一个顺序子单元设为运行位顺序子单元,没有设定则按预设规则选一个顺序子单元设为运行位顺序子单元;如果没有设定不执行出口,则返回第二步。在一种应用场景中,如果没有设定不执行出口,还可以对变量等数据进行调整后再返回第二步,重新判断是否满足执行条件,还可以设置终止判断的条件等,以防止反复循环判断,进入死循环。
具体的,本实施例中,并行单元与顺序子单元是包含的关系,顺序子单元在并行单元中的位置是有先后次序的(例如按链表的形式链接构成链表,或者按数组的方式放置构成数组,或者按某个哈希算法来放置数据构成哈希表),这个先后次序只是顺序子单元数据的组织方法,并不决定实际的运行次序,实际的运行次序是由顺序子单元的运行控制逻辑关系确定的。
具体的,本实施例中,上述并行单元的属性包括状态属性和运行时机属性,上述状态属性用于指示上述并行单元的运行状态,上述运行时机属性用于指示上述并行单元的运行时机,上述方法还包括:基于所有上述并行单元的运行时机属性将所有上述并行单元划分为上电初始化并行单元、开始并行单元、工作并行单元、停止并行单元以及监控并行单元,其中,上述上电初始化并行单元在上述目标程序被装载或被读入内存时执行,上述开始并行单元在上述目标程序被启动时执行,上述工作并行单元在上述目标程序工作时执行,上述停止并行单元在上述目标程序被停止时执行,上述监控并行单元用于监控并处理异常情况。
图6是本发明实施例提供的一种并行单元的组成原理示意图,本实施例中的并行单元就是任意数量顺序子单元的容器,并行单元内用运行位来指明当前运行的是哪一个顺序子单元(图6中运行位指向顺序子单元1),当顺序子单元处于运行位置或者标注为运行位顺序子单元后就表示这个顺序子单元处于运行状态了(顺序子单元的具体运行流程可参照上文的具体描述)。并行单元有一个状态属性,状态属性的典型取值有空闲态、运行态和故障态;另有一个运行时机属性用于指定并行单元的运行时机。可选的,上述并行单元还可以包括其它参数和属性,例如用于限定其中包含的顺序子单元的数目的数量参数、用于指示当前该并行单元运行结果的运行结果属性等,可以根据实际需求进行设置和调整,在此不作具体限定。本实施例中,并行单元的运行时机属性的典型语义可以包括上电初始化并行、开始并行、工作并行、停止并行、监控并行等,根据上述运行时机属性的具体语义对应的运行时机可以将一个并行单元确定为上电初始化并行单元、开始并行单元、工作并行单元、停止并行单元以及监控并行单元中的一种,并实现对所有并行单元的划分,从而确定每一个并行单元的运行时机,保证程序执行的逻辑性和合理性。其中,上述上电初始化并行单元在上述目标程序被装载或被读入内存时就马上执行,上述开始并行单元在上述目标程序被启动时执行,上述工作并行单元在上述目标程序工作时执行,上述停止并行单元在上述目标程序被停止时执行,上述监控并行单元用于监控并处理异常情况。具体的,监控并行单元可以监控各种情况,处理各种异常情况,监控并行单元可以调整其它并行单元的状态属性,例如,把其它出现异常的并行单元设置成故障态,从而避免出现异常的并行单元影响程序的运行。进一步的,如果开始并行单元或者正常的工作并行单元在运行过程中如果变成故障态了,就立即停止运行。
在基于设置好参数和/或属性的变量、并行单元以及顺序子单元构建好目标程序后,执行目标程序对应的功能进程,以方便地实现用户所需要的功能。图7是本发明实施例提供的一种目标程序的总体运行流程图,如图7所示,具体的,上述执行与上述目标程序对应的功能进程,包括以下步骤:
响应于程序初始化指令,将上述目标程序装载或读入内存中,对各上述并行单元进行初始化,其中,程序初始化指令是从用户处获得的用于指示进行程序初始化的指令,可以由对话窗体获得,对应的初始化处理包括将状态位初始化为空闲态,准备好各并行单元的运行位顺序子单元等,在一种应用场景中,选择特定的顺序子单元放入运行位(例如,选择第一个顺序子单元、或者选择一个标识符为固定值的顺序子单元等);本并行单元如果进入运行态,就从运行位顺序子单元开始执行;完成上述初始化处理后,运行下一步;
当上述目标程序中存在上电初始化并行单元时,将上述上电初始化并行单元的状态属性设置为运行态并调度运行,运行完成后进入下一步;
响应于程序启动指令,启动上述目标程序,启动目标程序时,如果有监控并行单元则立即将上述目标程序中的监控并行单元的状态属性设置为运行态,使上述监控并行单元参与调度运行后,如果上述目标程序中存在开始并行单元,将上述开始并行单元的状态属性立即设置为运行态并调度运行,运行完成后进入下一步,如果上述目标程序中不存在开始并行单元则直接进入下一步;
将上述目标程序中的所有工作并行单元的状态属性设置为运行态后进入下一步;
调度所有处于运行态的工作并行单元和监控并行单元运行,在不存在处于运行态的工作并行单元时直接进入下一步,当上述目标程序被停止时,若上述目标程序中不存在停止并行单元,则直接进入下一步,反之若所目标程序中存在停止并行单元,则把上述停止并行单元的状态属性设置为运行态并调度运行,运行完成后进入下一步;
停止上述监控并行单元(即监控进程)的运行并终止上述目标程序的运行。
可选的,使用一种编程系统基于本实施例的编程方法进行编程时,系统中有并行单元、顺序子单元、各种变量或寄存器等,并行单元、顺序子单元、变量和寄存器都有名称或标识符,还有注释项,注释项不影响程序的运行,只起解释、显示、标注等等作用。
具体的,本实施例中,使用变量、并行单元和顺序子单元来编制并行运行、顺序进行、选择分支和循环重复程序,这些流程控制逻辑就由这三种元素配合完成,具体的工作内容即工作指令、控制操作是由顺序子单元包含在内的。
在本实施例中,使用构建的并行单元完成并行控制。程序的流程控制中,并行运行控制是基本的需求,一个程序实例中,可以编制任意数量的并行单元,软件周期地扫描运行这些并行单元或者持续地运行这些并行单元,软件本身有基于处理芯片的时间片轮转并行调度处理,所以编制相应数量的并行单元是可以完全实现各种并行控制需求的。进一步的,使用顺序子单元的依次地运行就能实现顺序控制需求,基于或其的编辑指令,根据顺序控制需求合理地编制顺序子单元,合理地设置顺序子单元的属性和参数使其运行次序符合实际的控制需求。
图8是本发明实施例提供的一种选择分支控制的流程示意图,对于选择分支控制,在顺序子单元中指定执行条件、指定不执行出口及其对应的下一个顺序子单元、指定执行出口及其对应的下一个顺序子单元;当控制软件运行到本顺序子单元后,判断条件,如满足条件则执行本顺序子单元包含的工作内容指令和控制动作然后从执行出口到下一个顺序子单元,如果不满足条件则立即从不执行出口到下一个顺序子单元。进一步的,图8中,处理M和处理N通过顺序子单元i的条件判断实现了分支处理,顺序子单元x和顺序子单元y可以是同一个顺序子单元也可以是不同的顺序子单元。
程序流程控制中,阻塞等待也是基本的需求,本实施例中顺序子单元中指定执行条件、只指定执行出口就可以实现了,如此设置下,顺序子单元只有满足条件并执行才能跳转到下一个顺序子单元,不满足的情况下,本顺序子单元一直处于运行位,等待下一次扫描运行,本顺序子单元不完成执行的话,后续的顺序子单元是没有运行机会的,这就实现了阻塞等待功能。
基于本申请中的顺序子单元,还可以实现组合逻辑(如与、或、非三种组合逻辑)。单个顺序子单元可以用逻辑表达式进行复杂的组合逻辑判断(任意数量的逻辑或、逻辑与的叠加组合判断),用多个顺序子单元也可以实现逻辑或的组合判断。图9是本发明实施例提供的一种组合逻辑实现流程示意图,具体的,顺序子单元可以指定运行连贯性属性为高,可以使用任意数量的这样的顺序子单元i,顺序子单元j,…,顺序子单元n等等进行连贯运行,前面顺序子单元不设置的工作指令、工作运算和工作控制操作,最后一个顺序子单元n才设置的工作指令、工作运算和工作控制操作,这些顺序子单元设置执行出口相连接,设置不执行接口时统一地设置顺序子单元w为下一个运行位顺序子单元,这样的效果就是只有满足顺序子单元i的条件,再满足顺序子单元j的条件,…,直到满足顺序子单元n的条件才执行工作指令、工作运算和工作控制操作,只要一个条件不满足顺序子单元w就变成运行位顺序子单元了,就实现了顺序子单元i,顺序子单元j,…,顺序子单元n等等的条件进行逻辑与的组合判断。需要说明的是,图9中的逻辑与的组合判断操作可以作为程序处理流程中间的一部分操作与其它操作进行结合,图9中未示出具体的上一步操作和下一步操作,可以根据实际需求进行设置和组合,在此不作具体限定。
图10是本发明实施例提供的另一种组合逻辑实现流程示意图,如图10所示,用多个顺序子单元也可以实现逻辑或的组合判断。可以使用任意数量的顺序子单元i,顺序子单元j,…,顺序子单元n等等进行连贯运行,这些顺序子单元不设置工作指令、工作运算和工作控制操作,在顺序子单元w才设置工作指令、工作运算和工作控制操作,这些顺序子单元设置不执行出口相连接,设置执行接口时统一地设置顺序子单元w为下一个运行位顺序子单元,这样的效果就是只要满足顺序子单元i的条件,或者满足顺序子单元j的条件,…,或者满足顺序子单元n的条件就会导致顺序子单元w变成运行位顺序子单元从而执行工作指令、工作运算和工作控制操作,这就实现了顺序子单元i,顺序子单元j,…,顺序子单元n等等的条件进行逻辑或的组合判断。需要说明的是,图10中的逻辑或的组合判断操作可以作为程序处理流程中间的一部分操作与其它操作进行结合,图10中未示出具体的上一步操作和下一步操作,可以根据实际需求进行设置和组合,在此不作具体限定。
图11是本发明实施例提供的一种循环重复控制实现流程示意图,如图11所示,用一个顺序子单元可以实现循环重复控制:首先,用顺序子单元的初始化操作把循环变量初始为特定值,循环变量是一个整数变量,这个初始化操作在顺序子单元变成运行位顺序子单元被执行,所以当顺序子单元处于运行位时循环变量已经被初始化好了;顺序子单元指定执行条件是循环变量满足某个判别式,指定执行出口并且执行出口中指定下一个顺序子单元是自己,并指定执行后对循环变量的操作,指定不执行出口并且不执行出口指定下一个顺序子单元是循环体顺序子单元之外的其它顺序子单元;这样设置下,循环体顺序子单元每次执行循环变量都会变化,满足条件就继续执行,不满足了就跳到其它顺序子单元了,这样就完成了循环逻辑控制。需要说明的是,图11中的循环逻辑控制操作可以作为程序处理流程中间的一部分操作与其它操作进行结合,图11中未示出具体的上一步操作和下一步操作,可以根据实际需求进行设置和组合,在此不作具体限定。
在一种应用场景中,可以设置顺序子单元指定执行前对变量或寄存器的操作,而其它顺序子单元的执行条件可以指定为对变量或寄存器的判断,这样就可以实现并行单元之间的同步和互斥。
在另一种应用场景中,可以设置顺序子单元永久等待某个条件才运行(假如是某个变量值为1)并且设置在执行前把这个条件置为不满足(例如把这个变量置为0),通过人机交互界面获得的指令可以使这个条件满足(把变个变量设为1),顺序子单元判断条件满足了就把这个条件置为不满足(把这个变量置为0)然后立即运行,这从用户角度看,系统对其在人机界面上的操作有了一次响应,于是消息响应机制就实现了。
需要说明的是,上述选择分支、逻辑组合和循环逻辑等控制都可以通过获取的编辑指令对对应的顺序子单元进行对应的设置实现。用户还可以随时输入新的编辑指令以修改各顺序子单元之间的组合关系,以改变实现的逻辑,实现更简单和快速的编程和程序修改,提升用户体验。
进一步的,为方便用户进行编程,基于本实施例的编程方法,可以为用户提供图形或列表的编程环境,本实施例中以列表和窗体的样式构建对应的编程环境。具体的,创建并行单元时,可以通过点击按钮、快捷键、菜单等等操作触发软件消息事件,从而弹出一个对话窗体,基于对话窗体内获取用户的编辑指令,从而设置好并行单元的名称或者标识符、运行时机属性、注释语句等等必设项或其它选项后,确定正确后用户就可以点击确认按钮,获取到用户点击确认按钮的指令后,生成并行单元。在编程过程中,已经创建的并行单元可以显示在列表中,列表可以显示各个并行单元的名称或标识符、运行时机属性、注释语句等等,这样编程者对各个并行单元的情况就一目了然了,在并行单元列表中选中一个并行单元后,可以通过点击按钮、快捷键、菜单等等操作触发软件消息事件,从而弹出对话窗体详细显示并行单元的属性与参数,从而可以通过用户与对话窗体交互获得的编辑指令对这些属性与参数进行重设置,当然也可以通过点击按钮、快捷键、菜单等等操作触发软件消息事件来删除并行单元。在并行单元列表中选中一个并行单元,则顺序子单元列表就显示出这个并行单元中的所有顺序子单元,顺序子单元列表中可以显示各个顺序子单元的名称或标识符、运行连贯性属性、注释、出口设置等等。本实施例中,用户还可以通过点击按钮、快捷键、菜单等等操作触发软件消息事件在顺序子单元列表中的任意位置增加顺序子单元、弹出对话窗体重设置顺序子单元的属性和参数、删除顺序子单元;也可以选定任意数量的顺序子单元复制粘贴到任意位置去,复制粘贴的顺序子单元的名称或标识符自动按预设规律变化以保证不出现同名或同标识符的顺序子单元。
进一步的,新建或编辑顺序子单元属性时,弹出的对话窗体中可以设置顺序子单元的名称或标识符、注释、运行连贯性属性、执行前操作指令、执行后操作指令、执行了指令或控制动作的出口、没有执行指令或控制动作的出口等等,还可以增加、删除、修改各种工作内容控制语句或者控制动作,这些设置操作可以直接键入,也可以用下拉框、按钮、快捷键、菜单等等方式来完成设置,确认正确后用户就可以点击按钮,基于用户点击按钮的操作生成顺序子单元。
需要说明的是,在运行过程中,并行单元列表还可以显示并行单元的状态、该并行单元的运行位的顺序子单元的名称标识符和注释,方便用户及时跟踪各个并行单元和顺序子单元的状态。
本实施例中,提供一种如上具体描述的简单明了的编程方法,且可以实现原本需要经过复杂编码或层层条件互锁递进才能实现的并行逻辑控制、顺序逻辑控制、选择逻辑控制和循环逻辑控制等,使得编程人员不需要按照严格的语法和词法规则去编写各种控制逻辑,也不需要反复假设各种情况然后使用层层条件互锁递进来编制流程控制程序,大大降低了编程难度,也可以提升用户的编程兴趣和效率。
在一种应用场景中,还可以将上述并行单元称为并行块、动作流、运动过程,或者就称之为流程;将上述顺序子单元称为控制步、指令集、顺序块,或者就称之为步骤;如此,可以方便用户理解:各个流程是并行进行的,步骤是顺序进行的,一个流程包含很多步骤。这样就基本理解了本发明的并行单元与顺序子单元配合编程的方法和模式,即使是初学者也可以方便的实现编程。
示例性设备
如图12中所示,对应于上述编程方法,本发明实施例还提供一种编程装置,上述编程装置包括:
编辑指令获取模块510,用于获取编辑指令,其中,上述编辑指令包括通过对话窗体获得的指令。
具体的,上述编辑指令是用户通过操作对话窗体输入的指令,用于构建(和组装)程序所需的变量、并行单元和顺序子单元。在一种应用场景中,上述编辑指令可以是用户通过点击对话窗体中的按键、拖拽对话窗体中的模块等方式输入的指令。本实施例中,用户可以直接通过与对话窗体的交互向编程装置输入对应的编辑指令,进而使得编程装置可以基于编辑指令进行处理最终构建目标程序,使得用户无需输入复杂的文本字符串,无需理解和考虑复杂的语法和句法,可以降低编程难度。
编辑指令处理模块520,用于基于上述编辑指令构建变量、顺序子单元以及并行单元,其中,上述顺序子单元是上述并行单元的子单元,上述并行单元是包括至少一个顺序子单元的容器,上述顺序子单元是包括至少一条操作指令或至少一个执行条件的容器。
其中,容器就是能运行的一个(或一组)组件,以及它必需的运行环境。上述顺序子单元中包括的操作指令具体可以为工作指令、工作计算和/或控制动作。
具体的,根据通过对话窗体获得的编辑指令,可以直接构建变量、顺序子单元以及并行单元。在一种应用场景中,用户需要构建某个变量时,可以直接通过点击或拖拽的方式将预先设置的变量拖入到对应位置,并设置其初始参数值等。在另一种应用场景中,用户还可以通过点击或拖拽的方式构建顺序子单元并设置其属性、参数等,然后通过拖拽等方式将顺序子单元组合成并行单元。其中,上述变量用于保存数据、保存状态、在各个单元(包括顺序子单元和并行单元)中共享或者传递信息等。
目标程序构建模块530,用于基于上述变量、上述并行单元以及上述顺序子单元构建目标程序。
具体的,可以从编辑指令中获取组装上述变量、上述并行单元以及上述顺序子单元的顺序,从而获得目标程序;也可以根据获得的编辑指令和预先设置的组合顺序对上述变量、上述并行单元以及上述顺序子单元进行组合;还可以有其它构建目标程序的方式,在此不作具体限定。其中,上述目标程序是需要通过编程获得的用于实现用户想实现的具体功能的程序。
功能进程执行模块540,用于执行与上述目标程序对应的功能进程。
本实施例中,一个完整的目标程序中包含任意数量的变量、并行单元和顺序子单元,各个并行单元之间是通过持续运行或者周期扫描等方法实现并行执行的,顺序子单元是并行单元的子单元,一个并行单元可以包含任意数量的顺序子单元,并行单元内部的顺序子单元是按一定的次序或者序列运行的,顺序子单元的运行顺序可以是预先设定的(例如预先设定按创建顺序运行)或通过编辑指令指定的。通过按照对应的顺序执行目标程序中的并行单元和顺序子单元对应的功能进程,可以实现目标程序对应的功能。
由上可见,本发明实施例提供的编程装置中,通过编辑指令获取模块510获取编辑指令,其中,上述编辑指令包括通过对话窗体获得的指令;通过编辑指令处理模块520基于上述编辑指令构建变量、顺序子单元以及并行单元,其中,上述顺序子单元是上述并行单元的子单元,上述并行单元是包括至少一个顺序子单元的容器,上述顺序子单元是包括至少一条操作指令或至少一个执行条件的容器;通过目标程序构建模块530基于上述变量、上述并行单元以及上述顺序子单元构建目标程序;通过功能进程执行模块540执行与上述目标程序对应的功能进程。与现有技术中只能通过键盘输入的文本字符串构成对应编程语言的代码从而实现编程的方案相比,本发明方案中,可以直接通过对话窗体获得编辑指令,从而基于编辑指令直接构建对应的变量、顺序子单元以及并行单元并构建目标程序,使得编程人员无需掌握复杂难度的编程语言,无需考虑严格的句法和语法规范即可快速简单地进行编程。有利于降低编程的难度,实现方便简单地编程。
具体的,本实施例中,上述编程装置及其各模块的具体功能可以参照上述编程方法中的对应描述,在此不再赘述。
本发明实施例还提供一种计算机可读存储介质,上述计算机可读存储介质上存储有编程程序,上述编程程序被处理器执行时实现本发明实施例提供的任意一种编程方法的步骤。
应理解,上述实施例中各步骤的序号大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将上述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各实例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟是以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,上述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以由另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
上述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,上述计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,上述计算机程序包括计算机程序代码,上述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。上述计算机可读介质可以包括:能够携带上述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,上述计算机可读存储介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解;其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不是相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

Claims (10)

1.一种编程方法,其特征在于,所述方法包括:
获取编辑指令,其中,所述编辑指令包括通过对话窗体获得的指令;
基于所述编辑指令构建变量、顺序子单元以及并行单元,其中,所述顺序子单元是所述并行单元的子单元,所述并行单元是包括至少一个顺序子单元的容器,所述顺序子单元是包括至少一条操作指令或至少一个执行条件的容器;
基于所述变量、所述并行单元以及所述顺序子单元构建目标程序;
执行与所述目标程序对应的功能进程。
2.根据权利要求1所述的编程方法,其特征在于,所述变量、所述并行单元以及所述顺序子单元通过图形、列表、树型节点或文字代码的方式显示。
3.根据权利要求1所述的编程方法,其特征在于,所述获取编辑指令,包括:
响应于按钮点击指令、快捷键操作指令和菜单操作指令中的至少一种,创建对话窗体;
基于所述对话窗体获取编辑指令。
4.根据权利要求1所述的编程方法,其特征在于,所述基于所述编辑指令构建变量、顺序子单元以及并行单元,包括:
基于所述编辑指令分别设置各变量、顺序子单元以及并行单元的参数和/或属性,并生成对应的变量、顺序子单元以及并行单元。
5.根据权利要求4所述的编程方法,其特征在于,所述基于所述变量、所述并行单元以及所述顺序子单元构建目标程序,包括:
基于设置好参数和/或属性的变量、并行单元以及顺序子单元构建目标程序,其中,所述目标程序中包括多个变量和多个并行单元,每个所述并行单元中包括多个按次序执行的顺序子单元,每个所述变量用于保存和/或传递信息。
6.根据权利要求5所述的编程方法,其特征在于,所述顺序子单元的参数包括条件参数,所述条件参数用于限定所述顺序子单元中各所述操作指令的执行条件;每个所述顺序子单元包括至少一个出口,所述出口对应指定下一个进入执行状态的顺序子单元。
7.根据权利要求6所述的编程方法,其特征在于,所述并行单元的属性包括状态属性和运行时机属性,所述状态属性用于指示所述并行单元的运行状态,所述运行时机属性用于指示所述并行单元的运行时机,所述方法还包括:
基于所有所述并行单元的运行时机属性将所有所述并行单元划分为上电初始化并行单元、开始并行单元、工作并行单元、停止并行单元以及监控并行单元,其中,所述上电初始化并行单元在所述目标程序被装载或被读入内存时执行,所述开始并行单元在所述目标程序被启动时执行,所述工作并行单元在所述目标程序工作时执行,所述停止并行单元在所述目标程序被停止时执行,所述监控并行单元用于监控并处理异常情况。
8.根据权利要求7所述的编程方法,其特征在于,所述执行与所述目标程序对应的功能进程,包括以下步骤:
响应于程序初始化指令,将所述目标程序装载或读入内存中,对各所述并行单元进行初始化;
当所述目标程序中存在上电初始化并行单元时,将所述上电初始化并行单元的状态属性设置为运行态并调度运行,运行完成后进入下一步;
响应于程序启动指令,启动所述目标程序,将所述目标程序中的监控并行单元的状态属性设置为运行态,使所述监控并行单元参与调度运行后,如果所述目标程序中存在开始并行单元,将所述开始并行单元的状态属性设置为运行态并调度运行,运行完成后进入下一步,如果所述目标程序中不存在开始并行单元则直接进入下一步;
将所述目标程序中的所有工作并行单元的状态属性设置为运行态后进入下一步;
调度所有处于运行态的工作并行单元和监控并行单元运行,在不存在处于运行态的工作并行单元时直接进入下一步,当所述目标程序被停止时,若所述目标程序中不存在停止并行单元,则直接进入下一步,反之若所目标程序中存在停止并行单元,则把所述停止并行单元的状态属性设置为运行态并调度运行,运行完成后进入下一步;
停止所述监控并行单元的运行并终止所述目标程序的运行。
9.一种编程装置,其特征在于,所述装置包括:
编辑指令获取模块,用于获取编辑指令,其中,所述编辑指令包括通过对话窗体获得的指令;
编辑指令处理模块,用于基于所述编辑指令构建变量、顺序子单元以及并行单元,其中,所述顺序子单元是所述并行单元的子单元,所述并行单元是包括至少一个顺序子单元的容器,所述顺序子单元是包括至少一条操作指令或至少一个执行条件的容器;
目标程序构建模块,用于基于所述变量、所述并行单元以及所述顺序子单元构建目标程序;
功能进程执行模块,用于执行与所述目标程序对应的功能进程。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有编程程序,所述编程程序被处理器执行时实现如权利要求1-7任意一项所述编程方法的步骤。
CN202111203240.8A 2021-10-15 2021-10-15 一种编程方法、装置及计算机可读存储介质 Active CN113934409B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111203240.8A CN113934409B (zh) 2021-10-15 2021-10-15 一种编程方法、装置及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111203240.8A CN113934409B (zh) 2021-10-15 2021-10-15 一种编程方法、装置及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN113934409A true CN113934409A (zh) 2022-01-14
CN113934409B CN113934409B (zh) 2022-05-20

Family

ID=79279588

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111203240.8A Active CN113934409B (zh) 2021-10-15 2021-10-15 一种编程方法、装置及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN113934409B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002024189A (ja) * 2000-06-30 2002-01-25 Hitachi Eng Co Ltd 超並列コンピュータ及びその処理方法
CN105955726A (zh) * 2016-04-22 2016-09-21 广州捷士电子科技有限公司 一种控制逻辑及其可视化图形编程方法
CN109871204A (zh) * 2019-02-13 2019-06-11 智能佳(北京)机器人有限公司 文字可视化视觉编程集成装置、处理设备及存储介质
DE102019132679A1 (de) * 2018-12-10 2020-06-10 Hyundai Autron Co., Ltd. Überwachungsverfahren für cpu-nutzungsmenge im betrieb von fahrzeug-ecu und überwachungseinheit
CN112114780A (zh) * 2020-08-31 2020-12-22 安来科学仪器(宁波)有限公司 一种基于状态逻辑的动物行为分析计算机程序编辑系统
CN112463140A (zh) * 2020-11-23 2021-03-09 乐聚(深圳)机器人技术有限公司 基于电子积木的编程方法、装置、电子设备及存储介质
CN112988355A (zh) * 2021-03-31 2021-06-18 深圳市优必选科技股份有限公司 程序任务的调度方法、装置、终端设备及可读存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002024189A (ja) * 2000-06-30 2002-01-25 Hitachi Eng Co Ltd 超並列コンピュータ及びその処理方法
CN105955726A (zh) * 2016-04-22 2016-09-21 广州捷士电子科技有限公司 一种控制逻辑及其可视化图形编程方法
DE102019132679A1 (de) * 2018-12-10 2020-06-10 Hyundai Autron Co., Ltd. Überwachungsverfahren für cpu-nutzungsmenge im betrieb von fahrzeug-ecu und überwachungseinheit
CN109871204A (zh) * 2019-02-13 2019-06-11 智能佳(北京)机器人有限公司 文字可视化视觉编程集成装置、处理设备及存储介质
CN112114780A (zh) * 2020-08-31 2020-12-22 安来科学仪器(宁波)有限公司 一种基于状态逻辑的动物行为分析计算机程序编辑系统
CN112463140A (zh) * 2020-11-23 2021-03-09 乐聚(深圳)机器人技术有限公司 基于电子积木的编程方法、装置、电子设备及存储介质
CN112988355A (zh) * 2021-03-31 2021-06-18 深圳市优必选科技股份有限公司 程序任务的调度方法、装置、终端设备及可读存储介质

Also Published As

Publication number Publication date
CN113934409B (zh) 2022-05-20

Similar Documents

Publication Publication Date Title
US8327316B2 (en) Compilation model
WO1999035589A1 (en) Intelligent agent workbench
EP3273368B1 (en) Systems and methods for aggregating implicit and explicit event code of executable models
US6518979B1 (en) Automatically-maintained customizable user interfaces
Baudart et al. Reactive chatbot programming
Appert et al. SwingStates: adding state machines to the swing toolkit
Hunt IDF: A graphical data flow programming language for image processing and computer vision
Ignatoff et al. Crossing state lines: Adapting object-oriented frameworks to functional reactive languages
CN113934409B (zh) 一种编程方法、装置及计算机可读存储介质
Bauer et al. Towards automatic verification of embedded control software
Palanque et al. Towards an integrated proposal for Interactive Systems design based on TLIM and ICO
Ferrucci et al. Exploiting visual languages in software engineering
Shorin Model-based development of energy-efficient automation systems
Jakubovic et al. Ascending the Ladder to Self-Sustainability: Achieving Open Evolution in an Interactive Graphical System
Wagner et al. An IEC 61499 interpretation and implementation focused on usability
Nilsson et al. Sequential Function Chart Interfacing
Myers User Interface Programming Languages
Smyth et al. Code generation for sequential constructiveness
Jakubovic et al. Ascending the Ladder to Self-Sustainability
Nguyen Statecharts for modern web application state management
Bangsow et al. SimTalk and Dialogs
Murphy The beginnings of TECO
Risley JGraph: A Java Compatible Visual Language
Blythe et al. The Prodigy user interface
Baeg et al. A dialog-oriented user interface generation mechanism

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
GR01 Patent grant
GR01 Patent grant