一种串口设备和以太网设备的数据交互方法与流程

文档序号:17238614发布日期:2019-03-30 08:28阅读:387来源:国知局
一种串口设备和以太网设备的数据交互方法与流程

本发明涉及数据交互领域,特别是涉及一种串口设备和以太网设备的数据交互方法。



背景技术:

目前Modbus通信通常采用以太网和串口两种形式。对于大多数基层设备而言,采用的是串口通信,而对于大多数带操作系统的设备而言,采用的是以太网通信。对于需要数据交互的两个设备而言,需要有一个统一的通信接口和通信协议。

在现有技术下,如果两个设备的通信接口不一致,一个为以太网口,一个为串口,那么两个设备数据是不能流通的,没办法进行数据交互。



技术实现要素:

本发明的目的在于针对现有技术的不足,提供一种串口设备和以太网设备的数据交互方法,将串口数据与以太网数据(基于标准Modbus协议)互相识别、流通,实现低成本下跨网络数据传输。

本发明的目的是这样实现的:一种串口设备和以太网设备的数据交互方法,将串口端作为服务端时,包括如下步骤:

1)创建以太网通信,获取以太网接收到的数据,并将以太网接收到的数据保存在以太网接收缓冲区中;

2)判断以太网接收缓冲区中是否有数据,若以太网接收缓冲区中有数据,则将以太网接收缓冲区中的数据进行协议转换,并将协议转换后的数据放入串口发送缓冲区中,继续步骤3);若以太网接收缓冲区中没有数据,则返回步骤1);

3)判断串口发送缓冲区中是否有数据,若串口发送缓冲区中有数据,则将串口发送缓冲区中的数据发送至与串口连接的设备,继续步骤4);若串口发送缓冲区中没有数据,则返回步骤1);

4)创建串口通信,获取串口接收到的数据,并将串口接收到的数据保存在串口接收缓冲区中;

5)判断串口接收缓冲区中是否有数据,若串口接收缓冲区中有数据,则将串口接收缓冲区中的数据进行协议转换,并将协议转换后的数据放入以太网发送缓冲区中,继续步骤6);若串口接收缓冲区中没有数据,则返回步骤4);

6)判断以太网发送缓冲区中是否有数据,若以太网发送缓冲区中有数据,则将以太网发送缓冲区中的数据发送至与以太网口连接的设备,返回步骤1);若以太网发送缓冲区中没有数据,则返回步骤4)。

在程序需要退出时,停止协议转换,停止以太网、串口接发数据,关闭以太网口,关闭串口。

将串口端作为服务端时,将以太网接收到的数据保存在以太网接收缓冲区中,获取新的数据帧序列号。数据帧序列号是接收到以太网数据的ID号,在同一时段内,每个数据帧的ID是唯一的。在接收到以太网的数据后,将以太网数据内容转换成Modbus TCP/IP协议,在Modbus TCP/IP协议中前两个字节,即事务元标识符,也需要保存。根据以太网接收到的数据创建新的串口数据帧,创建新的串口数据帧时,数据部分需要去掉数据前部的事务元标识符、协议类型、数据长度。将该串口数据帧保存到串口发送缓冲器中。在根据以太网接收到的数据创建新的串口数据帧之后,存放到串口发送缓冲区的同时,将数据帧的序列号传递到串口信息中。串口接收到数据之后,根据序列号查找对应的以太网信息。将串口接收到的数据保存在串口接收缓冲区中。遍历串口信息中所有的以太网信息,查找出对应的当前数据帧序列号。根据串口接收到的数据创建新的以太网数据帧,创建新的以太网数据帧时,数据部分需要除去CRC校验,在数据前部增加事务元标识符、协议类型、数据长度。将该以太网数据帧保存到以太网发送缓冲区中。采用本方法可以使得多个串口设备可以与一个或多个以太网设备进行通讯。

一种串口设备和以太网设备的数据交互方法,将串口端作为客户端时,包括如下步骤:

1)创建串口通信,获取串口接收到的数据,并串口接收到的数据保存在串口接收缓冲区中;

2)判断串口接收缓冲区中是否有数据,若串口接收缓冲区中有数据,则将串口接收缓冲区中的数据进行协议转换,并将协议转换后的数据放入以太网发送缓冲区中,继续步骤3);若串口接收缓冲区中没有数据,则返回步骤1);

3)判断以太网发送缓冲区中是否有数据,若以太网发送缓冲区中有数据,则将以太网发送缓冲区中的数据发送至与以太网口连接的设备,继续步骤4);若以太网发送缓冲区中没有数据,则返回步骤1);

4)创建以太网通信,获取以太网接收到的数据,并以太网接收到的数据保存在以太网接收缓冲区中;

5)判断以太网接收缓冲区中是否有数据,若以太网接收缓冲区中有数据,则将以太网接收缓冲区中的数据进行协议转换,并将协议转换后的数据放入串口发送缓冲区中,继续步骤6);若以太网接收缓冲区中没有数据,则返回步骤4);

6)判断串口发送缓冲区中是否有数据,若串口发送缓冲区中有数据,则将串口发送缓冲区中的数据发送至与串口连接的设备,返回步骤1);若串口发送缓冲区中没有数据,则返回步骤4)。在程序需要退出时,停止协议转换,停止以太网、串口接发数据,关闭以太网口,关闭串口。

将串口端作为客户端时,将串口接收到的数据保存在串口接收缓冲区中,获取新的数据帧序列号,数据帧序列号是接收到串口数据的ID号,在同一时段内,每个数据帧的ID是唯一的。根据串口接收到的数据创建新的以太网数据帧,创建新的以太网数据帧时,数据部分需要除去CRC校验,在数据前部增加事务元标识符、协议类型、数据长度。将该以太网数据帧保存到以太网发送缓冲器中。在根据串口接收到的数据创建新的以太网数据帧之后,存放到以太网发送缓冲区的同时,将数据帧的序列号传递到以太网信息中。以太网口接收到数据之后,根据序列号查找对应的串口信息。将以太网接收到的数据保存在以太网接收缓冲区中,遍历以太网信息中所有的串口信息,查找出对应的当前数据帧序列号,根据以太网接收到的数据创建新的串口数据帧,创建新的串口数据帧时,数据部分需要去掉数据前部的事务元标识符、协议类型、数据长度。将该串口数据帧保存到串口发送缓冲器中。采用本方法可以使得多个串口设备可以与一个或多个以太网设备进行通讯。

将以太网接收到的数据进行解析,提取数据部分后部的单元标识符、功能码、数据(即除去以太网协议内容,提取相对于以太网协议中的数据部分),转换成串口协议数据,将串口接收到的数据部分前部添加事务元标识符、协议类型、数据长度(添加的是MODBUS TCP/IP相对于MODBUS的头部信息),并除去数据部分的CRC校验,转换成以太网协议数据,参见图5。

本发明的有益效果为:本发明所提供的方法可移植性高,适用范围广,且转换效率高,转换速度快。本方法可以实现于各类操作系统、单片机中,通过在现有的工控机等上运行设计的代码程序即可实现串口设备和以太网设备的数据交互,将串口数据与以太网数据(基于标准Modbus协议)互相识别、流通,实现低成本下跨网络数据传输。且采用本发明的方法可以跨平台通信,过程实现不复杂,成本很低,如果方法在PC机上运行,则只需要增加一个RS485串口通信卡(如果PC自带则不需要),实用性高。根据不同的系统平台、操作平台,本发明都可以使之相互通信。例如Linux系统中的串口和Windows中的以太网通信,例如单片机中的串口和Linux中的以太网通信。

下面结合附图和具体实施方式对本发明作进一步说明。

附图说明

图1为本发明的串口端为服务端时的运行流程图;

图2为本发明的串口端为客户端时的运行流程图;

图3为本发明串口端数据处理运行流程

图4为本发明以太网端数据处理运行流程

图5为Modbus Tcp/Ip的通讯格式与串口数据格式的对比图。

具体实施方式

实施例一

参见图1、图3和图4,一种串口设备和以太网设备的数据交互方法,将串口端作为服务端时,包括如下步骤:

1)创建以太网通信,获取以太网接收到的数据,并将以太网接收到的数据保存在以太网接收缓冲区中;

2)判断以太网接收缓冲区中是否有数据,若以太网接收缓冲区中有数据,则提取以太网接收缓冲区中的数据进行保存,然后将以太网接收缓冲区中的数据进行协议转换,并将协议转换后的数据放入串口发送缓冲区中,继续步骤3);若以太网接收缓冲区中没有数据,则返回步骤1);

3)判断串口发送缓冲区中是否有数据,若串口发送缓冲区中有数据,则将串口发送缓冲区中的数据发送至与串口连接的设备,继续步骤4);若串口发送缓冲区中没有数据,则返回步骤1);

4)创建串口通信,获取串口接收到的数据,并将串口接收到的数据保存在串口接收缓冲区中;

5)判断串口接收缓冲区中是否有数据,若串口接收缓冲区中有数据,则提取串口接收缓冲区中的数据进行保存,然后将串口接收缓冲区中的数据进行协议转换,并将协议转换后的数据放入以太网发送缓冲区中,继续步骤6);若串口接收缓冲区中没有数据,则返回步骤4);

6)判断以太网发送缓冲区中是否有数据,若以太网发送缓冲区中有数据,则将以太网发送缓冲区中的数据发送至与以太网口连接的设备,返回步骤1);若以太网发送缓冲区中没有数据,则返回步骤4)。

在程序需要退出时,停止协议转换,停止以太网、串口接发数据,关闭以太网口,关闭串口。

将串口端作为服务端时,将以太网接收到的数据保存在以太网接收缓冲区中,获取新的数据帧序列号。数据帧序列号是接收到以太网数据的ID号,在同一时段内,每个数据帧的ID是唯一的。在接收到以太网的数据后,将以太网数据内容转换成Modbus TCP/IP协议,在Modbus TCP/IP协议中前两个字节,即事务元标识符,也需要保存。根据以太网接收到的数据创建新的串口数据帧,创建新的串口数据帧时,数据部分需要去掉数据前部的事务元标识符、协议类型、数据长度。将该串口数据帧保存到串口发送缓冲器中。在根据以太网接收到的数据创建新的串口数据帧之后,存放到串口发送缓冲区的同时,将数据帧的序列号传递到串口信息中。串口接收到数据之后,根据序列号查找对应的以太网信息。将串口接收到的数据保存在串口接收缓冲区中。遍历串口信息中所有的以太网信息,查找出对应的当前数据帧序列号。根据串口接收到的数据创建新的以太网数据帧,创建新的以太网数据帧时,数据部分需要除去CRC校验,在数据前部增加事务元标识符、协议类型、数据长度。将该以太网数据帧保存到以太网发送缓冲区中。采用本方法可以使得多个串口设备可以与一个或多个以太网设备进行通讯。

实施例二

一种串口设备和以太网设备的数据交互方法,将串口端作为客户端时,包括如下步骤:

1)创建串口通信,获取串口接收到的数据,并串口接收到的数据保存在串口接收缓冲区中;

2)判断串口接收缓冲区中是否有数据,若串口接收缓冲区中有数据,则将串口接收缓冲区中的数据进行协议转换,并将协议转换后的数据放入以太网发送缓冲区中,继续步骤3);若串口接收缓冲区中没有数据,则返回步骤1);

3)判断以太网发送缓冲区中是否有数据,若以太网发送缓冲区中有数据,则将以太网发送缓冲区中的数据发送至与以太网口连接的设备,继续步骤4);若以太网发送缓冲区中没有数据,则返回步骤1);

4)创建以太网通信,获取以太网接收到的数据,并以太网接收到的数据保存在以太网接收缓冲区中;

5)判断以太网接收缓冲区中是否有数据,若以太网接收缓冲区中有数据,则将以太网接收缓冲区中的数据进行协议转换,并将协议转换后的数据放入串口发送缓冲区中,继续步骤6);若以太网接收缓冲区中没有数据,则返回步骤4);

6)判断串口发送缓冲区中是否有数据,若串口发送缓冲区中有数据,则将串口发送缓冲区中的数据发送至与串口连接的设备,返回步骤1);若串口发送缓冲区中没有数据,则返回步骤4)。在程序需要退出时,停止协议转换,停止以太网、串口接发数据,关闭以太网口,关闭串口。

将串口端作为客户端时,将串口接收到的数据保存在串口接收缓冲区中,获取新的数据帧序列号,数据帧序列号是接收到串口数据的ID号,在同一时段内,每个数据帧的ID是唯一的。根据串口接收到的数据创建新的以太网数据帧,创建新的以太网数据帧时,数据部分需要除去CRC校验,在数据前部增加事务元标识符、协议类型、数据长度。将该以太网数据帧保存到以太网发送缓冲器中。在根据串口接收到的数据创建新的以太网数据帧之后,存放到以太网发送缓冲区的同时,将数据帧的序列号传递到以太网信息中。以太网口接收到数据之后,根据序列号查找对应的串口信息。将以太网接收到的数据保存在以太网接收缓冲区中,遍历以太网信息中所有的串口信息,查找出对应的当前数据帧序列号,根据以太网接收到的数据创建新的串口数据帧,创建新的串口数据帧时,数据部分需要去掉数据前部的事务元标识符、协议类型、数据长度。将该串口数据帧保存到串口发送缓冲器中。采用本方法可以使得多个串口设备可以与一个或多个以太网设备进行通讯。

参见图5,将以太网接收到的数据进行解析,提取数据部分后部的单元标识符、功能码、数据(即除去以太网协议内容,提取相对于以太网协议中的数据部分),转换成串口协议数据,将串口接收到的数据部分前部添加事务元标识符、协议类型、数据长度(添加的是MODBUS TCP/IP相对于MODBUS的头部信息),并除去数据部分的CRC校验,转换成以太网协议数据,参见图5。

Modbus Tcp/Ip的通讯格式如表1所示

表1

串口数据格式如表2所示

表2

串口信息存放内容如表3所示,以太网信息存放内容如表4所示。串口信息、以太网信息为配置信息,以及运行时所需要的参数保存。

每一个以太网、串口都有一个信息

表3

表4

本发明不仅仅局限于上述实施例,在不背离本发明技术方案原则精神的情况下进行些许改动的技术方案,应落入本发明的保护范围。

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