一种子系统命令的同步方法及装置与流程

文档序号:11431821阅读:171来源:国知局
一种子系统命令的同步方法及装置与流程

本发明涉及数字控制技术领域,尤其涉及一种子系统命令的同步方法及装置。



背景技术:

数控系统是数字控制系统的简称,英文名称为(numericalcontrolsystem),根据计算机存储器中存储的控制程序,执行部分或全部数值控制功能,并配有接口电路和伺服驱动装置的专用计算机系统。通过利用数字、文字和符号组成的数字指令来实现一台或多台机械设备动作控制,它所控制的通常是位置、角度、速度等机械量和电气开关量。

目前,在数控系统中,目前通常采用异步方法进行控制,当主系统发出进行某一微操作控制信号后,等待子系统完成此操作后发回的“回答”信号或“结束”信号。但在具有多个子系统的数控系统中,如果主系统多个线程需要访问同一个资源,它们需要以某种顺序来确保该资源在某一特定时刻只能被一个线程所访问,如果使用异步方式进行控制,程序的运行结果将不可预料。



技术实现要素:

本发明实施例提供了一种子系统命令的同步方法及装置,以实现主系统对多个子系统的进行同步控制的目的。

第一方面,本发明实施例提供了一种子系统命令的同步方法,包括:

在向子系统发送命令时,选取所述命令对应的形式参数传入对应的命令,所述每个命令对应的形式参数不同,所述形式参数用于传递;

将所述形式参数插入预设的形参队列;

将所述命令的调用线程阻塞于预设的线程队列;

在接收到回应时,从所述形参队列中读取形式参数,判断所述回应是否与所述命令对应;

在所述回应与所述命令对应时,唤醒所述调用线程,得到所述命令处理结果。

进一步的,所述命令对应的形式参数包括:

所述命令的回应处理函数的指针。

相应的,在判断所述回应是否与所述命令对应之后,唤醒所述调用线程之前还包括:

从所述验证参数队列中取出所述命令的回应处理函数的指针,并利用所述回应处理函数判断所述回应是否正常;

相应的,所述在所述回应是否与所述命令对应时,唤醒所述调用线程,包括:

在所述回应与所述命令对应且正常时,唤醒所述调用线程。

进一步的,所述将所述回应处理线程阻塞于线程队列,包括:

设定所述阻塞的终止触发条件的最大响应时长;

所述方法还包括:

在最大响应时长内没有接收到回应时,唤醒所述调用线程以输出错误。

进一步的,在得到所述命令处理结果之后,还包括:

从所述形参队列中删除所述形式参数和从所述线程队列中删除所述调用线程。

更进一步的,所述方法还包括:

在所述回应与所述命令不对应时,等待接收所述命令的回应。

第二方面,本发明实施例还提供了一种子系统命令的同步装置,包括:

传入模块,用于在向子系统发送命令时,选取所述命令对应的形式参数传入对应的命令,所述每个命令对应的形式参数不同,所述形式参数用于传递;

插入模块,用于将所述形式参数插入预设的形参队列;

阻塞模块,用于将所述命令的调用线程阻塞于预设的线程队列;

第一判断模块,用于在接收到回应时,从所述形参队列中读取形式参数,判断所述回应是否与所述命令对应;

唤醒模块,用于在所述回应与所述命令对应时,唤醒所述调用线程,得到所述命令处理结果。

进一步的,所述命令对应的形式参数包括:

所述命令的回应处理函数的指针。

相应的,所述装置还包括:

第二判断模块,用于从所述验证参数队列中取出所述命令的回应处理函数的指针,并利用所述回应处理函数判断所述回应是否正常;

相应的,所述唤醒模块包括:

唤醒单元,用于在所述回应与所述命令对应且正常时,唤醒所述调用线程。

进一步的,述阻塞模块包括:

设定单元,用于设定所述阻塞的终止触发条件的最大响应时长;

所述装置还包括:

输出模块,用于在最大响应时长内没有接收到回应时,唤醒所述调用线程以输出错误。

进一步的,所述装置还包括:

从所述形参队列中删除所述形式参数和从所述线程队列中删除所述调用线程。

更进一步的,所述装置还包括:

等待模块,用于在所述回应与所述命令不对应时,等待接收所述命令的回应。

本发明实施例提供的子系统命令的同步方法和装置,通过将向子系统发送的命令的同时,将所述命令对应的形式参数传入命令中,并将所述形式参数存入预设的形参队列中,和将所述命令的调用线程阻塞于预设的线程队列中。在回应与命令对应时,唤醒所述调用线程。可以利用消息通知的方式实现多个子系统的命令同步,避免由于异步方式产生的程序错误。此外,由于其只需对消息队列接口进行封装即可实现命令同步,降低了软件设计的复杂度。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1是本发明实施例一提供的子系统命令的同步方法的流程示意图;

图2是本发明实施例二提供的子系统命令的同步方法的流程示意图;

图3是本发明实施例三提供的子系统命令的同步方法的流程示意图;

图4是本发明实施例四提供的子系统命令的同步方法的流程示意图;

图5是本发明实施例五提供的子系统命令的同步装置的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

实施例一

图1为本发明实施例一提供的子系统命令的同步方法的流程示意图,本实施例的方法适用于对包括多个子系统的数控系统中子系统命令进行同步的情况。可以由子系统命令的同步装置来执行,该装置可通过硬件和/或软件的方式实现,并一般可以应用于数控系统的主系统中。

参见图1,所述子系统命令的同步方法,包括:

s110,在向各个子系统发送命令时,选取每个所述命令对应的形式参数传入对应的命令,所述每个命令对应的形式参数不同,所述形式参数用于传递。

在控制系统中,通常包括主系统和子系统。其中,主系统用于控制整个系统,每个子系统可单独完成某一功能,并可和主系统进行交互。控制系统中通常可包括子系统。示例性的,所述控制系统为atm机,主系统可以为嵌入操作系统的pc系统,子系统可以包括:显示系统、存\取钞系统、计数系统、打印系统、传感系统和开\关门系统等。

在控制系统工作过程中,经常需要同时对多个子系统同时进行控制,例如:atm机在控制开\关门系统进行开关门操作时,需要从传感系统获取开关门的角度。在本实施例中,在主控系统向子系统发送命令时,选取每个所述命令对应的形式参数传入对应的命令。所述每个命令对应的形式参数不同。由于每个命令对应的子系统不同,其所对应的形式参数也不相同。形式参数是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数。示例性的,可以是地址或者指针等。例如:分配的该命令的回应的数据存储地址,或者回应存储地址的指针等。

s120,将所述形式参数插入预设的形参队列中。

队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。在本实施例中,预先建立形参队列。示例性的,可以在内存中静态分配或者动态申请一片连续的存储空间,并设置两个指针进行管理。一个是队头指针front,它指向队头元素;另一个是队尾指针rear,它指向下一个入队元素的存储位置。

采用队列存储是因为对某个子系统发送的命令不是唯一的,且各个命令之间存在着一定的时序关系,利用队列先进先出的特点,可以按照命令的顺序实现对同一个子系统命令的同步。

在本实施例中,预先建立一个队列,用以存储形式参数。可以将所述形式参数从队尾插入形参队列。

s130,在接收到回应时,从所述形参队列读取形式参数,判断所述回应是否与所述命令对应。

由于回应中包括所述命令中的形式参数,因此,根据回应中的形式参数和存储在形参队列中的形式参数的匹配结果判断所述回应是否与所述命令对应。示例性的,在接收到回应时,从形参队列中取出形式参数,将取出的形式参数和回应中传递的形式参数进行匹配,在匹配一致时,判断所述回应是子系统接收所述命令产生的回应。否则,等待下一个回应。

s140,将所述命令的调用线程阻塞于预设的线程队列。

每个命令都对应有至少一个线程。线程是进程中的一个实体,是被系统独立调度和分派的基本单位。线程也有就绪、阻塞和运行三种基本状态。就绪状态是指线程具备运行的所有条件,逻辑上可以运行,在等待处理机;运行状态是指线程占有处理机正在运行;阻塞状态是指线程在等待一个事件,例如可以为某个信号量,逻辑上不可执行。阻塞调用是指调用结果返回之前,当前线程会被挂起(线程进入非可执行状态,在这个状态下,cpu不会给线程分配时间片,即线程暂停运行)。函数只有在得到结果之后才会返回。通过对线程的阻塞,可以实现对回应的等待,实现对该命令的同步控制。

s150,在所述回应与所述命令对应时,唤醒所述调用线程,得到所述命令处理结果。

线程阻塞是在执行过程中暂停,以等待某个条件触发执行。在本实施例中,可以将触发条件设定为所述回应与所述命令对应。在所述回应与所述命令对应时,可以唤醒处于阻塞的线程,使线程从暂停状态转为执行。执行所述线程可以得到处理后的结果。

本发明实施例通过在向子系统发送的命令的同时,将所述命令对应的形式参数传入命令中,并将所述形式参数存入预设的形参队列中,和将所述命令的调用线程阻塞于预设的线程队列中。在回应与命令对应时,唤醒所述调用线程。可以利用消息通知的方式实现多个子系统的命令同步,避免由于异步方式产生的程序错误。此外,由于其只需对消息队列接口进行封装即可实现命令同步。降低了软件设计的复杂度

在本实施例的一个优选实施方式中,所述方法还包括:在所述回应与所述命令不对应时,等待接收所述命令的回应。在控制系统工作过程中,经常需要同时对子系统同时进行控制。从封装后的消息队列接口只能按照回应的顺序依次读出对应的回应。如果接收到子系统的回应与发送的命令不对应,则接收到的回应可能是其他子系统对其对应的命令的回应。因此,在子系统的回应与发送的命令不对应时,继续使调用线程处于暂停状态,等待子系统发送与所述命令对应的回应。

实施例二

图2为本发明实施例二提供的子系统命令的同步方法的流程示意图。本实施例以上述实施例为基础进行优化,将所述命令对应的形式参数具体优化为:所述命令的回应处理函数的指针。相应的,在判断所述回应是否与所述命令对应之后,唤醒所述调用线程之前增加如下步骤:从所述验证参数队列中取出所述命令的回应处理函数的指针,并利用所述回应处理函数判断所述回应是否正常;相应的,将所述在所述回应是否与所述命令对应时,唤醒所述调用线程,具体优化为:在所述回应与所述命令对应且正常时,唤醒所述调用线程。

参见图2,所述子系统命令的同步方法,包括:

s210,在向子系统发送命令时,选取所述命令的回应处理函数的指针传入对应的命令。

对于每个一个函数,其入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数。将命令的回应处理函数的指针作为形式参数嵌入到命令中,以使得在返回的回应中仍然存在回应处理函数的指针。

s220,将所述回应处理函数的指针插入预设的形参队列中。

s230,将所述命令的调用线程阻塞于预设的线程队列。

s240,在接收到回应时,从所述形参队列中取出回应处理函数的指针,判断所述回应是否与所述命令对应。

s250,从所述验证参数队列中取出所述命令的回应处理函数的指针,并利用所述回应处理函数判断所述回应是否正常。

由于子系统在对命令处理时,产生的回应可能出现错误。因此,在本实施例中,通过对回应处理函数进行处理,以判断回应是否正常。示例性的,通过从验证参数队列中取出所述命令的回应处理函数的指针,通过该指针获取回应处理函数的起始地址,对回应进行处理。并根据处理结果和正常的处理结果判断所述回应是否正常。

s260,在所述回应与所述命令对应且正常时,调用回应处理线程,得到所述命令处理结果。

在所述回应与所述命令对应时,可以确定接收到回应与所述命令是相对应的。因此,主系统调用回应处理进程对回应进行处理,以得到处理后的结果。

本实施例通过将所述命令对应的形式参数具体优化为:所述命令的回应处理函数的指针。相应的,在判断所述回应是否与所述命令对应之后,唤醒所述调用线程之前增加如下步骤:从所述验证参数队列中取出所述命令的回应处理函数的指针,并利用所述回应处理函数判断所述回应是否正常;相应的,将所述在所述回应是否与所述命令对应时,唤醒所述调用线程,具体优化为:在所述回应与所述命令对应且正常时,唤醒所述调用线程。可以在判断所述回应是否与所述命令对应的同时,对回应是否正常进行判断。

实施例三

图3为本发明实施例三提供的子系统命令的同步方法的流程示意图。本实施例以上述实施例为基础进行优化,将所述回应处理线程阻塞于线程队列,具体优化为:设定所述阻塞的终止触发条件的最大响应时长;相应的,增加如下步骤:在最大响应时长内没有接收到回应时,唤醒所述调用线程以输出错误。

参见图3,所述子系统命令的同步方法,包括:

s310,在向子系统发送命令时,选取所述命令对应的形式参数传入对应的命令,所述每个命令对应的形式参数不同,所述形式参数用于传递。

s320,将所述形式参数插入预设的形参队列。

s330,将所述命令的调用线程阻塞于预设的线程队列,设定所述阻塞的终止触发条件的最大响应时长。

响应时长可以是子系统接收到命令,并向控制系统返回的所需要的时长。最大响应时长可以根据子系统的通常响应时间来设定,应大于该子系统正常时的响应时长。可以由经验设定,示例性的,可以将最大响应时长设定为正常响应时长的2倍。

s340,在接收到回应时,从所述形参队列中读取形式参数,判断所述回应是否与所述命令对应。

s350,在所述回应与所述命令对应时,唤醒所述调用线程,得到所述命令处理结果。

s360,在最大响应时长内没有接收到回应时,唤醒所述调用线程以输出错误。

如果在最大响应时长内长内没有接收到回应,则有可能是该命令无法发送至子系统,子系统没有接收到该命令;或者子系统由于其本身的故障,在接收到命令后无法操作,致使无法产生回应。如果接收不到子系统的回应,调用线程则会长时间阻塞在线程队列中,致使后续的命令无法进行同步。影响整个系统的正常运行。在本实施例中,如果在最大响应时长内没有接收到所述命令的回应时,通过计时器触发唤醒调用线程,输出错误。以使得系统可以根据输出的错误及时调整。

本发明实施例通过将所述调用线程阻塞于线程队列,具体优化为:设定所述阻塞的终止触发条件的最大响应时长;相应的,增加如下步骤:在最大响应时长内没有接收到回应时,唤醒所述调用线程以输出错误。可以在无法接收到子系统的回应时,通过调用线程输出错误。可以避免调用线程长时间阻塞在线程队列中影响整个系统的正常运行。并可使得系统可以根据输出的错误及时调整。

实施例四

图4为本发明实施例四提供的子系统命令的同步方法的流程示意图。本实施例以上述实施例为基础进行优化,在得到所述命令处理结果之后,增加如下步骤:从所述形参队列中删除所述形式参数;从所述线程队列中删除所述调用线程。

参见图4,所述子系统命令的同步方法,包括:

s410,在向子系统发送命令时,选取所述命令对应的形式参数传入对应的命令,所述每个命令对应的形式参数不同,所述形式参数用于传递。

s420,将所述形式参数插入预设的形参队列。

s430,将所述命令的调用线程阻塞于预设的线程队列。

s440,在接收到回应时,从所述形参队列中读取形式参数,判断所述回应是否与所述命令对应。

s450,在所述回应与所述命令对应时,唤醒所述调用线程,得到所述命令处理结果。

s460,从所述形参队列中删除所述形式参数和从所述线程队列中删除所述调用线程。

在获取到命令的回应并对回应进行处理后,该命令的处理过程结束。形参队列中的形式参数和线程队列中的调用线程不会再使用。为了节省队列的存储空间,可以从所述形参队列中删除所述形式参数和从所述线程队列中删除所述调用线程。示例性的,由于所述形式参数和调用线程通常都处于队列的队头,可以从形参队列的队头取出所述形式参数,从线程队列的队头取出所述调用线程,实现对所述形式参数和调用线程的删除。

本实施例通过增加从所述形参队列中删除所述形式参数;从所述线程队列中删除所述调用线程。可以在对命令的回应处理完成后,从队列中删除相应的形式参数和调用线程,能够有效节约队列的存储空间。

实施例五

图5是本发明实施例五提供的子系统命令的同步装置的结构示意图,如图5所示,所述装置包括:

传入模块510,用于在向子系统发送命令时,选取所述命令对应的形式参数传入对应的命令,所述每个命令对应的形式参数不同,所述形式参数用于传递;

插入模块520,用于将所述形式参数插入预设的形参队列;

阻塞模块530,用于将所述命令的调用线程阻塞于预设的线程队列;

第一判断模块540,用于在接收到回应时,从所述形参队列中读取形式参数,判断所述回应是否与所述命令对应;

唤醒模块550,用于在所述回应与所述命令对应时,唤醒所述调用线程,得到所述命令处理结果。

本发明实施例提供的子系统命令的同步装置,通过在向子系统发送的命令的同时,将所述命令对应的形式参数传入命令中,并将所述形式参数存入预设的形参队列中,和将所述命令的调用线程阻塞于预设的线程队列中。在回应与命令对应时,唤醒所述调用线程。可以利用消息通知的方式实现多个子系统的命令同步,避免由于异步方式产生的程序错误。此外,由于其只需对消息队列接口进行封装即可实现命令同步。降低了软件设计的复杂度

在上述各实施例的基础上,所述命令对应的形式参数包括:

所述命令的回应处理函数的指针。

相应的,所述装置还包括:

第二判断模块,用于从所述验证参数队列中取出所述命令的回应处理函数的指针,并利用所述回应处理函数判断所述回应是否正常;

相应的,所述唤醒模块包括:

唤醒单元,用于在所述回应与所述命令对应且正常时,唤醒所述调用线程。

在上述各实施例的基础上,所述阻塞模块包括:

设定单元,用于设定所述阻塞的终止触发条件的最大响应时长;

所述装置还包括:

输出模块,用于在最大响应时长内没有接收到回应时,唤醒所述调用线程以输出错误。

在上述各实施例的基础上,所述装置还包括:

从所述形参队列中删除所述形式参数和从所述线程队列中删除所述调用线程。

在上述各实施例的基础上,所述装置还包括:

等待模块,用于在所述回应与所述命令不对应时,等待接收所述命令的回应。

本发明实施例所提供子系统命令的同步装置可用于执行本发明任意实施例提供的子系统命令的同步方法,具备相应的功能模块,实现相同的有益效果。

显然,本领域技术人员应该明白,上述本发明的各模块或各步骤可以通过如上所述的设备实施。可选地,本发明实施例可以用计算机装置可执行的程序来实现,从而可以将它们存储在存储装置中由处理器来执行,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等;或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件的结合。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1