一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种嵌入式设备同时作为客户端和服务器的应用方法与流程

2022-02-24 18:11:47 来源:中国专利 TAG:


1.本发明涉及一种数据传输领域,尤其涉及一种嵌入式设备同时作为客户端和服务器的应用方法。


背景技术:

2.modbus tcp协议作为一种简单、标准的通信协议在控制系统中广泛应用。在一般控制系统中,通常通过客户端模块实现对现场设备的访问,或者作为服务器,向第三方设备提供访问功能。
3.目前,设备要么作为服务器,接受客户端的访问要求,要么作为客户端,访问其他设备;在实际应用中,当需要系统即作为客户端,也作为服务器时,通常需要配置两个设备才能满足需求;另一方面,现有方案也不涉及通信配置的在线更改。
4.例如,一种在中国专利文献上公开的“一种基于modbus-tcp协议的主站、从站及数据传输系统”,其公告号cn112929166a,从modbus协议本身出发进行有限的改写,既保留了modbus协议通用性和高效性的特点,又能有效地利用国密sm2非对称算法实现数据的加密。当功能码设为公共码时,就运行在标准状态下,当功能码设为自定义的号码时,就运行在加密传输的协议下。
5.该方案的设备能够单独作为客户端或服务器,功能单一。


技术实现要素:

6.本发明主要解决现有技术设备仅能单独作为客户端或服务器的问题;提供一种嵌入式设备同时作为客户端和服务器的应用方法,通过软件配置,同时提供客户端和服务器功能,使该设备即可作为客户端,访问现场设备,也可作为服务器,接受第三方设备的访问需求。
7.本发明的上述技术问题主要是通过下述技术方案得以解决的:一种嵌入式设备同时作为客户端和服务器的应用方法,包括以下步骤:通过组态软件为设备配置设备信息、客户端配置信息和服务器配置信息;设备通过以太网接收组态软件的配置信息,并对配置信息做校验、解析,解析成功后,将客户端配置信息传递给客户端组件运行,服务器配置信息传递给服务器组件运行;客户端使用独立的客户端命令调度和tcp客户端任务完成客户端功能;服务器使用独立的服务器解析和tcp服务器任务,完成服务器功能。
8.组态配置的信息包括客户端配置信息和服务器配置信息,独立解析和维护。tcp任务非阻塞方式设计,相互之间调度不影响,客户端、服务器并行调度的方法,设备能够同时作为客户端和服务器应用。
9.作为优选,所述的客户端配置信息包括第一tcp连接信息和modbus命令信息;第一tcp连接信息包括设备作为客户端与其通信的服务器配置信息,包括ip地址、端口地址、通信间隔、通信超时时间和服务器从站地址;
所述的服务器配置信息包括第二tcp连接信息和modbus命令映射表;第二tcp连接信息包括本机监听端口;设备信息包括设备id、设备版本和设备地址。
10.作为优选,所述的校验、解析的过程为:设备获取配置信息后,对设备信息进行校验;设备信息校验通过后,检查是首次运行还是运行过程中配置信息发生变化;若是首次运行,则进入配置客户端组件和服务器组件的过程;根据客户端配置信息,建立tcp连接信息、modbus命令信息、创建tcp客户端任务,完成客户端组件配置;根据服务器配置信息,建立tcp连接信息、modbus映射表、创建tcp服务器任务,完成服务器组件配置;若是运行过程中配置信息发生变化,则根据变化内容重置标志位,在客户端或者服务器任务中更新配置信息。
11.作为优选,客户端调度任务获取客户端配置信息后,进行modbus客户端命令调度;命令状态机为空闲状态、发送中、发送完成;调度任务检查客户端接收缓冲区检查,若有服务器应答数据,且当前命令状态为等待数据接收,则进行命令接收数据处理;调度任务轮询命令列表,当有命令满足发送条件时,按照命令配置信息组成modbus命令,并存入客户端发送缓冲区,此时命令进入发送中状态,并等待tcp客户端任务发送数据;发送条件为命令空闲且命令周期、间隔满足配置要求;当命令状态为发送完成时,等待服务器应答数据;当命令超时或者接收到服务器应答时,进入空闲状态。
12.作为优选,客户端任务处理过程为:tcp客户端任务对配置信息和通信数据做处理;若客户端配置信息无变化,则根据客户端配置信息,进行tcp连接建立,从tcp连接中接收数据,并存入客户端接收缓冲区;轮询客户端发送缓冲区,并将数据发送给tcp连接;若客户端配置信息发生变化,则断开所有tcp连接,并建立新的连接。
13.作为优选,服务器任务处理过程为:tcp服务器任务轮询服务器配置信息是否发生变化,若无变化,则进行tcp连接接收数据,并缓存到服务器接收缓冲区;轮询服务器发送缓冲区,若有数据,则将数据发送只tcp连接;若服务器配置信息发生变化,则断开所有连接。
14.作为优选,服务器解析过程为:服务器协议栈处理任务获取轮询服务器接收缓冲区,若有数据,则进行服务器协议解析,并将应答数据存入服务器发送缓冲区。
15.本发明的有益效果是:1. 组态配置的信息包括客户端配置信息和服务器配置信息,独立解析和维护。
16.2. tcp任务非阻塞方式设计,相互之间调度不影响,客户端、服务器并行调度的方法,设备能够同时作为客户端和服务器应用。
17.3.客户端支持单链接和单命令的在线更新,更改任何一个参数,其他链接不需要重新建立,其他命令数据能够保持。
附图说明
18.图1是本发明的一种组态解析过程流程图。
19.图2是本发明的客户端任务处理流程图。
20.图3是本发明的客户端数据收发过程流程图。
21.图4是本发明的客户端命令调度过程流程图。
22.图5是本发明的服务器任务处理过程流程图。
23.图6是本发明的服务器命令解析过程流程图。
具体实施方式
24.下面通过实施例,并结合附图,对本发明的技术方案作进一步具体的说明。
25.实施例:本实施例的一种嵌入式设备同时作为客户端和服务器的应用方法,包括以下步骤:通过组态软件为设备配置设备信息、客户端配置信息和服务器配置信息。
26.设备信息包括设备id、设备版本和设备地址等信息,用于组态配置一致性检查。
27.客户端配置信息包括第一tcp连接信息和modbus命令信息。
28.第一tcp连接信息包括设备作为客户端与其通信的服务器配置信息,具体包括ip地址、端口地址、通信间隔、通信超时时间和服务器从站地址等。
29.服务器配置信息包括第二tcp连接信息和modbus命令映射表。
30.第二tcp连接信息包括本机监听端口。
31.modbus命令映射表包括本机端口与控制系统数据的映射关系,可根据需要配置为多个分段。
32.设备通过以太网接收组态软件的配置信息,并对配置信息做校验、解析,解析成功后,将客户端配置信息传递给客户端组件运行,服务器配置信息传递给服务器组件运行。
33.校验、解析的过程为:设备获取配置信息后,对设备信息进行校验。
34.设备信息校验通过后,检查是首次运行还是运行过程中配置信息发生变化。
35.若是首次运行,则进入配置客户端组件和服务器组件的过程;根据客户端配置信息,建立tcp连接信息、modbus命令信息、创建tcp客户端任务,完成客户端组件配置;根据服务器配置信息,建立tcp连接信息、modbus映射表、创建tcp服务器任务,完成服务器组件配置。
36.若是运行过程中配置信息发生变化,则根据变化内容重置标志位,在客户端或者服务器任务中更新配置信息。
37.如图1所示,对配置信息做校验、解析过程包括具体包括:从ucp协议栈中获取配置信息后,首先判断设备id是否正确,若是,则进入下一步判断,否则返回组态错误信息;判断设备固件版本是否正确,若是,则进入下一步判断,否则返回组态错误信息;判断设备地址是否匹配,若是,则停止发布接收服务,并保证组态至组态缓冲区;否则返回组态错误信息。
38.进一步判断是否为第一次下载组态,若是,则进入无异构组态判断,否则进入端口类型改变判断。
39.无异构组态判断为判断下载的组态中是否无异构组态,若是,则使能发布接收端口类型设置为无,返回组态正确信息;否则设置硬件信息,并判断组态模式。
40.端口类型改变判断为判断端口类型是否改变,若是,则设置热复位后返回组态正确信息;否则,设置组态更新标志后返回组态正确信息。
41.组态模式判断为判断组态模式为客户端还是服务器;若组态模式是客户端,则依次进行安装以太网端口、逐一安装连接、逐一安装命令和创建client任务,然后使能发布接收端口类型设置为无后返回组态正确信息;若是组态模式是服务器,则依次进行安装以太网端口、服务器协议设置、服务器地址设置、ucp路径设置和创建sener任务,然后使能发布接收端口类型设置为无后返回组态正确信息。
42.客户端使用独立的客户端命令调度和tcp客户端任务完成客户端功能;服务器使用独立的服务器解析和tcp服务器任务,完成服务器功能。
43.如图2所示,tcp客户端任务对配置信息和通信数据做处理;若客户端配置信息无变化,则根据客户端配置信息,进行tcp连接建立,从tcp连接中接收数据,并存入客户端接收缓冲区;轮询客户端发送缓冲区,并将数据发送给tcp连接;若客户端配置信息发生变化,则断开所有tcp连接,并建立新的连接。
44.如图2所示,客户端任务处理具体过程为:判断模块是否要重组态,若是,则断开所有连接,否则,判断以太网状态是否正常,若否,则断开所有连接,若是,则进入下一步判断。
45.判断是否所有链接均未建立,若是,则判断是否连接建立间隔已到,若否,则判断链接是否正常;若判断连接建立间隔已到,则建立链接,并指向下一条链接后判断链接是否正常;若判断连接建立间隔未到,则指向下一条链接后判断连接是否正常;若判断链接正常,则依次执行命令接收和命令发送;若判断链接不正常,则断开当前链接,并指向下一条链接后继续判断链接是否正常。
46.如图3和图4所示,客户端调度任务获取客户端配置信息后,进行modbus客户端命令调度。
47.命令状态机为空闲状态、发送中、发送完成。
48.调度任务检查客户端接收缓冲区检查,若有服务器应答数据,且当前命令状态为等待数据接收,则进行命令接收数据处理。
49.调度任务轮询命令列表,当有命令满足发送条件时,按照命令配置信息组成modbus命令,并存入客户端发送缓冲区,此时命令进入发送中状态,并等待tcp客户端任务发送数据;发送条件为命令空闲且命令周期、间隔满足配置要求;当命令状态为发送完成时,等待服务器应答数据;当命令超时或者接收到服务器应答时,进入空闲状态。
50.如图3所示,客户端数据收发过程具体为:a1:判断是否有数据要接收,若是,则接收数据并判断数据是否接收成功;否则进入步骤a5。
51.a2:若是数据接收成功,则判断是否为串行模式,若是,则进入步骤a4;否则,将数
据存入接收缓冲区后进入步骤a5;a3:若数据接收没有成功,则断开当前链接,并进入步骤a5。
52.a4:判断是否有对应命令,若是,则将数据存入接收缓冲区后进入步骤a5;否则丢弃数据后进入步骤a5。
53.a5:判断是否为串行模式且时间间隔已到;若判断为是串行模式,且时间间隔已到,则发送数据后进入步骤a6;若不是串行模式,但时间间隔已到,则指向下一条命令后进入步骤a7;若时间间隔未到,则进入步骤a9。
54.a6:判断数据是否发送成功,若是,则命令超时定时器清零,命令间隔定时器清零后进入步骤a9;否则,断开当前链接后命令超时定时器清零,命令间隔定时器清零后进入步骤a9。
55.a7:判断是否时间间隔已到,若时间间隔已到,则发送数据后判断数据是发送成功,若数据发送成功,则命令超时定时器清零,命令间隔定时器清零,保存当前命令后进入a8;若数据没有发送成功,则断开当前链接后,命令超时定时器清零,命令间隔定时器清零后进入a8;若时间间隔未到则命令超时定时器清零,命令间隔定时器清零后进入a8。
56.a8:判断当前链接命令扫描是否完成,若是,则进入步骤a9;否则,指向下一条命令后进入步骤a7。
57.a9:判断是否所有链接已经扫描,若是,结束;否则指向下一条链接后返回a1。
58.如图4所示,客户端命令调度具体过程为:命令调度任务累加所有命令发送周期,判断是否链接已组态且tcp连接正常,若是,则执行命令调度后判断是否所有链接已扫描;否则,判断是否所有链接已扫描。
59.当所有链接已扫描时,结束;当有链接未扫描时指向下一条链接后返回判断是否链接已组态且tcp连接正常。
60.命令调度判断链接n的状态;当状态为待接收时,判断驱动缓冲区是否有数据,若是,则接收数据后进入待发送状态;否则继续判断命令是否接收超时;若判断命令接收超时,则重置链接后进入待发送状态;若判断命令接收没有超时,则返回。
61.当状态为发送状态时,判断连接n是否达到间隔时间,若是,则进入下一步判断,否则返回。
62.判断是否有变化发布的命令要发送,若是,则命令组包发送到缓冲区,保存当前命令后返回;否则进入下一步判断。
63.判断是否有周期发布的命令要发送,若是,则命令组包发送到缓冲区,保存当前命令后返回;否则返回。
64.如图5所示,tcp服务器任务轮询服务器配置信息是否发生变化,若无变化,则进行tcp连接接收数据,并缓存到服务器接收缓冲区;轮询服务器发送缓冲区,若有数据,则将数据发送只tcp连接;若服务器配置信息发生变化,则断开所有连接。
65.服务器任务处理过程为:b1:服务器任务绑定socket端口,判断是否有新组态或关闭所有连接标志;若是,则关闭所有连接后结束;否则复位所有连接。
66.b2:判断是否有行的连接请求,若是,则判断连接数是否已满;否则进入b3;若连接数已满则进入b3,若连接数未满则建立连接后进入b3。
67.b3:令链接n为链接0;判断是否有数据要接收,若是,则接收数据后判断数据是否接收成功;否则进入步骤b4;若是数据接收成功,则进入步骤b4;若数据接收失败,则断开连接后进入步骤b4。
68.b4:判断是否有数据要发送,若是,则发送数据后判断数据是否发送成功;否则进入步骤b5;若是数据发送成功,则进入步骤b5;若数据发送失败,则断开连接后进入步骤b5。
69.b5:判断链接n是否为最后一条链接;若是,则结束,否则返回步骤b3。
70.如图6所示,服务器协议栈处理任务获取轮询服务器接收缓冲区,若有数据,则进行服务器协议解析,并将应答数据存入服务器发送缓冲区。
71.服务器命令解析过程为:服务器协议解析为依次判断协议、命令长度和数据长度是否正确,若均正确,则判断为解析正常,否则判断为解析错误。
72.过程中每100ms存在触发任务,触发任务判断命令缓冲链表是否为空,若是,则结束,否则判断表头项是否已经超时;若判断表头项已超时,则删除表头后结束;若判断表头项未超时,则结束。
73.c1:服务器协议栈处理任务获取轮询服务器接收缓冲区,当判断端口协议类型为modbustcp后判断接收缓冲区数据是否有效,若是,则进入c2;否则进入c3。
74.c2:判断协议解析是否正确,若否,则返回解析错误报文;若是,则打包ucp报文后判断ucp打包是否出错,若判断ucp打包出错,则返回解析错误报文;若判断ucp打包没有出错,则发送至控制器后添加到命令缓冲链表,进入c3。
75.c3:判断是否所有缓冲区已轮询,若是,则结束;若否,则指向下一个缓冲区后返回c1判断接收缓冲区数据是否有效。
76.本方案的组态配置的信息包括客户端配置信息和服务器配置信息,独立解析和维护。tcp任务非阻塞方式设计,相互之间调度不影响,客户端、服务器并行调度的方法,设备能够同时作为客户端和服务器应用。客户端支持单链接和单命令的在线更新,更改任何一个参数,其他链接不需要重新建立,其他命令数据能够保持。
77.应理解,实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本技术所附权利要求书所限定的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献