本发明涉及工业物联网数据传输
技术领域:
,具体涉及一种远程数据传输终端、系统及其编码、解码方法。
背景技术:
:目前,在工业物联网领域中,智能终端、ERP、MES、PDM等系统间的交互信息仍然采用XML、JSON等数据格式,XML和JSON主要存在数据冗余很大,不能存储特殊字符,转义复杂而且繁琐的缺陷,不利于工业物联网高效、稳定地发展。技术实现要素:针对现有技术中的缺陷,本发明提供了一种远程数据传输终端、系统及其编码、解码方法,提高了工业物联网中的设备、ERP、MES等系统间数据传输的效率。第一方面,本发明提供的一种远程数据传输协议的编码方法,包括:获取编码内容第一行的所有字段,按从左到右的顺序对所述字段进行ASCII码转换,得到每个所述字段对应的字段字符串,将所有所述字段字符串组成第一行的行字符串,其中,所述第一行的行字符串中每两个相邻的所述字段字符串之间以0x01字符作为间隔,所述第一行的行字符串的结尾处为0x02字符,将所述第一行的行字符串作为临时字符串;获取所述编码内容下一行字段进行编码得到下一行的行字符串,并将所述下一行的行字符串添加到所述临时字符串后,直到对所述编码内容所有行的字段都完成编码,将最终得到的临时字符串作为SelectHelp数据进行发送。本发明提供的远程数据传输协议的编码方法,编码方式简单,传输速率快,能够对任何形式的字段进行编码,适用于工业物联网领域设备间的数据传输,统一了设备间在进行数据交互时的协议格式,减少了接入工作量,有助于提高工业物联网系统的集成效率。优选地,所述对所述字段进行ASCII码转换,得到每个所述字段对应的字段字符串,包括:将所述字段进行ASCII码转换得到第一字符串;若所述第一字符串中不包含0x01字符和0x02字符,则将第一字符串作为所述字段对应的字段字符串;若所述第一字符串中包含0x01字符或0x02字符,则将所述字段转化为base64字符,将所述base64字符进行ASCII码转换,得到所述字段对应的字段字符串。第二方面,本发明提供的一种远程数据传输协议的解码方法,包括:接收SelectHelp数据;将存储地址的行坐标和列坐标均设为0;读取所述SelectHelp数据中的字符,若所述字符不为0x01且所述字符不为0x02,则将所述字符添加在第二字符串末尾;若所述字符为0x01,则将所述第二字符转换为文本数据存入存储地址,清空所述第二字符串,存储地址的列坐标加1;若所述字符为0x02,则将所述第二字符串转换为文本数据存入存储地址,清空所述第二字符串,存储地址的行坐标加1,且存储地址的列坐标改为0;判断所述字符是否为所述SelectHelp数据的最后一个字符,若不为最后一个字符,则读取所述SelectHelp数据中的下一个字符,进行字符转换。本发明提供的远程数据传输协议的解码方法,配合第一方面中的编码方法,可以提高数据传输速率,统一了设备间在进行数据交互时的协议格式,减少了接入工作量,有助于提高工业物联网系统的集成效率。优选地,还包括:判断每一行存储地址的最大列坐标是否一致,若不一致,则将所述SelectHelp数据标记为无效数据。第三方面,本发明提供的一种远程数据传输终端,包括:采集接口、数据预处理模块、编码模块、通讯模块;所述采集接口用于与设备的数据输出接口连接;所述数据预处理模块用于对所述设备输出的数据进行预处理,得到编码内容;所述编码模块用于获取编码内容第一行的所有字段,按从左到右的顺序对所述字段进行ASCII码转换,得到每个所述字段对应的字段字符串,将所有所述字段字符串组成第一行的行字符串,其中,所述第一行的行字符串中每两个相邻的所述字段字符串之间以0x01字符作为间隔,所述第一行的行字符串的结尾处为0x02字符,将所述第一行的行字符串作为临时字符串;获取所述编码内容下一行字段进行编码得到下一行的行字符串,并将所述下一行的行字符串添加到所述临时字符串后,直到对所述编码内容所有行的字段都完成编码,将最终得到的临时字符串作为SelectHelp数据进行发送;所述通讯模块用于将所述SelectHelp数据发送给远程服务器。本实施例提供的远程数据传输终端,通过合理的数据结构封装,减少不必要的信息,同时保证接口的统一性,减少设备、系统之间协议互转的麻烦,实现数据采集系统、现场控制系统、制造执行系统间的互通互联。优选地,所述采集接口包括I/O接口、RS232、RS485、以太网接口中的至少一种。优选地,所述通讯模块为有线通讯模块或无线通讯模块。第四方面,本发明提供的一种远程数据传输系统,包括远程服务器、至少一个第三方面中所述的远程数据传输终端;所述远程服务器包括数据接收模块、解码模块、存储模块;所述数据接收模块用于接收终端发送的SelectHelp数据;所述解码模块用于读取所述SelectHelp数据中的字符,若所述字符不为0x01且所述字符不为0x02,则将所述字符添加在第二字符串末尾;若所述字符为0x01,则将所述第二字符转换为文本数据存入存储地址,清空所述第二字符串,存储地址的列坐标加1;若所述字符为0x02,则将所述第二字符串转换为文本数据存入存储地址,清空所述第二字符串,存储地址的行坐标加1,且存储地址的列坐标改为0;判断所述字符是否为所述SelectHelp数据的最后一个字符,若不为最后一个字符,则读取所述SelectHelp数据中的下一个字符,进行字符转换;存储模块用于存储解码后的SelectHelp数据。本发明提供的远程数据传输系统,数据协议采用上述的SelectHelp格式,通过ZeroICE或者Socket的网络传输框架实现数据的传输,传输及处理效率;统一了工业物联网中各个设备、系统间数据交换的格式,减少设备、系统之间协议互转的麻烦,推动了工业物联网的发展。优选地,还包括数据查询模块,所述数据查询模块用于在所述存储模块中查找与用户输入的指令相关的数据,并将查询结果返回给用户。优选地,所述数据查询模块用于在所述存储模块中查找用户输入的存储地址中的数据,或,在存储模块中查找与用户输入的字段匹配的数据,并将查询结果返回给用户。附图说明图1为本发明实施例提供的远程数据传输协议的编码方法的流程图;图2为本发明实施例提供的远程数据传输协议的解码方法的流程图;图3为本发明实施例提供的远程数据传输终端的结构框图;图4为本发明实施例提供的远程数据传输系统的结构框图。具体实施方式下面将结合附图对本发明技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本发明的技术方案,因此只作为示例,而不能以此来限制本发明的保护范围。需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本发明所属领域技术人员所理解的通常意义。实施例一如图1所示,本实施例提供的一种远程数据传输协议的编码方法,包括:步骤S11,获取编码内容第一行的所有字段,按从左到右的顺序对字段进行ASCII码转换,得到每个字段对应的字段字符串,将所有字段字符串组成第一行的行字符串,其中,第一行的行字符串中每两个相邻的字段字符串之间以0x01字符作为间隔,第一行的行字符串的结尾处为0x02字符,将第一行的行字符串作为临时字符串;步骤S12,获取编码内容下一行字段进行编码得到下一行的行字符串,并将下一行的行字符串添加到临时字符串后,直到对编码内容所有行的字段都完成编码,将最终得到的临时字符串作为SelectHelp数据进行发送。其中,步骤S12中,获取编码内容下一行字段进行编码得到下一行的行字符串的方法与步骤S11中的方法相同,在此不再赘述。其中,SelectHelp数据是一个数据查询或数据包的集合体,SelectHelp数据按行与列进行组织,如表1中的数据包括行和列,转换后得到的SelectHelp数据的具体形式详见后面的具体步骤。通常在工业物联网领域中,SelectHelp数据的第一行包括名称(如表1中的“编号”、“当前温度”、“当前位置”、“故障号”),从第二行开始为各个名称对应的数据(如表1中的“10”、“23.4”、“A01”、“11”)。其中,因为在工业以太网的业务数据交换过程中,基本不会存在0x01和0x02等特殊字符,因此,本实施例的远程数据传输协议采用0x01字符作为字段间的分隔符,行与行之间则采用0x02字符进行分隔。因此,字段转换为ASCII码后,不能出现0x01,0x02字符。字段长短、数量没有限制,可以任意增加字段,而不影响原有数据,便于将来协议扩展。本实施中的远程数据传输协议的协议帧格式具有以下特征:1)编码格式所有的通讯包都是由ACSII码字符组成。2)数据包以行和列形式显示,组成表格形的数据。如表1所示,第一行显示数据的具体的列名,第二层开始表示具体每一行的值。其中,“编号”、“当前温度”、“当前位置”、“故障号”为第一行的字段;“10”、“23.4”、“A01”、“11”为第二行的字段。表1编号当前温度当前温度故障号1023.4A0111以表1中的数据为例,进行编码,具体过程如下:步骤一,获取编码内容第一行的所有字段:“编号”、“当前温度”、“当前位置”、“故障号”;按从左到右的顺序对字段进行ASCII码转换得到每个字段对应的字段字符串,如:字段“编号”转换后对应的字段字符串为“0x7f0x160x530xf7”,字段“当前温度”转换后的字段字符串为“0x5f0x530x520x4d0x6e0x290x5e0xa6”,字段“当前位置”转换后对应的字段字符串为“0x5f0x530x520x4d0x4f0x4d0x7f0x6e”,字段“故障号”转换后对应的字段字符串为“0x650x450x960x9c0x530xf7”;将所有字段字符串组成第一行的行字符串为“0x7f0x160x530xf70x010x5f0x530x520x4d0x6e0x290x5e0xa60x010x5f0x530x520x4d0x4f0x4d0x7f0x6e0x010x650x450x960x9c0x530xf70x02”,其中,每两个相邻的字段字符串之间以0x01字符作为间隔,且行字符串以0x02字符结尾;将第一行的行字符串作为临时字符串。其中,为0x01和0x02加上下划线是为了清楚的显示分隔符0x01和分隔符0x02的位置,实际编码过程中不会带有任何格式。步骤二,获取编码内容第二行的所有字段:“10”、“23.4”、“A01”、“11”;按从左到右的顺序对字段进行ASCII码转换得到每个对应的字段字符串,字段“10”转换后对应的字段字符串为“0x310x30”,字段“23.4”转换后对应的字段字符串为“0x320x330x2e0x34”,字段“A01”转换后对应的字段字符串为“0x410x300x31”,字段“11”转换后对应的字段字符串为“0x310x31”;将所有字段字符串组成第二行的行字符串为“0x310x300x010x320x330x2e0x340x010x410x300x310x010x310x310x02”,其中,每两个相邻的字段字符串之间以0x01字符作为间隔,且行字符串以0x02字符结尾;将第二行的行字符串添加到临时字符串后,得到新的临时字符串为“0x7f0x160x530xf70x010x5f0x530x520x4d0x6e0x290x5e0xa60x010x5f0x530x520x4d0x4f0x4d0x7f0x6e0x010x650x450x960x9c0x530xf70x020x310x300x010x320x330x2e0x340x010x410x300x310x010x310x310x02”。由于表1中只列举了两行数据,因此步骤二中得到的临时字符串即为最终得到的临时字符串,将最终得到的临时字符串作为SelectHelp数据进行发送。实际使用过程中远远不止两行数据,则只需继续获取编码内容下一行字段按上述方法进行编码,直到对所有行的字段都完成编码,将最终得到的临时字符串作为SelectHelp数据进行发送即可。对每一行的编码方式都类似,在此不再赘述。本实施例提供的远程数据传输协议的编码方法,编码方式简单,传输速率快,能够对任何形式的字段进行编码,适用于工业物联网领域设备间的数据传输,统一了设备间在进行数据交互时的协议格式,减少了接入工作量,有助于提高工业物联网系统的集成效率。在对字段进行ASCII码转换时,为了防止转换后出现0x01字符,与分隔符发生冲突,需要对字段进行特殊的处理,因此,对字段进行ASCII码转换得到字段字符串的具体过程包括:将字段进行ASCII码转换得到第一字符串;若第一字符串中不包含0x01字符和0x02字符,则将第一字符串作为字段的字段字符串;若进行ASCII码转换后的字段中包含0x01字符或0x02字符,则将字段转化为base64字符,将base64字符进行ASCII码转换得到字段字符串。实施例二基于与上述编码方法相同的发明构思,本实施例提供了一种远程数据传输协议的解码方法,如图2所示,包括:步骤S21,接收SelectHelp数据。步骤S22,将存储地址的行坐标和列坐标均设为0。此为存储地址初始化步骤。步骤S23,读取SelectHelp数据中的字符,若字符不为0x01且字符不为0x02,则将字符存入第二字符串;若字符为0x01,则将第二字符串转换为文本数据存入存储地址,存储地址的列坐标加1;若字符为0x02,则将第二字符串转换为文本数据存入存储地址,存储地址的行坐标加1,且存储地址的列坐标改为0。步骤S24,判断字符是否为SelectHelp数据的最后一个字符,若不为最后一个字符,则返回步骤S23,读取SelectHelp数据中的下一个字符,进行字符转换;若为最后一个字符,则解码结束。仍以表1中的数据为例,上述解码过程为:接收编码端发送过来的SelectHelp数据为“0x7f0x160x530xf70x010x5f0x530x520x4d0x6e0x290x5e0xa60x010x5f0x530x520x4d0x4f0x4d0x7f0x6e0x010x650x450x960x9c0x530xf70x020x310x300x010x320x330x2e0x340x010x410x300x310x010x310x310x02”,此时存储地址的坐标为(0,0)。读取SelectHelp数据中的第一个字符为“0x7f”,不是0x01和0x02,则第二字符串string2=“0x7f”,读取第二个字符“0x16”,则string2=“0x7f0x16”,读取第三个字符“0x53”,则string2=“0x7f0x160x53”,读取第四个字符“0xf7”,则string2=“0x7f0x160x530xf7”,读取第五个字符为“0x01”,此时,将string2进行转码得到文本数据为“编号”,按存储地址为(0,0)(即表1中第一行第一列的位置)进行存储,并将存储地址的列坐标加1,则此时存储地址为(0,1),清空string2。继续读取SelectHelp数据中的下一个字符,并将字符存入string2,直到遇到下一个“0x01”,将string2=“0x5f0x530x520x4d0x6e0x290x5e0xa6”进行转码得到文本数据为“当前温度”,按存储地址为(0,1)(即表1中第一行第一列的位置)进行存储,并将存储地址的列坐标加1,则此时存储地址为(0,2),清空string2。继续读取SelectHelp数据中的字符,按上述的步骤得到存储地址为(0,2)的文本数据为“当前位置”,存储地址为(0,3)的文本数据为“故障号”。当读取到的字符为“0x02”时,存储地址的行坐标加1,且存储地址的列坐标为0,则此时存储地址改为(1,0)清空string2,这样第一行的内容就都解码完成。按上述方法进行第二行的解码,最终还原表1中的所有内容。本实施例提供的远程数据传输协议的解码方法,配合上述编码方法,可以提高数据传输速率,统一了设备间在进行数据交互时的协议格式,减少了接入工作量,有助于提高工业物联网系统的集成效率。为了检测接收到的协议的完整性,在解码过程中还包括:判断每一行的字段数是否一致,如果不一致代表数据格式无效,其具体实现方式为:判断每一行存储地址的最大列坐标是否一致,若不一致,则将SelectHelp数据标记为无效数据。实施例三基于上述编码方法相同的发明构思,本实施例还提供的一种远程数据传输终端5,如图3所示,包括:采集接口1、数据预处理模块2、编码模块3、通讯模块4。采集接口1用于与设备的数据输出接口连接。数据预处理模块2用于对设备输出的数据进行预处理,得到编码内容,预处理主要是对设备输出的数据进行格式转换,使其满足编码协议的要求。编码模块3用于获取编码内容第一行的所有字段,按从左到右的顺序对字段进行ASCII码转换,得到每个字段对应的字段字符串,将所有字段字符串组成第一行的行字符串,其中,第一行的行字符串中每两个相邻的字段字符串之间以0x01字符作为间隔,第一行的行字符串的结尾处为0x02字符,将第一行的行字符串作为临时字符串;获取编码内容下一行字段进行编码得到下一行的行字符串,并将下一行的行字符串添加到临时字符串后,直到对编码内容所有行的字段都完成编码,将最终得到的临时字符串作为SelectHelp数据进行发送。通讯模块4用于将SelectHelp数据发送给远程服务器6。本实施例提供的远程数据传输终端5,通过合理的数据结构封装,减少不必要的信息,同时保证接口的统一性,减少设备、系统之间协议互转的麻烦,实现数据采集系统、现场控制系统、制造执行系统间的互通互联。本实施例提供的远程数据传输终端5适用于现有工业4.0相关的信息物理系统的对接(CPS),同时支持与传统业务系统的高效互联,支持汽配、化工、机械装备、电子、电缆、轴承等行业。本实施例的远程数据传输终端5选用嵌入式工业主板制成,嵌入式工业主板包含CPU、内存以及FLASH存储器,CPU完成各个模块之间的协调控制,数据预处理模块2、编码模块3的功能也通过CPU内部的程序实现。其中,采集接口1包括I/O接口、RS232、RS485、以太网接口,以方便地连接具有不同接口的设备、仪表、机器人等。其中,通讯模块4为有线通讯模块或无线通讯模块。实施例四基于与上述编码、解码方法相同的发明构思,本实施例还提供了一种远程数据传输系统,如图4所示,包括远程服务器6、至少一个远程数据传输终端5。远程服务器6包括数据接收模块61、解码模块62、存储模块63。其中,数据接收模块61用于接收终端发送的SelectHelp数据。数据接收模块61用ICE或者Socket作为传输底层的通讯接口。其中,解码模块62用于读取SelectHelp数据中的字符,若字符不为0x01且字符不为0x02,则将字符添加在第二字符串末尾;若字符为0x01,则将第二字符转换为文本数据存入存储地址,清空第二字符串,存储地址的列坐标加1;若字符为0x02,则将第二字符串转换为文本数据存入存储地址,清空第二字符串,存储地址的行坐标加1,且存储地址的列坐标改为0;判断字符是否为SelectHelp数据的最后一个字符,若不为最后一个字符,则读取SelectHelp数据中的下一个字符,进行字符转换。其中,存储模块63用于存储解码后的SelectHelp数据。其中,远程服务器6还包括数据查询模块64,数据查询模块64用于在存储模块63中查找与用户输入的指令相关的数据,并将查询结果返回给用户。具体地,用户输入的指令可以是存储地址,数据查询模块64会在存储模块63中查找用户输入的存储地址中的数据;用户输入的指令也可以是字段,数据查询模块64会在存储模块63中查找与该字段匹配的数据。本实施例提供的远程数据传输系统,数据协议采用上述的SelectHelp数据格式,通过ZeroICE或者Socket的网络传输框架实现数据的传输,传输及处理效率;统一了工业物联网中各个设备、系统间数据交换的格式,减少设备、系统之间协议互转的麻烦,推动了工业物联网的发展。最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。当前第1页1 2 3