实现本地主从模块间的通信的系统及方法
技术领域
本发明涉及设备内部通信领域,更具体地说,涉及一种实现本地主从模块间的通信的系统及方法。
背景技术
在工业产品中,除了通过现场总线与外部进行通信外,系统内部也存在大量的本地主从模块之间的通信。例如在可编程逻辑控制器(PLC)中,内部通信主要体现在主模块(例如主CPU)与本地模块(例如扩展模块)之间的通信。这些通信通常采用内部自定义的协议形式,比如通过总线方式通信或者SPI方式通信等,接口形式则是主模块和本地模块之间直接通过芯片口进行对接。
如图1所示,是现有主CPU和本地模块之间通信的示意图。在该方案中,主CPU与本地模块之间直接进行通信:主CPU将输入数据进行协议解析后按照通信协议发送至本地模块,由本地模块完成协议数据的输出;本地模块将外设的输入数据按照通信协议发送至主CPU,由主CPU完成协议数据的接收、解析和发送。在数据处理时序上,主CPU依次循环进行多任务数据处理。
上述系统中,主CPU在多任务处理过程中,数据的协议解析占用了主CPU的大量数据处理时间,从而降低了主CPU高效实时的数据处理性能,导致主CPU无法及时响应数据的输入输出,最终影响设备性能,甚至造成事故隐患。尤其是工业自动化高速控制领域,高效实时和稳定安全对于产品性能至关重要。
随着工业现代化的发展,工业产品不断向高速,高性能发展,对主从模块之间通信的可靠性和通信速度要求越来越高,协议也越趋复杂,除了数据量的增大,出错处理和冗余处理不断增加,这无疑更加重了主CPU的处理任务。
发明内容
本发明要解决的技术问题在于,针对上述系统主从模块间通信中协议解析占用主CPU过多资源的问题,提供一种实现本地主从模块间的通信的系统及方法。
本发明解决上述技术问题的技术方案是,提供一种实现本地主从模块间的通信的系统,用于实现同一设备的主模块和本地模块之间的通信,所述主模块包括主CPU,所述主模块还包括双口RAM以及软核处理器;所述双口RAM,用于存储所述主CPU和软核处理器写入的数据;所述软核处理器包括协议解析单元,该协议解析单元用于对主CPU写入双口RAM的数据进行协议解析后发送到本地模块,并将来自本地模块的数据进行协议解析后写入所述双口RAM;所述主CPU直接向所述双口RAM写入数据并从所述双口RAM读取软核处理器写入的数据;
所述双口RAM还存储有主CPU写入的执行命令及来自软核处理器的反馈命令;所述软核处理器包括命令执行单元及命令反馈单元;所述命令执行单元,用于根据从双口RAM读取的执行命令使所述协议解析单元实现双口RAM与本地模块之间的数据交互;所述命令反馈单元,用于在所述协议解析单元完成数据交互后向所述双口RAM写入反馈命令。
在本发明所述的实现本地主从模块间的通信的系统中,所述执行命令包括读数据命令,所述反馈命令包括读反馈命令;所述命令执行单元根据从双口RAM读取的读数据命令使所述协议解析单元对来自本地模块的数据进行数据解析并将解析的数据写入双口RAM;所述命令反馈单元在所述协议解析单元向双口RAM写入数据完成后向所述双口RAM写入读反馈命令;所述主CPU根据所述双口RAM中的读反馈命令从所述双口RAM读取数据。
在本发明所述的实现本地主从模块间的通信的系统中,所述执行命令包括写数据命令,所述反馈命令包括写反馈命令;所述命令执行单元根据从双口RAM读取的写数据命令使所述协议解析单元从双口RAM读取主CPU写入的数据并将读取的数据协议解析后发送给本地模块;所述命令反馈单元在所述协议解析单元向本地模块发送数据完成后向所述双口RAM写入写反馈命令。
在本发明所述的实现本地主从模块间的通信的系统中,所述双口RAM中的数据、执行命令及反馈命令分别存储于所述双口RAM的不同存储区。
在本发明所述的实现本地主从模块间的通信的系统中,所述设备为可编程逻辑控制器。
在本发明所述的实现本地主从模块间的通信的系统中,所述双口RAM以及软核处理器位于可编程逻辑控制器的复杂可编程逻辑器件中。
本发明还提供一种实现本地主从模块间的通信的方法,用于实现同一设备的主模块和本地模块之间的通信,所述主模块包括主CPU、双口RAM以及软核处理器,该方法包括以下步骤:
(a)所述主CPU将数据写入双口RAM,所述软核处理器对主CPU写入双口RAM的数据进行协议解析后发送到本地模块;
(b)所述软核处理器将来自本地模块的数据进行协议解析后写入所述双口RAM,所述主CPU从双口RAM读取软核处理器写入的数据;
所述步骤(a)包括:
(a1)所述主CPU向双口RAM写入读数据命令;
(a2)所述软核处理器根据从双口RAM读取的读数据命令使对来自本地模块的数据进行数据解析并将解析的数据写入双口RAM;
(a3)所述软核处理器在向双口RAM写入数据完成后向所述双口RAM写入读反馈命令;
(a4)所述主CPU根据所述双口RAM中的读反馈命令从所述双口RAM读取所述软核处理器写入的数据。
在本发明所述的实现本地主从模块间的通信的方法中,所述步骤(b)包括
(b1)所述主CPU向双口RAM写入数据以及写数据命令;
(b2)所述软核处理器根据从双口RAM读取的写数据命令使所述协议解析单元从双口RAM读取主CPU写入的数据并将该数据协议解析后发送给本地模块;
(b3)所述软核处理器在向本地模块发送数据完成后向所述双口RAM写入写反馈命令;
(b4)所述主CPU从双口RAM读取所述软核处理器写入的写反馈命令。
本发明的实现本地主从模块间的通信的系统及方法,通过软核处理器实现主从模块之间通信的协议解析,减少了主CPU资源占用,从而提高了系统内部通信的可靠性。此外,本发明独立划分双口RAM内存数据区,使得系统更加安全可靠,且通用性和可扩展性强。
附图说明
图1是现有主从模块之间通信的示意图。
图2是本发明实现本地主从模块间的通信的系统实施例的示意图。
图3是图2中软核处理器的实施例的示意图。
图4是本发明实现本地主从模块间的通信的方法实施例的示意图
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图2所示,是本发明实现本地主从模块间的通信的系统实施例的示意图,该系统用于实现同一设备的主模块和本地模块之间的通信。在本实施例中,系统包括主模块20和本地模块10,其中主模块20包括主CPU 21、双口RAM 221以及软核处理器222。上述的主模块20可以是可编程逻辑控制器(PLC)等,该可编程逻辑控制器上设有CPLD(复杂可编程逻辑器件)单元,双口RAM 221和软核处理器222即位于该CPLD单元,该CPLD单元通过逻辑接口223与本地模块10通信。本地模块10可以为设备的扩展模块。
双口RAM 221可通过总线与主CPU 21通信,并通过CPLD单元22的内部总线与软核处理器222通信。该双口RAM 221存储有主CPU 21和软核处理器222写入的数据。
软核处理器222用于实现主CPU 21与本地模块10之间通信数据的协议解析。具体地,该软核处理器222包括协议解析单元2221,该协议解析单元2221用于对主CPU 21写入双口RAM 221的数据进行协议解析后发送到本地模块10,并将来自本地模块10的数据进行协议解析后写入双口RAM 221,供主CPU21读取。
主CPU 21将从外部设备读取的数据直接写入双口RAM 221(而非协议解析后的数据),并从双口RAM 221读取软核处理器222写入的数据。
如图3所示,在上述实现本地主从模块间的通信的系统的一个具体应用中,双口RAM 221除了存储有主CPU 21及软核处理器222的数据外,还存储有主CPU 21写入的执行命令及来自软核处理器222的反馈命令,并且上述数据、执行命令及反馈命令分别存储于双口RAM 221的不同存储区。软核处理器222则除了包括协议解析单元2222’外,还包括命令执行单元2221’及命令反馈单元2223’。
命令执行单元2221’用于根据从双口RAM 221读取的执行命令(该执行命令由主CPU 21写入)使协议解析单元2222’实现双口RAM与本地模块之间的数据交互。命令反馈单元2223’用于在协议解析单元2222’完成数据交互后向双口RAM 221写入反馈命令,以通知主CPU 21相应的操作完成。
具体地,主CPU 21写入到双口RAM 221的执行命令包括读数据命令,相应地,软核处理器222写入到双口RAM 221的反馈命令包括读反馈命令。软核处理器222的命令执行单元2221’根据从双口RAM RAM读取的读数据命令使协议解析单元2222’对来自本地模块10的数据进行数据解析并将解析的数据写入双口RAM 221中存储数据的区域。命令反馈单元2223’在协议解析单元2222’向双口RAM 221写入数据完成后向双口RAM 221写入读反馈命令。主CPU 21根据双口RAM 221中的读反馈命令从双口RAM 221的存储数据的区域读取数据。
此外,主CPU 21写入到双口RAM 221的执行命令包括写数据命令,相应地,软核处理器222写入到双口RAM 221的反馈命令包括写反馈命令。软核处理器222的命令执行单元2221’根据从双口RAM 221读取的写数据命令使协议解析单元2222’从双口RAM 221读取主CPU 21写入的数据并将读取的数据协议解析后发送给本地模块10。命令反馈单元2223’在协议解析单元2222’向本地模块10发送数据完成后向双口RAM 221写入写反馈命令。
上述系统在数据处理时序上,主CPU 21释放协议解析的数据处理时间后,多任务处理与软核处理器222的协议解析同步进行,也提升了系统与本地模块之间的通信协议交互效率和实时性。
本发明还提供一种实现本地主从模块间的通信的方法,该方法用于实现同一设备的主模块和本地模块之间的通信,其中主模块包括主CPU、双口RAM以及软核处理器,该方法包括以下步骤:
(a)主CPU将数据写入双口RAM,软核处理器对主CPU写入双口RAM的数据进行协议解析后发送到本地模块;
(b)软核处理器将来自本地模块的数据进行协议解析后写入双口RAM,主CPU从双口RAM读取软核处理器写入的数据。
上述步骤(a)、(b)相互独立,在执行时无时间先后顺序。
如图4所示,是上述方法具体实现的示意图。主CPU与软核处理器之间通过双口RAM进行通信协议交互,主CPU输入输出至外部模块,软核处理器输入输出至本地模块。其流程主要包括以下三种:
(1)主CPU读数据
主CPU向双口RAM的执行命令区写入指令CPU_x;软核处理器从双口RAM的执行命令区读取指令CPU_x,将本地模块输入数据进行协议解析后,写入双口RAM数据区,并向双口RAM的反馈命令区写入指令SK_x;主CPU从双口RAM的反馈命令区读取指令SK_x,然后从双口RAM数据区读取数据并输出至外部;完成主CPU读数据。
(2)主CPU写数据
主CPU将外部输入数据写入双口RAM数据区,然后向双口RAM的执行命令区写入指令CPU_x;软核处理器从双口RAM的执行命令区读取指令CPU_x,再读取双口RAM数据区的数据,将数据进行协议解析后,输出给本地模块,再向双口RAM的反馈命令区写入指令SK_x;主CPU从双口RAM的反馈命令区读取指令SK_x;完成主CPU写数据。
(3)软核处理器写数据
软核处理器将本地模块输入数据进行协议解析后,直接写入双口RAM数据区;主CPU直接从双口RAM数据区读取数据。
上述系统及方法中,软核处理器完成数据处理环节中的协议解析,同时与主CPU和本地模块进行通信协议交互;主CPU在数据处理环节仅需完成协议数据的输入输出,基本不占用主CPU的处理时间,甚至可以忽略,极大的提高了主CPU的高效实时性能。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。