CN112965436B - 一种单线程多轴控制方法及相关装置 - Google Patents
一种单线程多轴控制方法及相关装置 Download PDFInfo
- Publication number
- CN112965436B CN112965436B CN202110110678.5A CN202110110678A CN112965436B CN 112965436 B CN112965436 B CN 112965436B CN 202110110678 A CN202110110678 A CN 202110110678A CN 112965436 B CN112965436 B CN 112965436B
- Authority
- CN
- China
- Prior art keywords
- shaft
- control state
- card
- state
- main thread
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/05—Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
- G05B19/054—Input/output
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/10—Plc systems
- G05B2219/13—Plc programming
- G05B2219/13149—Encapsulated actuator model with standardized interface: state, action, interlock
Abstract
本申请实施例公开了一种单线程多轴控制方法及相关装置,解决了多轴控制之间等待耗时,软件开发难度高的问题。本申请包括:定义轴卡中所有任务包含的动作逻辑;创建一个主线程,主线程用于依次循环运行轴卡中的所有任务;判断主线程中的轴卡的当前控制状态是否达到第一目标控制状态,若是,则获取轴卡在所述第一目标控制状态下的轴运行状态;当所述轴运行状态为允许执行时,则根据轴卡的动作逻辑去响应相应的动作;当所述轴运行状态为不允许执行时,则控制所述主线程执行下一个任务的动作逻辑;判断轴卡的当前控制状态是否到达第二目标控制状态,若是,则获取轴卡在所述第二目标控制状态下的轴运行状态;根据所述轴运行状态执行相应的动作。
Description
技术领域
本申请实施例涉及运动控制技术领域,特别涉及一种单线程多轴控制方法及相关装置。
背景技术
目前国内设备制造厂商中,中大型设备的控制有PLC控制和PC控制两种,PC控制相比于PLC控制,功能开发更灵活,比如接入第三方的软件通讯,工厂的MES以及CIM系统等。PC控制是通过软件编程实现的,所以实现方式种类比较多,因为软件架构设计得越合理,效率及扩展性会越好,出错的概率会更低,所以一个好的软件架构设计尤为重要。
现有的PC控制技术方案大多是采用业务层驱动控制逻辑,即按照指定的业务流程,软件控制轴卡驱动单个轴运动,需求与业务场景的变更需要更改软件各轴的控制流程。
然而现有技术中,由于中大型设备轴的数量比较多,多轴控制之间会有等待耗时,导致设备运行的节拍达不到要求;同时,软件开发时需要考虑的场景比较复杂,软件开发难度大。
发明内容
本申请实施例提供了一种单线程多轴控制方法及相关装置,解决了多轴控制之间等待耗时,软件开发难度高的问题。
本申请实施例第一方面提供了一种单线程多轴控制的方法,包括:
定义轴卡中所有任务包含的动作逻辑;
创建一个主线程,所述主线程用于依次循环运行所述轴卡中的所有任务;
判断所述主线程中的所述轴卡的当前控制状态是否达到第一目标控制状态,若是,则获取所述轴卡在所述第一目标控制状态下的轴运行状态;
当所述轴运行状态为允许执行时,则根据所述轴卡的动作逻辑去响应相应的动作;
当所述轴运行状态为不允许执行时,则控制所述主线程执行下一个任务的动作逻辑;
判断所述轴卡的当前控制状态是否到达第二目标控制状态,若是,则获取所述轴卡在所述第二目标控制状态下的轴运行状态;
根据所述轴运行状态执行相应的动作。
可选的,在所述根据所述轴运行状态执行相应的动作之后,所述方法还包括:
创建一个空子线程,所述空子线程用于设置所述主线程循环的间隔时间。
可选的,在所述判断所述主线程中的所述轴卡的当前控制状态是否达到第一目标控制状态之后,所述方法还包括:
若否,则不对所述轴卡发出动作指令,控制所述主线程执行下一个任务的动作逻辑。
可选的,在所述判断所述轴卡的当前控制状态是否到达第二目标控制状态之后,所述方法还包括:
若否,则不对所述轴卡发出动作指令,控制所述主线程执行下一个任务的动作逻辑。
可选的,所述定义轴卡中所有任务包含的动作逻辑,包括:
定义轴卡中所有任务包含的动作逻辑,所述动作逻辑包括控制状态、所述控制状态下要执行的轴动作以及触发所述轴动作的条件。
本申请实施例第二方面提供了一种单线程多轴控制装置,包括:
定义单元,用于定义轴卡中所有任务包含的动作逻辑;
第一创建单元,用于创建一个主线程,所述主线程用于依次循环运行所述轴卡中的所有任务;
第一判断单元,用于判断所述主线程中的所述轴卡的当前控制状态是否达到第一目标控制状态;
第一获取单元,用于在所述第一判断单元判断所述主线程中的所述轴卡的当前控制状态达到第一目标控制状态之后,获取所述轴卡在所述第一目标控制状态下的轴运行状态;
响应单元,用于当所述轴运行状态为允许执行时,则根据所述轴卡的动作逻辑去响应相应的动作;
第一控制单元,用于当所述轴运行状态为不允许执行时,则控制所述主线程执行下一个任务的动作逻辑;
第二判断单元,用于判断所述轴卡的当前控制状态是否到达第二目标控制状态;
第二获取单元,用于在所述第二判断单元判断所述主线程中的所述轴卡的当前控制状态达到第二目标控制状态之后,获取所述轴卡在所述第二目标控制状态下的轴运行状态;
执行单元,用于根据所述轴运行状态执行相应的动作。
可选的,在所述执行单元之后,所述装置还包括:
第二创建单元,用于创建一个空子线程,所述空子线程用于设置所述主线程循环的间隔时间。
可选的,在所述第一判断单元之后,所述装置还包括:
第二控制单元,用于在所述第一判断单元判断所述主线程中的所述轴卡的当前控制状态未达到第一目标控制状态之后,不对所述轴卡发出动作指令,控制所述主线程执行下一个任务的动作逻辑。
可选的,在所述第二判断单元之后,所述装置还包括:
第三控制单元,用于在所述第二判断单元判断所述主线程中的所述轴卡的当前控制状态未达到第二目标控制状态之后,不对所述轴卡发出动作指令,控制所述主线程执行下一个任务的动作逻辑。
可选的,所述定义单元,包括:
定义模块,用于定义轴卡中所有任务包含的动作逻辑,所述动作逻辑包括控制状态、所述控制状态下要执行的轴动作以及触发所述轴动作的条件。
本申请实施例第三方面提供了一种单线程多轴控制的装置,包括:
处理器、存储器、输入输出单元以及总线;
所述处理器与所述存储器、输入输出单元以及总线相连;
所述处理器执行如下操作:
定义轴卡中所有任务包含的动作逻辑;
创建一个主线程,所述主线程用于依次循环运行所述轴卡中的所有任务;
判断所述主线程中的所述轴卡的当前控制状态是否达到第一目标控制状态,若是,则获取所述轴卡在所述第一目标控制状态下的轴运行状态;
当所述轴运行状态为允许执行时,则根据所述轴卡的动作逻辑去响应相应的动作;
当所述轴运行状态为不允许执行时,则控制所述主线程执行下一个任务的动作逻辑;
判断所述轴卡的当前控制状态是否到达第二目标控制状态,若是,则获取所述轴卡在所述第二目标控制状态下的轴运行状态;
根据所述轴运行状态执行相应的动作。
本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上保存有程序,所述程序在计算机上执行时执行上述第一方面任意一种单线程多轴控制的方法。
从以上技术方案可以看出,本申请实施例具有以下优点:
本申请中,创建一个用于依次循环运行轴卡中所有任务类的主线程,在该主线程内,根据各任务类设定的动作逻辑执行相应的动作,不用担心因为多线程导致的程序锁死或者并发,也解决了多轴控制之间等待耗时,软件开发难度高的问题。
附图说明
图1为本申请实施例中单线程多轴控制的方法一个实施例流程示意图;
图2为本申请实施例中单线程多轴控制的方法另一实施例流程示意图;
图3为本申请实施例中单线程多轴控制的方法另一实施例流程示意图;
图4为本申请实施例中单线程多轴控制的装置一个实施例流程示意图;
图5为本申请实施例中单线程多轴控制的装置另一实施例流程示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整的阐述,显然阐述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应当属于本申请保护范围。
本申请实施例提供了一种单线程多轴控制方法及相关装置,解决了多轴控制之间等待耗时,软件开发难度高的问题。
请参阅图1,本申请实施例中单线程多轴控制的方法一个实施例包括:
101、定义轴卡中所有任务包含的动作逻辑;
需要说明的是,本申请实施例中,一个主线程可以循环调用多个轴卡,每一个轴卡可以有多个任务,每个任务里还可以有一个或者多个子任务,在程序启动之前,需要为轴卡中的所有任务(逻辑类)写好轴动作的逻辑,根据业务场景定义好各轴的相关条件,即状态机模型。状态机模型,通俗的讲可以理解为一种建模方法,当一个程序逻辑非常复杂时,使用状态转移图(是一个有向图形,包括各节点和状态转移条件)可以很好的梳理流程,实现状态转移图的模块我们便可以称之为状态机。
本申请实施例中,定义各轴卡的状态机模型,具体有控制和当前运行两种状态,其中,控制状态表示接收到命令要去执行,当收到控制指令时,轴的动作就去响应,比如向前、向后、回原、避让以及旋转等。当前运行状态表示执行过程中的状态,在运行中时,比如到达正极限、到达负极限以及到达原点位置等。
需要说明的是,各轴卡的动作逻辑类是独立分开的,要能实现具体某个轴的动作,只需要在运行线程中,给轴的控制状态赋值即可。
102、创建一个主线程,所述主线程用于依次循环运行所述轴卡中的所有任务;
需要说明的是,本申请实施例中,在定义好各轴卡中的所有任务类的动作逻辑之后,在程序启动时,还需要在主窗体中新建一个全自动化运行线程,即主线程,用于主流程循环运行,即在主线程中依次循环调用各轴卡的运行方法。
103、判断所述主线程中的所述轴卡的当前控制状态是否达到第一目标控制状态,若是,则执行步骤104;
需要说明的是,在创建主线程之后,依次调用并运行轴卡,按照该轴卡定义好的动作逻辑进行响应。本申请实施例中,程序运行时,需要控制一个轴卡去动作,轴卡会有相应的状态,如第一目标控制状态、第二目标控制状态、第三目标控制状态等等,这几个控制状态是循环去监控的,当监控到主线程内该轴卡的当前控制状态达到第一目标控制状态时,执行步骤104。
104、获取所述轴卡在所述第一目标控制状态下的轴运行状态;
需要说明的是,本申请实施例中,当主线程内运行的轴卡的当前控制状态到达第一目标控制状态时,按照轴卡的动作逻辑去获取该轴卡的当前轴运行状态,并且判断该轴卡的轴运行状态是否允许执行,若是允许执行则执行步骤105;若是不允许执行,则执行步骤106。
105、当所述轴运行状态为允许执行时,则根据所述轴卡的动作逻辑去响应相应的动作;
需要说明的是,本申请实施例中,判断轴卡的轴运行状态,当轴运行状态为允许执行时,则根据该轴卡定义好的动作逻辑去响应相应的动作,比如轴运动、轴回原等。
106、当所述轴运行状态为不允许执行时,则控制所述主线程执行下一个任务的动作逻辑;
需要说明的是,本申请实施例中,判断轴卡的轴运行状态,当轴运行状态为不运行执行时,则不对轴卡进行任何动作,主线程继续执行业务逻辑场景,即继续获取轴卡的当前控制状态,判断轴运行状态,根据轴运行状态去执行动作,返回相应的状态。
107、判断所述轴卡的当前控制状态是否到达第二目标控制状态,若是,则执行步骤108;
需要说明的是,本申请实施例中,判断轴卡的当前控制状态是否到达第二目标控制状态,当检测到主线程内运行的轴卡的当前控制状态到达第二目标控制状态时,执行步骤108。
108、获取所述轴卡在所述第二目标控制状态下的轴运行状态;
本申请实施例中,当控制状态为第二目标控制状态时,按照轴卡的动作逻辑,需要判断该轴卡在第二目标控制状态下的轴运行状态并根据该轴运行状态去执行相应的动作。
需要说明的是,本申请实施例中,要能实现具体某个轴卡的动作,需要在主线程中,给轴卡的控制状态赋值,赋值过程非常快,没有任何延迟。
109、根据所述轴运行状态执行相应的动作。
需要说明的是,本申请实施例中,获取并判断该轴卡在第二目标控制状态下的轴运行状态,并根据该轴运行状态去执行动作,返回相应的状态。
本申请实施例中,创建一个用于依次循环运行轴卡中所有任务类的主线程,在该主线程内,根据各任务类设定的动作逻辑执行相应的动作,不用担心因为多线程导致的程序锁死或者并发,也解决了多轴控制之间等待耗时,软件开发难度高的问题。
上面对单线程多轴控制的方法进行了一个大概的说明,下面将对单线程多轴控制的方法进行一个详细的介绍。
请参阅图2,本申请实施例中单线程多轴控制的方法另一实施例包括:
201、定义轴卡中所有任务包含的动作逻辑,所述动作逻辑包括控制状态、所述控制状态下要执行的轴动作以及触发所述轴动作的条件;
需要说明的是,本申请实施例中,定义各轴卡中所有任务包含的动作逻辑,该动作逻辑包括控制状态、该控制状态下要执行的轴动作以及触发该轴动作的条件,具体概括为控制和当前运行两种状态。设置好控制状态,给该控制状态赋值,当赋值操作完成,即收到控制指令时,轴卡就去响应相应的动作,比如向前、向后、回原、避让以及旋转等。需要说明的是,当前运行状态表示执行过程中的状态,比如到达正极限、到达负极限以及到达原点位置等。
需要说明的是,各轴卡的动作逻辑类是独立分开的,要能实现具体某个轴的动作,只需要在运行线程中,给轴的控制状态赋值即可。
202、创建一个主线程,所述主线程用于依次循环运行所述轴卡中的所有任务;
需要说明的是,本申请实施例中,步骤202与前述步骤102类似,此处不再赘述。
203、判断所述主线程中的所述轴卡的当前控制状态是否达到第一目标控制状态,若是,则执行步骤205;若否,则执行步骤204;
需要说明的是,在创建主线程之后,依次调用并运行轴卡,按照该轴卡定义好的动作逻辑进行响应。本申请实施例中,程序运行时,需要控制一个轴卡去动作,轴卡会有相应的状态,如第一目标控制状态、第二目标控制状态、第三目标控制状态等等,这几个控制状态是循环去监控的,当监控到主线程内该轴卡的当前控制状态达到第一目标控制状态时,执行步骤205;当监控到主线程内该轴卡的当前控制状态未达到第一目标控制状态时,执行步骤204。
204、不对所述轴卡发出动作指令,直接执行步骤208;
需要说明的是,本申请实施例中,判断轴卡的轴运行状态,当轴运行状态为不运行执行时,则不对轴卡进行任何动作,主线程继续执行业务逻辑场景,继续获取轴卡的当前控制状态,判断轴运行状态,根据轴运行状态去执行动作,返回相应的状态,即执行步骤208。
205、获取所述轴卡在所述第一目标控制状态下的轴运行状态;
206、当所述轴运行状态为允许执行时,则根据所述轴卡的动作逻辑去响应相应的动作;
207、当所述轴运行状态为不允许执行时,则控制所述主线程执行下一个任务的动作逻辑;
需要说明的是,本申请实施例中,步骤205至步骤207与前述步骤104至步骤106类似,此处不再赘述。
208、判断所述轴卡的当前控制状态是否到达第二目标控制状态,若是,则执行步骤210;若否,则执行步骤209;
需要说明的是,本申请实施例中,判断轴卡的当前控制状态是否到达第二目标控制状态,当检测到主线程内运行的轴卡的当前控制状态到达第二目标控制状态时,执行步骤210;当检测到主线程内运行的轴卡的当前控制状态未到达第二目标控制状态时,执行步骤209。
209、不对所述轴卡发出动作指令,控制所述主线程执行下一个任务的动作逻辑。
需要说明的是,本申请实施例中,判断轴卡的轴运行状态,当轴运行状态为不运行执行时,则不对轴卡进行任何动作,主线程继续执行业务逻辑场景,即继续获取轴卡的当前控制状态,判断轴运行状态,根据轴运行状态去执行动作,返回相应的状态。
210、获取所述轴卡在所述第二目标控制状态下的轴运行状态;
211、根据所述轴运行状态执行相应的动作。
需要说明的是,本申请实施例中,步骤210至步骤211与前述步骤108至步骤109类似,此处不再赘述。
212、创建一个空子线程,所述空子线程用于设置所述主线程循环的间隔时间。
需要说明的是,本申请实施例中,在最后循环的末端创建一个用于降低资源消耗的空线程,在程序运行结束之后,在再次循环调用该程序之前,设置一个延迟时间,比如延迟5毫秒,避免CPU内存占用过高,提高系统的效率。
本申请实施例中,创建一个主线程,在该主线程内,根据各轴卡设定的动作逻辑执行相应的动作,各轴的动作逻辑独立分开,要实现某个轴卡的动作,只需要在运行线程中给轴卡的控制状态赋值即可,赋值过程非常快,没有任何延迟,这样设备的响应时间,完全取决于主线程中对轴控制状态赋值的时间,由于主线程中没有任何逻辑,只有判断条件和赋值操作,使得轴的增加删除扩展性非常好,线程的周期可以达到1秒1000次,响应周期非常快,保证了设备的运行效率。
此外,由于主线程控制逻辑使用单线程代替了以往的多线程,不用担心因为多线程导致的程序锁死或者并发,也解决了多轴控制之间等待耗时,软件开发难度高的问题。
上面对单线程多轴控制的方法进行了描述,下面将对该单线程多轴控制的装置进行说明。
请参阅图3,本申请实施例中单线程多轴控制的装置一实施例包括:
定义单元301,用于定义轴卡中所有任务包含的动作逻辑;
第一创建单元302,用于创建一个主线程,所述主线程用于依次循环运行所述轴卡中的所有任务;
第一判断单元303,用于判断所述主线程中的所述轴卡的当前控制状态是否达到第一目标控制状态;
第一获取单元304,用于在第一判断单元303判断所述主线程中的所述轴卡的当前控制状态达到第一目标控制状态之后,获取所述轴卡在所述第一目标控制状态下的轴运行状态;
响应单元305,用于当所述轴运行状态为允许执行时,则根据所述轴卡的动作逻辑去响应相应的动作;
第一控制单元306,用于当所述轴运行状态为不允许执行时,则控制所述主线程执行下一个任务的动作逻辑;
第二判断单元307,用于判断所述轴卡的当前控制状态是否到达第二目标控制状态;
第二获取单元308,用于在第二判断单元307判断所述主线程中的所述轴卡的当前控制状态达到第二目标控制状态之后,获取所述轴卡在所述第二目标控制状态下的轴运行状态;
执行单元309,用于根据所述轴运行状态执行相应的动作。
本申请实施例中,通过第一创建单元302创建一个用于依次循环运行轴卡中所有任务类的主线程,在该主线程内,通过执行单元309根据各任务类设定的动作逻辑执行相应的动作,不用担心因为多线程导致的程序锁死或者并发,也解决了多轴控制之间等待耗时,软件开发难度高的问题。
上面对单线程多轴控制的装置的各单元功能进行一个大概的描述,下面将对单线程多轴控制的装置的各单元功能进行一个详细的描述。
请参阅图4,本申请实施例中,单线程多轴控制的装置另一实施例包括:
定义单元401,用于定义轴卡中所有任务包含的动作逻辑;
可选的,定义单元401进一步还可以包括:
定义模块4011,用于定义轴卡中所有任务包含的动作逻辑,所述动作逻辑包括控制状态、所述控制状态下要执行的轴动作以及触发所述轴动作的条件。
第一创建单元402,用于创建一个主线程,所述主线程用于依次循环运行所述轴卡中的所有任务;
第一判断单元403,用于判断所述主线程中的所述轴卡的当前控制状态是否达到第一目标控制状态;
第二控制单元404,用于在第一判断单元403判断所述主线程中的所述轴卡的当前控制状态未达到第一目标控制状态之后,不对所述轴卡发出动作指令,控制所述主线程执行下一个任务的动作逻辑;
第一获取单元405,用于在第一判断单元403判断所述主线程中的所述轴卡的当前控制状态达到第一目标控制状态之后,获取所述轴卡在所述第一目标控制状态下的轴运行状态;
响应单元406,用于当所述轴运行状态为允许执行时,则根据所述轴卡的动作逻辑去响应相应的动作;
第一控制单元407,用于当所述轴运行状态为不允许执行时,则控制所述主线程执行下一个任务的动作逻辑;
第二判断单元408,用于判断所述轴卡的当前控制状态是否到达第二目标控制状态;
第三控制单元409,用于在第二判断单元408判断所述主线程中的所述轴卡的当前控制状态未达到第二目标控制状态之后,不对所述轴卡发出动作指令,控制所述主线程执行下一个任务的动作逻辑;
第二获取单元410,用于在第二判断单元408判断所述主线程中的所述轴卡的当前控制状态达到第二目标控制状态之后,获取所述轴卡在所述第二目标控制状态下的轴运行状态;
执行单元411,用于根据所述轴运行状态执行相应的动作;
第二创建单元412,用于创建一个空子线程,所述空子线程用于设置所述主线程循环的间隔时间。
本申请实施例中,各单元模块的功能与前述图1至图2中所示实施例中的步骤对应,此处不再赘述。
请参阅图5,本申请实施例中单线程多轴控制的装置另一实施例包括:
处理器501、存储器502、输入输出单元503以及总线504;
处理器501与存储器502、输入输出单元503以及总线504相连;
处理器501执行如下操作:
定义轴卡中所有任务包含的动作逻辑;
创建一个主线程,所述主线程用于依次循环运行所述轴卡中的所有任务;
判断所述主线程中的所述轴卡的当前控制状态是否达到第一目标控制状态,若是,则获取所述轴卡在所述第一目标控制状态下的轴运行状态;
当所述轴运行状态为允许执行时,则根据所述轴卡的动作逻辑去响应相应的动作;
当所述轴运行状态为不允许执行时,则控制所述主线程执行下一个任务的动作逻辑;
判断所述轴卡的当前控制状态是否到达第二目标控制状态,若是,则获取所述轴卡在所述第二目标控制状态下的轴运行状态;
根据所述轴运行状态执行相应的动作。
本实施例中,处理器501的功能与前述图1至图2所示实施例中的步骤对应,此处不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,read-onlymemory)、随机存取存储器(RAM,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (8)
1.一种单线程多轴控制的方法,其特征在于,包括:
定义轴卡中所有任务包含的动作逻辑;
创建一个主线程,所述主线程用于依次循环运行所述轴卡中的所有任务;
判断所述主线程中的所述轴卡的当前控制状态是否达到第一目标控制状态,若是,则获取所述轴卡在所述第一目标控制状态下的轴运行状态;
当所述轴运行状态为允许执行时,则根据所述轴卡的动作逻辑去响应相应的动作;
当所述轴运行状态为不允许执行时,则控制所述主线程执行下一个任务的动作逻辑;
判断所述轴卡的当前控制状态是否到达第二目标控制状态,若是,则获取所述轴卡在所述第二目标控制状态下的轴运行状态;
根据所述轴运行状态执行相应的动作;
创建一个空子线程,所述空子线程用于设置所述主线程循环的间隔时间;
所述根据所述轴运行状态执行相应的动作包括:
根据所述轴运行状态执行相应的动作,所述动作包括向前、向后、回原、避让以及旋转;
其中,每个所述轴卡的动作逻辑独立分开,通过在运行线程中给每个所述轴卡的控制状态赋值来实现每个轴的动作。
2.根据权利要求1所述的方法,其特征在于,在所述判断所述主线程中的所述轴卡的当前控制状态是否达到第一目标控制状态之后,所述方法还包括:
若否,则不对所述轴卡发出动作指令,控制所述主线程执行下一个任务的动作逻辑。
3.根据权利要求1所述的方法,其特征在于,在所述判断所述轴卡的当前控制状态是否到达第二目标控制状态之后,所述方法还包括:
若否,则不对所述轴卡发出动作指令,控制所述主线程执行下一个任务的动作逻辑。
4.根据权利要求1至3中任意一项所述的方法,其特征在于,所述定义轴卡中所有任务包含的动作逻辑,包括:
定义轴卡中所有任务包含的动作逻辑,所述动作逻辑包括控制状态、所述控制状态下要执行的轴动作以及触发所述轴动作的条件。
5.一种单线程多轴控制装置,其特征在于,包括:
定义单元,用于定义轴卡中所有任务包含的动作逻辑;
第一创建单元,用于创建一个主线程,所述主线程用于依次循环运行所述轴卡中的所有任务;
第一判断单元,用于判断所述主线程中的所述轴卡的当前控制状态是否达到第一目标控制状态;
第一获取单元,用于在所述第一判断单元判断所述主线程中的所述轴卡的当前控制状态达到第一目标控制状态之后,获取所述轴卡在所述第一目标控制状态下的轴运行状态;
响应单元,用于当所述轴运行状态为允许执行时,则根据所述轴卡的动作逻辑去响应相应的动作;
第一控制单元,用于当所述轴运行状态为不允许执行时,则控制所述主线程执行下一个任务的动作逻辑;
第二判断单元,用于判断所述轴卡的当前控制状态是否到达第二目标控制状态;
第二获取单元,用于在所述第二判断单元判断所述主线程中的所述轴卡的当前控制状态达到第二目标控制状态之后,获取所述轴卡在所述第二目标控制状态下的轴运行状态;
执行单元,用于根据所述轴运行状态执行相应的动作;
第二创建单元,用于创建一个空子线程,所述空子线程用于设置所述主线程循环的间隔时间;
所述执行单元包括:
执行模块,用于根据所述轴运行状态执行相应的动作,所述动作包括向前、向后、回原、避让以及旋转;
其中,每个所述轴卡的动作逻辑独立分开,通过在运行线程中给每个所述轴卡的控制状态赋值来实现每个轴的动作。
6.根据权利要求5所述的装置,其特征在于,在所述第一判断单元之后,所述装置还包括:
第二控制单元,用于在所述第一判断单元判断所述主线程中的所述轴卡的当前控制状态未达到第一目标控制状态之后,不对所述轴卡发出动作指令,控制所述主线程执行下一个任务的动作逻辑。
7.根据权利要求5所述的装置,其特征在于,在所述第二判断单元之后,所述装置还包括:
第三控制单元,用于在所述第二判断单元判断所述主线程中的所述轴卡的当前控制状态未达到第二目标控制状态之后,不对所述轴卡发出动作指令,控制所述主线程执行下一个任务的动作逻辑。
8.根据权利要求5至7中任意一项所述的装置,其特征在于,所述定义单元,包括:
定义模块,用于定义轴卡中所有任务包含的动作逻辑,所述动作逻辑包括控制状态、所述控制状态下要执行的轴动作以及触发所述轴动作的条件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110110678.5A CN112965436B (zh) | 2021-01-27 | 2021-01-27 | 一种单线程多轴控制方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110110678.5A CN112965436B (zh) | 2021-01-27 | 2021-01-27 | 一种单线程多轴控制方法及相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112965436A CN112965436A (zh) | 2021-06-15 |
CN112965436B true CN112965436B (zh) | 2022-01-21 |
Family
ID=76273160
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110110678.5A Active CN112965436B (zh) | 2021-01-27 | 2021-01-27 | 一种单线程多轴控制方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112965436B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101054014A (zh) * | 2007-05-30 | 2007-10-17 | 华南理工大学 | 一种用于锡膏印刷机的串行多轴步进控制方法及其系统 |
JP5851670B1 (ja) * | 2014-10-28 | 2016-02-03 | 三菱電機株式会社 | 数値制御装置 |
CN108780303A (zh) * | 2016-03-03 | 2018-11-09 | 玛格兹诺有限公司 | 具有行为树架构的机器人的控制过程 |
-
2021
- 2021-01-27 CN CN202110110678.5A patent/CN112965436B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101054014A (zh) * | 2007-05-30 | 2007-10-17 | 华南理工大学 | 一种用于锡膏印刷机的串行多轴步进控制方法及其系统 |
JP5851670B1 (ja) * | 2014-10-28 | 2016-02-03 | 三菱電機株式会社 | 数値制御装置 |
CN107073612A (zh) * | 2014-10-28 | 2017-08-18 | 三菱电机株式会社 | 数控装置 |
CN108780303A (zh) * | 2016-03-03 | 2018-11-09 | 玛格兹诺有限公司 | 具有行为树架构的机器人的控制过程 |
Also Published As
Publication number | Publication date |
---|---|
CN112965436A (zh) | 2021-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10365626B2 (en) | Extending the functionality of a programmable logic controller (PLC) with apps without changing the PLC programming | |
US20070168082A1 (en) | Task-based robot control system for multi-tasking | |
CN109983411B (zh) | 程序模块的流程控制 | |
US11563391B2 (en) | Motor control method and device | |
CN106502770B (zh) | 一种基于有限状态机的hmi状态迁移方法 | |
US20190056970A1 (en) | Method for computer-aided coupling a processing module into a modular technical system and modular technical system | |
US20200351155A1 (en) | Base station configuration method and apparatus | |
CN109839910A (zh) | 控制装置、控制方法以及计算机可读存储介质 | |
CN112965436B (zh) | 一种单线程多轴控制方法及相关装置 | |
CN116521573A (zh) | 一种自动化测试方法、装置、设备及存储介质 | |
CN113848752B (zh) | 一种分布式实时仿真方法 | |
EP3467655A1 (en) | System and method for mpi implementation in an embedded operating system | |
CN109582379A (zh) | 基于微内核操作系统的可编程逻辑控制器系统、控制方法 | |
US20080077925A1 (en) | Fault Tolerant System for Execution of Parallel Jobs | |
JP5140652B2 (ja) | ロボット用ソフトウェアコンポーネントのスレッド処理システム及び方法 | |
CN114816662A (zh) | 应用于Kubernetes的容器编排方法和系统 | |
JP2001325011A (ja) | プログラマブルコントローラシステム | |
US8166169B2 (en) | Method of allocating resources among client work machines | |
CN106802582B (zh) | 一种用于机器人的传感器数据调用方法以及机器人 | |
CN116112299B (zh) | 一种poe系统热重启场景的配置方法、设备及介质 | |
CN109308215B (zh) | 一种基于纤程的交互方法、交互系统及计算机装置 | |
CN116594695A (zh) | 串口指令处理方法、电子设备及计算机可读存储介质 | |
EP3521948A1 (en) | Systems and methods for auto-generating a control and monitoring solution for smart and robotics environments | |
CN115599631A (zh) | 一种部件监控方法、装置、电子设备及存储介质 | |
CN117176716A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |