CN115665020B - 通信解析方法、装置、设备和存储介质 - Google Patents
通信解析方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN115665020B CN115665020B CN202211405559.3A CN202211405559A CN115665020B CN 115665020 B CN115665020 B CN 115665020B CN 202211405559 A CN202211405559 A CN 202211405559A CN 115665020 B CN115665020 B CN 115665020B
- Authority
- CN
- China
- Prior art keywords
- event
- instruction
- target instruction
- parameters
- target
- 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
- 238000004891 communication Methods 0.000 title claims abstract description 49
- 238000004458 analytical method Methods 0.000 title claims abstract description 32
- 238000003860 storage Methods 0.000 title claims description 6
- 239000003550 marker Substances 0.000 claims description 72
- 238000000034 method Methods 0.000 claims description 36
- 238000004590 computer program Methods 0.000 claims description 12
- 238000012423 maintenance Methods 0.000 abstract description 6
- 238000011161 development Methods 0.000 description 11
- 230000005540 biological transmission Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- WHXSMMKQMYFTQS-UHFFFAOYSA-N Lithium Chemical compound [Li] WHXSMMKQMYFTQS-UHFFFAOYSA-N 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000009776 industrial production Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 229910052744 lithium Inorganic materials 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/02—Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明涉及一种通信解析方法,包括:生成配置文件,所述配置文件包括事件、设备、指令模板、参数字典,其中,每一所述事件至少与一所述设备关联,每一所述事件对应每一关联设备设置所述指令模板和所述参数字典;所述参数字典为事件参数与指令参数的键值对;获取目标事件,根据所述目标事件通过所述配置文件匹配该目标事件下所有设备的目标指令模板;获取事件参数,针对每一设备,根据对应的所述目标指令模板和所述事件参数通过所述配置文件匹配对应目标指令参数,将对应的所述目标指令模板与对应的所述目标指令参数进行融合,生成目标指令。相对于现有技术,本发明能够快速实现上位机与多种PLC设备的通信,维护成本低,且扩展性强。
Description
技术领域
本发明涉及通信协议技术领域,尤其是涉及一种通信解析方法、装置、电子设备和计算机可读存储介质。
背景技术
现有动力锂电池生产设备主要以PLC配合上位机进行协同控制为运作基础,PLC控制运动和其他设备的硬件部分,上位机负责结果处理和数据回传。
然而通常在工业生产中,上位机和PLC通信采用的方式多种多样,通信协议以及通信内容也各式各样。例如,对于两个不同的PLC设备,由于开发人员替换和项目进度规划问题导致不同PLC设备的指令格式不同,甚至指令长度都完全不同,在传统开发过程中则需要根据两台PLC不同的指令表开发两套独立的通信解析代码进行适配,费时费力,且面对的PLC设备越多,开发周期越长,长期开发维护成本越高,开发人员沟通越复杂。
发明内容
本发明的目的在于克服现有技术的缺点与不足,提供一种通信解析方法,能够快速实现上位机与多种PLC设备的通信,维护成本低,且扩展性强。
本发明是通过以下技术方案实现的:一种通信解析方法,包括步骤:
生成配置文件,所述配置文件包括事件、设备、指令模板、参数字典,其中,每一所述事件至少与一所述设备关联,每一所述事件对应每一关联设备设置所述指令模板和所述参数字典;所述参数字典为事件参数与指令参数的键值对;
获取目标事件,根据所述目标事件通过所述配置文件匹配该目标事件下所有设备的目标指令模板;
获取事件参数,针对每一设备,根据对应的所述目标指令模板和所述事件参数通过所述配置文件匹配对应目标指令参数,将对应的所述目标指令模板与对应的所述目标指令参数进行融合,生成目标指令。
相对于现有技术,本发明能够轻松兼容多种设备指令,快速衔接不同PLC指令需求,当PLC指令需求出现新增或发生变化,只需通过配置文件对事件、设备、指令模板等进行改动,而无需改动源码,从而可以提高开发效率,降低维护成本。
进一步地,所述指令模板包括指令头和替换位,所述替换位包括第一替换标记符、第二替换标记符和索引,所述第一替换标记符为所述替换位的起始标记,所述第二替换标记符为所述替换位的结束标记,所述索引设置在所述第一替换标记符和第二替换标记符之间;
根据对应的所述目标指令模板和所述事件参数通过所述配置文件匹配对应目标指令参数,将对应的所述目标指令模板与对应的所述目标指令参数进行融合,生成目标指令,包括步骤:
逐位读取所述目标指令模板;
当读取到所述第一替换标记符时,进行符号栈入栈;
当读取到所述第二替换标记符时,若符号栈顶为所述第一替换标记符,则出栈;
当符号栈不为空时,将当前读取的所述目标指令模板的字符入队到第一字符队列;
当符号栈为空时,将当前读取的所述目标指令模板字符入队到第二字符队列;
当符号栈为空且第一字符队列不为空时,根据第一字符队列中字符串在配置文件中索引到对应的参数字典,根据所述事件参数通过该参数字典匹配目标指令参数,并逐位入队到所述第一字符队列;
所述目标指令模板读取结束后,确定所述第一字符队列中的字符串为目标指令。
进一步地,对于事件参数为变量参数的事件,在根据对应目标指令模板和事件参数通过配置文件匹配对应目标指令参数后,包括步骤:对所述目标指令参数赋值。
基于同一发明构思,本申请还提供一种通信解析方法,包括步骤:
生成配置文件,所述配置文件包括事件、设备、指令模板、参数字典,其中,每一所述事件至少与一所述设备关联,每一所述事件对应每一关联设备设置所述指令模板和所述参数字典;所述参数字典为事件参数与指令参数的键值对;
获取目标指令,根据所述目标指令通过所述配置文件匹配目标指令模板,并获取目标事件;
根据所述目标指令模板获取所述目标指令中的目标指令参数,根据所述目标指令参数通过所述配置文件匹配目标事件参数。
基于同一发明构思,本申请还提供一种通信解析方法,其特征在于,包括步骤:
生成配置文件,所述配置文件包括事件、设备、指令模板、参数字典,其中,每一所述事件至少与一所述设备关联,每一所述事件对应每一关联设备设置所述指令模板和所述参数字典;所述参数字典为事件参数与指令参数的键值对;
获取目标指令,根据所述目标指令通过指令集字典匹配目标指令模板并获取目标事件,所述指令集字典中存储所有接收事件的指令头;
根据所述目标指令模板获取所述目标指令中的目标指令参数,根据所述目标指令参数通过所述配置文件匹配目标事件参数。
进一步地,所述指令模板包括指令头和替换位,所述替换位包括第一替换标记符、第二替换标记符和索引,所述第一替换标记符为所述替换位的起始标记,所述第二替换标记符为所述替换位的结束标记,所述索引设置在所述第一替换标记符和第二替换标记符之间;
根据所述目标指令模板获取所述目标指令中的目标指令参数,包括步骤:
逐位读取所述目标指令模板;
当读取到第一替换标记符时,进行符号栈入栈;
当读取到第二替换标记符时,若符号栈顶为所述第一替换标记符,则出栈;
当符号栈不为空时,将当前读取的所述目标指令模板的字符入队到第一字符队列;
当符号栈为空时,取出所述第一字符队列中字符串,并根据该字符串在所述配置文件中索引到对应的参数字典,根据所述目标指令参数通过该参数字典匹配目标事件参数。
基于同一发明构思,本申请还提供一种通信解析装置,其特征在于,包括:
配置模块,用于生成配置文件,所述配置文件包括事件、设备、指令模板、参数字典,其中,每一所述事件至少与一所述设备关联,每一所述事件对应每一关联设备设置所述指令模板和所述参数字典;所述参数字典为事件参数与指令参数的键值对;
目标指令模板获取模块,用于获取目标事件,根据所述目标事件通过所述配置文件匹配该目标事件下所有设备的目标指令模板;
目标指令生成模块,用于获取事件参数,针对每一设备,根据对应的所述目标指令模板和所述事件参数通过所述配置文件匹配对应目标指令参数,将对应的所述目标指令模板与对应的所述目标指令参数进行融合,生成目标指令。
基于同一发明构思,本申请还提供一种通信解析装置,其特征在于:
配置模块,用于生成配置文件,所述配置文件包括事件、设备、指令模板、参数字典,其中,每一所述事件至少与一所述设备关联,每一所述事件对应每一关联设备设置所述指令模板和所述参数字典;所述参数字典为事件参数与指令参数的键值对;
目标指令模板获取模块,用于获取目标指令,根据所述目标指令通过指令集字典匹配目标指令模板并获取目标事件,所述指令集字典中存储所有接收事件的指令头;
目标事件参数获取模块,用于根据所述目标指令模板获取所述目标指令中的目标指令参数,根据所述目标指令参数通过所述配置文件匹配目标事件参数。
基于同一发明构思,本申请还提供一种电子设备,包括:
处理器;
存储器,用于存储由所述处理器执行的计算机程序;
其中,所述处理器执行所述计算机程序时实现上述方法的步骤。
基于同一发明构思,本申请还提供一种计算机可读存储介质,其上存储由计算机程序,所述计算机程序被执行时实现上述方法的步骤。
为了更好地理解和实施,下面结合附图详细说明本发明。
附图说明
图1为一个示例性的通信解析方法的应用环境示意图;
图2为实施例1的通信解析方法的流程示意图;
图3为一示例性的配置文件示意图;
图4为示例一的发送事件的目标指令生成代码;
图5为示例一的配置文件的事件设备列表;
图6为示例二的发送事件的配置文件事件列表;
图7为示例三的发送事件的配置文件事件列表;
图8为示例三的发送事件的目标指令生成代码;
图9为实施例2的通信解析方法的流程示意图;
图10为示例四接收事件的配置文件事件列表;
图11为示例四的事件参数获取代码;
图12为示例五接收事件的配置文件事件列表;
图13为示例五的时间参数获取代码;
图14为一个实施例的通信解析装置的结构示意图;
图15为另一个实施例的通信解析装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施例方式作进一步地详细描述。
应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请的描述中,需要理解的是,术语“第一”、“第二”、“第三”等仅用于区别类似的对象,而不必用于描述特定的顺序或先后次序,也不能理解为指示或暗示相对重要性。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本申请中的具体含义。此外,在本申请的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
本发明通过语义化的配置文件和解析器实现设备指令与设备事件分离,实现不同设备之间通信的快速开发和快速切换,降低对接指令事件的开发成本。具体通过以下实施例进行说明。
请参阅图1,其为一个示例性的通信解析方法的应用环境示意图,包括上位机101、解析器102和PLC设备103,上位机101是可以直接发出操控命令的计算机,解析器102是包括存储有计算机程序的存储器和可运行存储器中的计算机程序的处理器,PLC设备103是一种具有微处理机的数字电子设备。在上位机101向PLC设备103发出控制指令时,上位机101发出待执行任务的事件信息,解析器102接收上位机101所发出的事件信息并通过实施例1的通信解析方法对该事件信息进行解析,得到对应的指令信息,PLC设备103接收该指令信息并执行相关指令。在PLC设备103向上位机101返回响应指令时,PLC设备103发出响应的指令信息,解析器102接收该指令信息并通过实施例2的通信解析方法对该事件信息进行解析,得到对应的事件信息,上位机101接收该事件信息。
请参阅图2,其为实施例1的通信解析方法的流程示意图,该方法包括如下步骤:
S11:生成配置文件;
S12:获取目标事件,根据目标事件通过配置文件匹配该目标事件下所有设备的目标指令模板;
S13:获取事件参数,针对每一设备,根据对应目标指令模板和事件参数通过配置文件匹配对应目标指令参数,将对应目标指令模板与对应目标指令参数进行融合,生成目标指令。
在步骤S11中,配置文件为包括事件、设备、指令模板、参数字典及相关信息的设置文件,将事件与各设备对应的指令模板及参数字典关联。其中,一个事件可设置对应多个设备,同一设备可设置在多个事件下,对应一事件下的每一设备设置一个指令模板及指令模板对应的参数字典。设备可以是下位机、PLC控制器等。
指令模板可从与PLC协商的指令表中提取。指令模板包括指令头和替换位,其中指令头为原始指令中的固定部分,作为指令模板的唯一标签;替换位为原始指令中的可变部分,可通过一对替换标记符和顺序索引表示,如可用“{0}”来进行表示,“{”为替换部分的起始替换标记符,“0”为顺序索引,“}”为替换部分的结束替换标记符。通过顺序索引定位不同替换位对应的参数字典,因此可变量在模板中可以灵活的调换顺序,并且实现多版本指令的向前兼容,只需要递增序号即可。
每一替换为对应有一参数字典,参数字典为事件参数与指令参数的键值对。
事件通过事件参数来描述事件所要传递的信息。事件参数可分为状态参数、常量参数和变量参数,其中,状态参数用于表示状态事件的不同状态,例如,PLC通知扫码枪开始扫码后,返回扫码枪的启动状态,对应事件为扫描起始事件,事件参数包括“SUCCESS”和“FAILED”,事件参数为“SUCCESS”时,表示扫码枪的启动状态正常;事件参数为“FAILED”时,表示扫码枪的启动失败。常量参数用于常量事件,常量事件如心跳事件等不具有状态变化,因此常量参数为空。变量参数用于表示变量事件中的变量值,通常用于传值任务。事件可分为多种类型,如根据传输方向可分为发送事件、接收事件等。
对于事件参数为变量参数的事件,在根据对应目标指令模板和事件参数通过配置文件匹配对应目标指令参数后,还包括步骤:对目标指令参数赋值。
指令参数为指令模板的替换部分的替换内容,指令参数与事件参数具有一一对应的关系,通过指令参数可以查询事件参数,反之,通过事件参数可以查询指令参数。指令模板的替换部分替换为指令参数后,即为上位机与PLC之间传输的指令。在一可选实施例中,针对变量事件的变量索引位,对应的指令参数可以通过花括号进行替换量长度的限制,比如{000000},花括号内为6个字符,则传入的变量内容也将为6个字符串,通过解析模式的变体,集成实现了传入内容的长度验证。
示例性的,某PLC的一TCP指令为“MZJCXX000000000000000000000000000000000K”,其中,第5、6位“X”“X”为可变部分,分别表示两个产品的检测结果,当“X”为“Y”表示对应产品合格;当“X”为“N”表示对应产品不合格,其余为固定部分。则对应提取的指令模板为“MZJC{0}{1}000000000000000000000000000000000K”,其中,替换部分为“{0}”“{1}”,对应产品合格的事件参数为“Running”,指令参数为“Y”;对应产品不合格的事件参数为“Paused”,指令参数为“N”。
在一可选实施例中,配置文件包括紧急事件设置,即将事件设置为紧急或不紧急,当事件为紧急事件,则该事件被传输时阻塞当前消息缓冲队列,直接发送该紧急事件。
在一可选实施例中,配置文件包括设备发送时间间隔设置。由于PLC的I/O吞吐速率较低,上位机密集发包容易造成TCP粘包无法解析,通过设置发送时间间隔可以进行适当限制。
请参阅图3,其为一示例性的配置文件示意图。其中各个字段的说明如下:
Project:配置项目名称;
Version:配置项目版本;
maxLength:限制全局指令最大长度,默认为0则不做限制;
events:事件列表:
eventName:事件名称,作为事件的标识码;
description:事件的描述,增强可读性;
eventType:事件类型,包含发送和接收事件两大类 (SEND & RECEIVED),由枚举类型定义;
isEmergency:是否为紧急事件;
device:事件设备列表;
devName:设备名称,与设备配置列表中的设备名称唯一对应;
template:指令模板;
length:指令长度,用于指令长度校验,当默认为0,则不校验;
contents:参数字典;
devices:设备配置列表;
devName:唯一设备名称;
type:设备类型;
connect:设备连接地址;
timeout:设备连接超时;
maxLength:设备最大指令长度限制;
pollingInterval:发送时间间隔。
为了更进一步抽象配置文件结构以应对今后更高级和复杂的业务需求,如结构体序列化通信、上位机和上位机的通信,在一优选实施例中,可通过如下步骤生成配置文件:
通过Protobuf模板和生成器生成对应语言的接口代码;
通过接口代码创建数据结构的对象实例;
将对象实例序列化为JSON文本,即配置文件。
以上生成配置文件的步骤使用了自动导出的方式,避免了手写 JSON 全文可能出现的编辑错误,且在将配置文件反序列化到数据结构的时候,可以连带实现配置文件合法性的检查。
在步骤S12中,获取目标事件,根据目标事件通过配置文件匹配该目标事件下所有设备的目标指令模板;
目标事件为上位机将发送的事件。根据目标事件,在配置文件中进行匹配,得到目标事件下所有设备的指令模板,即目标指令模板。根据目标事件,在匹配文件中进行匹配,在目标事件下所有设备的参数字典中查询得到对应的指令参数。
在步骤S13中,针对每一设备,根据目标指令模板和事件参数通过配置文件匹配目标指令参数,将目标指令模板与对应目标指令参数进行融合时,将目标指令模板的替换位替换为对应的目标指令参数,生成目标指令,包括如下步骤:
逐位读取目标指令模板;
当读取到第一替换标记符时,进行符号栈入栈,其中,第一替换标记符为替换部分的起始标记符;
当读取到第二替换标记符时,检查符号栈顶是否为第一替换标记符,若是则出栈,若否则报告符号匹配错误,其中,第二替换标记符为替换部分的结束标记符;
当符号栈不为空时,将当前读取的目标指令模板的字符入队到第一字符队列;
当符号栈为空时,将当前读取的目标指令模板字符入队到第二字符队列;
当符号栈为空且第一字符队列不为空时,根据第一字符队列中字符串在配置文件中索引到对应的参数字典,根据事件参数通过该参数字典匹配目标指令参数,并逐位入队到第一字符队列;
目标指令模板读取结束后,第一字符队列中的字符串确定为目标指令。
基于上述通信解析方法,以下介绍若干示例性实施:
示例一,请同时参阅图4和图5,图4为示例一的发送事件的目标指令生成代码;图5为示例一的配置文件的事件设备列表。该发送事件为状态事件,在获取状态事件的目标指令时,传入事件名称“RunEvent”和事件的状态参数“Running”。对应返回的结果为一个可枚举的数组,其中包括事件设备列表中的所有设备名称和对应的目标指令,目标指令为目标指令模板的指令头和状态参数“Running”对应的指令参数的组合。
示例二,请参阅图6,其为示例二的发送事件的配置文件事件列表。该示例的发送事件为常量事件,为心跳事件,没有变化的事件参数,参数字典设置为空,指令模板可直接作为目标指令进行信息传递。
示例三,请同时参阅图7和图8,图7为示例三的发送事件的配置文件事件列表;图8为示例三的发送事件的目标指令生成代码。该发送事件为变量事件,该示例的变量事件为上料事件,其需要传递的信息为上料位置的坐标,对应的目标指令模板的替换位对应四个坐标参数设置。在获取变量事件的目标指令时,传入事件名称和各个事件参数及指令参数的赋值,最终得到的目标指令为“QD00000000000000000100000100000200000200”。
请参阅图9,其为实施例2的通信解析方法的流程示意图,该方法包括如下步骤:
S21:生成配置文件;
S22:获取目标指令,根据目标指令通过配置文件匹配目标指令模板,并获取目标事件;
S23:根据目标指令模板获取目标指令中的目标指令参数,根据目标指令参数通过配置文件匹配目标事件参数。
步骤S21与上述实施例1的通信解析方法相同,在此不再赘述。
步骤S22中,目标指令为来自PLC控制器、下位机的指令。根据目标指令,在配置文件中匹配固定部分与目标指令相同的指令模板为目标指令模板,目标指令模板所在事件为目标事件。在一可选实施例中,可同时获取目标设备,根据目标设备在配置文件中匹配相同设备,在相同设备独赢的指令模板中匹配固定部分与目标指令相同的指令模板为目标指令模板。
在一可选实施例中,根据目标指令通过指令集字典匹配目标指令模板并获取目标事件,指令集字典中存储所有接收事件的指令头,即指令模板的固定部分。由此可将接收到的指令快速匹配到对应事件,自动实现分流处理。如果收到的内容不在指令集字典范围内,比如由于 PLC 性能不足,发送缓冲区溢出后产生了不可控字符,则可以根据字典判断后进行忽略或者报警,而传统实现往往由于开发流程复杂,逻辑和业务代码耦合紧密,对未知指令基本不设校验,从而导致解析和控制动作异常。
在一优选实施例中,为了应对TCP发包速度较快出现粘包问题的现象,在此提出一种通用指令集结构:<唯一指令头><指令内容><通用尾字符>。在开启分包模式下,根据通用尾字符,如常量关键字000END,进行截流,<通用尾字符>后面的部分继续走下一个指令解析、替换和验证过程,同时由于为每个事件模板都配备了长度 length 属性,可以在截流前后交叉验证指令长度是否符合定义,避免只用长度限制或者尾字符截断导致的错误传递。
步骤S23中,根据目标指令模板和目标指令通过配置文件匹配目标指令参数,包括如下步骤:
逐位读取目标指令模板;
当读取到第一替换标记符时,进行符号栈入栈,其中,第一替换标记符为替换部分的起始标记符;
当读取到第二替换标记符时,检查符号栈顶是否为第一替换标记符,若是则出栈,若否则报告符号匹配错误,其中,第二替换标记符为替换部分的结束标记符;
当符号栈不为空时,将当前读取的目标指令模板的字符入队到第一字符队列;
当符号栈为空时,取出第一字符队列中字符串,并根据该字符串在配置文件中索引到对应的参数字典,根据目标指令参数通过该参数字典匹配目标事件参数。
基于上述通信解析方法,以下介绍若干示例性实施:
示例四,请同时参阅图10和图11,图10为示例四接收事件的配置文件事件列表;图11为示例四的事件参数获取代码。该接收事件为状态事件,用于获取扫码枪的启动状态。在获取事件状态时,传入设备名称和目标指令,返回的结果为一个可枚举的事件序列,包括事件名称和对应的时间参数。
示例五,请同时参阅图12和图13,图12为示例五接收事件的配置文件事件列表;图13为示例五的时间参数获取代码。该接收事件为变量事件,用于获取PLC控制器所传输的数值,获取时传入设备名称和目标指令,返回结果为包括事件名称和为具体数值的事件参数。
在一个可选实施例中,上述实施例的步骤S12-S13、步骤S22-S23的执行,可以通过将执行步骤S12-S13、步骤S22-S23的代码封装为一个类来进行调用执行,以下将封装的这个类称为解析器。首先创建解析容器,在通信中首次需要解析时,通过解析容器来获取解析器,并将解析器实例化,得到解析实例,通过执行解析实例可完成解析;在后续通信中需要解析时,可直接调用执行该解析实例。由此,实现步骤S12-S13、步骤S22-S23的模块化,将解析实例采用容器化隔离,每个设备通过注册对应的设备配置即可获得带有实例和域内变量的容器,由模块来提供注册和统一管理,避免开发、维护上的繁琐和一些潜在的跨设备攻击风险。同时如果注册的设备继承了通用的接口,则也会在容器内注册为该接口的实现,即可以通过调用容器内的接口类自动注入到具体实例实现,比如一开始使用了一个开源的TCP客户端实现,后因为业务需要对具体的发包请求有了更细致的控制要求,就可以在原有接口不变的基础上进行具体实现。通过注入到接口实现达到快速替换模块而不需要变动接口的效果,大大减少开发周期。通过一个极其轻量的函数转发调用,同样实现了内部功能和外部实现的解耦,且几乎无性能和空间损失。同时,由于解析器本身也处于容器内,可以任意调用和替换,实现了内外双模块化处理,在开发方面非常灵活。
相对于现有技术,本发明能够轻松兼容多种设备指令,快速衔接不同PLC指令需求,当PLC指令需求出现新增或发生变化,只需通过配置文件对事件、设备、指令模板等进行改动,而无需改动源码,从而可以提高开发效率,降低维护成本。此外,目标指令的自动生成,可以避免人工指令拼接的错误,提高通信准确率。
基于同一发明构思,本申请还提供一种通信解析装置。请参阅图14,其为一个实施例的通信解析装置的结构示意图,该装置包括配置模块11、目标指令模板获取模块12和目标指令生成模块13,其中配置模块11用于生成配置文件,所述配置文件包括事件、设备、指令模板、参数字典,其中,每一所述事件至少与一所述设备关联,每一所述事件对应每一关联设备设置所述指令模板和所述参数字典;所述参数字典为事件参数与指令参数的键值对;目标指令模板获取模块12用于获取目标事件,根据所述目标事件通过所述配置文件匹配该目标事件下所有设备的目标指令模板;目标指令生成模块13用于获取事件参数,针对每一设备,根据对应的所述目标指令模板和所述事件参数通过所述配置文件匹配对应目标指令参数,将对应的所述目标指令模板与对应的所述目标指令参数进行融合,生成目标指令。
进一步,目标指令生成模块13用于逐位读取目标指令模板;当读取到第一替换标记符时,进行符号栈入栈,其中,第一替换标记符为替换部分的起始标记符;当读取到第二替换标记符时,检查符号栈顶是否为第一替换标记符,若是则出栈,若否则报告符号匹配错误,其中,第二替换标记符为替换部分的结束标记符;当符号栈不为空时,将当前读取的目标指令模板的字符入队到第一字符队列;当符号栈为空时,将当前读取的目标指令模板字符入队到第二字符队列;当符号栈为空且第一字符队列不为空时,根据第一字符队列中字符串在配置文件中索引到对应的参数字典,根据事件参数通过该参数字典匹配目标指令参数,并逐位入队到第一字符队列;目标指令模板读取结束后,第一字符队列中的字符串确定为目标指令。
基于同一发明构思,本申请还提供另一种通信解析装置。请参阅图15,其为一个实施例的通信解析装置的结构示意图,该装置包括配置模块21、目标指令模板获取模块22和目标事件参数获取模块23,其中,配置模块21用于生成配置文件,所述配置文件包括事件、设备、指令模板、参数字典,其中,每一所述事件至少与一所述设备关联,每一所述事件对应每一关联设备设置所述指令模板和所述参数字典;所述参数字典为事件参数与指令参数的键值对;目标指令模板获取模块22用于根据所述目标指令通过指令集字典匹配目标指令模板并获取目标事件,所述指令集字典中存储所有接收事件的指令头;目标事件参数获取模块23用于根据所述目标指令模板获取所述目标指令中的目标指令参数,根据所述目标指令参数通过所述配置文件匹配目标事件参数。
进一步,目标事件参数获取模块23用于逐位读取目标指令模板;当读取到第一替换标记符时,进行符号栈入栈,其中,第一替换标记符为替换部分的起始标记符;当读取到第二替换标记符时,检查符号栈顶是否为第一替换标记符,若是则出栈,若否则报告符号匹配错误,其中,第二替换标记符为替换部分的结束标记符;当符号栈不为空时,将当前读取的目标指令模板的字符入队到第一字符队列;当符号栈为空时,取出第一字符队列中字符串,并根据该字符串在配置文件中索引到对应的参数字典,根据目标指令参数通过该参数字典匹配目标事件参数。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关细节之处请参见方法实施例的说明。
基于同一发明构思,本申请还提供一种电子设备,可以是服务器、台式计算设备或移动计算设备(例如,膝上型计算设备、手持计算设备、平板电脑、上网本等)等终端设备。该设备包括一个或多个处理器和存储器,其中处理器用于执行程序实现方法实施例的通信解析方法;存储器用于存储可由所述处理器执行的计算机程序。
基于同一发明构思,本申请还提供一种计算机可读存储介质,与前述通信解析方法的实施例相对应,所述计算机可读存储介质其上存储有计算机程序,该程序被处理器执行时实现上述任一实施例所记载的通信解析方法的步骤。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,则本发明也意图包含这些改动和变形。
Claims (10)
1.一种通信解析方法,其特征在于,包括步骤:
生成配置文件,所述配置文件包括事件、设备、指令模板、参数字典,其中,每一所述事件至少与一所述设备关联,每一所述事件对应每一关联设备设置所述指令模板和所述参数字典;所述参数字典为事件参数与指令参数的键值对;
获取目标事件,根据所述目标事件通过所述配置文件匹配该目标事件下所有设备的目标指令模板;
获取事件参数,针对每一设备,根据对应的所述目标指令模板和所述事件参数通过所述配置文件匹配对应目标指令参数,将对应的所述目标指令模板与对应的所述目标指令参数进行融合,生成目标指令。
2.根据权利要求1所述的方法,其特征在于,所述指令模板包括指令头和替换位,所述替换位包括第一替换标记符、第二替换标记符和索引,所述第一替换标记符为所述替换位的起始标记,所述第二替换标记符为所述替换位的结束标记,所述索引设置在所述第一替换标记符和第二替换标记符之间;
根据对应的所述目标指令模板和所述事件参数通过所述配置文件匹配对应目标指令参数,将对应的所述目标指令模板与对应的所述目标指令参数进行融合,生成目标指令,包括步骤:
逐位读取所述目标指令模板;
当读取到所述第一替换标记符时,进行符号栈入栈;
当读取到所述第二替换标记符时,若符号栈顶为所述第一替换标记符,则出栈;
当符号栈不为空时,将当前读取的所述目标指令模板的字符入队到第一字符队列;
当符号栈为空时,将当前读取的所述目标指令模板字符入队到第二字符队列;
当符号栈为空且第一字符队列不为空时,根据第一字符队列中字符串在配置文件中索引到对应的参数字典,根据所述事件参数通过该参数字典匹配目标指令参数,并逐位入队到所述第一字符队列;
所述目标指令模板读取结束后,确定所述第一字符队列中的字符串为目标指令。
3.根据权利要求1所述的方法,其特征在于,对于事件参数为变量参数的事件,在根据对应目标指令模板和事件参数通过配置文件匹配对应目标指令参数后,包括步骤:对所述目标指令参数赋值。
4.一种通信解析方法,其特征在于,包括步骤:
生成配置文件,所述配置文件包括事件、设备、指令模板、参数字典,其中,每一所述事件至少与一所述设备关联,每一所述事件对应每一关联设备设置所述指令模板和所述参数字典;所述参数字典为事件参数与指令参数的键值对;
获取目标指令,根据所述目标指令通过所述配置文件匹配目标指令模板,并获取目标事件;
根据所述目标指令模板获取所述目标指令中的目标指令参数,根据所述目标指令参数通过所述配置文件匹配目标事件参数。
5.一种通信解析方法,其特征在于,包括步骤:
生成配置文件,所述配置文件包括事件、设备、指令模板、参数字典,其中,每一所述事件至少与一所述设备关联,每一所述事件对应每一关联设备设置所述指令模板和所述参数字典;所述参数字典为事件参数与指令参数的键值对;
获取目标指令,根据所述目标指令通过指令集字典匹配目标指令模板并获取目标事件,所述指令集字典中存储所有接收事件的指令头;
根据所述目标指令模板获取所述目标指令中的目标指令参数,根据所述目标指令参数通过所述配置文件匹配目标事件参数。
6.根据权利要求4或5中任一项所述的方法,其特征在于,所述指令模板包括指令头和替换位,所述替换位包括第一替换标记符、第二替换标记符和索引,所述第一替换标记符为所述替换位的起始标记,所述第二替换标记符为所述替换位的结束标记,所述索引设置在所述第一替换标记符和第二替换标记符之间;
根据所述目标指令模板获取所述目标指令中的目标指令参数,包括步骤:
逐位读取所述目标指令模板;
当读取到第一替换标记符时,进行符号栈入栈;
当读取到第二替换标记符时,若符号栈顶为所述第一替换标记符,则出栈;
当符号栈不为空时,将当前读取的所述目标指令模板的字符入队到第一字符队列;
当符号栈为空时,取出所述第一字符队列中字符串,并根据该字符串在所述配置文件中索引到对应的参数字典,根据所述目标指令参数通过该参数字典匹配目标事件参数。
7.一种通信解析装置,其特征在于,包括:
配置模块,用于生成配置文件,所述配置文件包括事件、设备、指令模板、参数字典,其中,每一所述事件至少与一所述设备关联,每一所述事件对应每一关联设备设置所述指令模板和所述参数字典;所述参数字典为事件参数与指令参数的键值对;
目标指令模板获取模块,用于获取目标事件,根据所述目标事件通过所述配置文件匹配该目标事件下所有设备的目标指令模板;
目标指令生成模块,用于获取事件参数,针对每一设备,根据对应的所述目标指令模板和所述事件参数通过所述配置文件匹配对应目标指令参数,将对应的所述目标指令模板与对应的所述目标指令参数进行融合,生成目标指令。
8.一种通信解析装置,其特征在于:
配置模块,用于生成配置文件,所述配置文件包括事件、设备、指令模板、参数字典,其中,每一所述事件至少与一所述设备关联,每一所述事件对应每一关联设备设置所述指令模板和所述参数字典;所述参数字典为事件参数与指令参数的键值对;
目标指令模板获取模块,用于获取目标指令,根据所述目标指令通过指令集字典匹配目标指令模板并获取目标事件,所述指令集字典中存储所有接收事件的指令头;
目标事件参数获取模块,用于根据所述目标指令模板获取所述目标指令中的目标指令参数,根据所述目标指令参数通过所述配置文件匹配目标事件参数。
9.一种电子设备,其特征在于,包括:
处理器;
存储器,用于存储由所述处理器执行的计算机程序;
其中,所述处理器执行所述计算机程序时实现权利要求1-6中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储由计算机程序,其特征在于,所述计算机程序被执行时实现权利要求1-6中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211405559.3A CN115665020B (zh) | 2022-11-10 | 2022-11-10 | 通信解析方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211405559.3A CN115665020B (zh) | 2022-11-10 | 2022-11-10 | 通信解析方法、装置、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115665020A CN115665020A (zh) | 2023-01-31 |
CN115665020B true CN115665020B (zh) | 2023-04-28 |
Family
ID=85020222
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211405559.3A Active CN115665020B (zh) | 2022-11-10 | 2022-11-10 | 通信解析方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115665020B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117075967B (zh) * | 2023-10-16 | 2024-01-30 | 西安羚控电子科技有限公司 | 地面站自动化指令生成方法、数据渲染方法及系统 |
CN117667046B (zh) * | 2024-01-31 | 2024-04-12 | 英诺达(成都)电子科技有限公司 | 命令解析方法、装置、电子设备、存储介质及程序产品 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106657075A (zh) * | 2016-12-26 | 2017-05-10 | 东软集团股份有限公司 | 多层协议解析方法、装置及数据匹配方法和装置 |
CN109284294A (zh) * | 2018-10-12 | 2019-01-29 | 珠海格力智能装备有限公司 | 采集数据的方法及装置、存储介质、处理器 |
CN110457107A (zh) * | 2019-08-09 | 2019-11-15 | 珠海格力电器股份有限公司 | 组态软件操作指令管理方法、装置和系统 |
CN112650170A (zh) * | 2020-12-17 | 2021-04-13 | 珠海市运泰利自动化设备有限公司 | 一种自动化设备的控制平台及实现方法 |
WO2022001924A1 (zh) * | 2020-06-30 | 2022-01-06 | 华为技术有限公司 | 构建知识图谱的方法、装置及系统、计算机存储介质 |
CN114253644A (zh) * | 2021-11-25 | 2022-03-29 | 沈阳鼓风机集团自动控制系统工程有限公司 | 下位机设备属性参数的输出方法及装置 |
CN114760103A (zh) * | 2022-03-21 | 2022-07-15 | 广州大学 | 一种工业控制系统异常检测系统、方法、设备及存储介质 |
-
2022
- 2022-11-10 CN CN202211405559.3A patent/CN115665020B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106657075A (zh) * | 2016-12-26 | 2017-05-10 | 东软集团股份有限公司 | 多层协议解析方法、装置及数据匹配方法和装置 |
CN109284294A (zh) * | 2018-10-12 | 2019-01-29 | 珠海格力智能装备有限公司 | 采集数据的方法及装置、存储介质、处理器 |
CN110457107A (zh) * | 2019-08-09 | 2019-11-15 | 珠海格力电器股份有限公司 | 组态软件操作指令管理方法、装置和系统 |
WO2022001924A1 (zh) * | 2020-06-30 | 2022-01-06 | 华为技术有限公司 | 构建知识图谱的方法、装置及系统、计算机存储介质 |
CN112650170A (zh) * | 2020-12-17 | 2021-04-13 | 珠海市运泰利自动化设备有限公司 | 一种自动化设备的控制平台及实现方法 |
CN114253644A (zh) * | 2021-11-25 | 2022-03-29 | 沈阳鼓风机集团自动控制系统工程有限公司 | 下位机设备属性参数的输出方法及装置 |
CN114760103A (zh) * | 2022-03-21 | 2022-07-15 | 广州大学 | 一种工业控制系统异常检测系统、方法、设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
王新华等."软PLC编译系统的开发与实现".《北京工业大学学报》.2008,第34卷(第11期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN115665020A (zh) | 2023-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115665020B (zh) | 通信解析方法、装置、设备和存储介质 | |
CN108769109B (zh) | 一种物联网异构设备数据的统一处理方法及系统 | |
US7072985B1 (en) | Method and apparatus for two phase structured message to tagged message translation | |
CN112511416A (zh) | 基于规则式的数据通信协议转换系统、解码及编码方法 | |
US9684299B2 (en) | Apparatus and method for managing machine tool information for heterogeneous numerical control devices | |
CN109889553B (zh) | 一种结构化报文自适应转换方法及装置 | |
CN110769002A (zh) | 基于LabVIEW的报文解析方法、系统、电子设备和介质 | |
CN114047970A (zh) | 一种autosar架构软件的配置方法及系统 | |
CN108536435A (zh) | 一种自动生成can通信代码的方法 | |
CN111488332A (zh) | 一种ai服务开放中台及方法 | |
CN113835419A (zh) | 一种列控设备的测试方法、系统及存储介质 | |
CN112052010A (zh) | 一种icd字节序自动转换方法 | |
CN115202663A (zh) | 一种数据处理方法、装置和存储介质 | |
CN105739481A (zh) | 工控软件的测试方法、装置及系统 | |
WO2024108940A1 (zh) | 一种性能监管方法、装置、系统、设备和介质 | |
CN108763127B (zh) | 源数据与目标数据相互转换的Modbus适配器的实现方法 | |
CN112328594A (zh) | 一种嵌入式装置模型数据管理方法及装置 | |
CN109190969B (zh) | 称重设备管控方法、系统、称重设备管理中间件及介质 | |
CN107943507B (zh) | 一种以数据仓库为中心的综合核心处理机自升级方法 | |
CN112448854B (zh) | 一种kubernetes复杂网络策略系统及其实现方法 | |
US20080238946A1 (en) | System and method for providing a replica of a graphic presentation | |
CN116634036A (zh) | 一种航电数据接口装置的协议转换配置方法及系统 | |
CN115348320A (zh) | 一种通信数据的转换方法、装置、及电子设备 | |
US9342500B2 (en) | Object memory management system | |
CN113722733A (zh) | 一种基于Java注解实现的数据访问权限控制方法 |
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 | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 510000 3, building 9, two South Road, Dashi street, Dashi street, Guangzhou, Guangdong, Panyu District, China. Patentee after: Guangzhou Yihong Intelligent Equipment Co.,Ltd. Address before: 511449 101-301, building 3, No. 9, Huijiang Shinan Second Road, Dashi street, Panyu District, Guangzhou, Guangdong Patentee before: GUANGZHOU EHOLLY INTELLIGENT EQUIPMENT Co.,Ltd. |