电源:就不多说, 就是供电
单片机:编辑通信模块相关通信AT指令, 单片机通过串口发指令给通信模块,
通信模块:借助SIM手机卡与运营商基站通信,使用IP,域名建立服务器,服务器需要管理软件(接收软件)实现了远程管理。奥企科技, 全网通4G由于公司是做自动售卖机系统的,所以最近在做Java的过程中接触到了后台与机台端的一系列的通讯,想记录下自己的一点心得和想法,抛砖引玉,有相关技术的牛人还请多多指教。
首先我先介绍一下DTU这个概念,DTU是专门用于将串口数据转换为IP数据或将IP数据转换为串口数据通过无线通信网络进行传送的无线终端设备,可能这个概念有点笼统,我理解的是将机器端的指令通过DTU转化为相应的数据发送给服务器端,相应的后台发送相应信息,DTU负责接收转化并传输到机台端进行处理。
介绍了DTU的概念之后,接下来来说一下我们后台与机器端的通讯的相关流程。
举个例子来说,后台想要发送一个指令给机台端让机台端出货。
1首先,后台与机台端开发人员商定好一个通讯规则并且按照DTU协议封装,然后后台发送消息将其递交给TCP服务。
2将消息发送到TCP服务后,TCP封装数据。
3TCP服务将封装好的数据推送给DTU。
4DTU再根据DTU协议来解析数据。
5设备接收到指令,找到相对应的指令,然后执行相应的 *** 作。
在设备收到相应消息之后这整个流程并没有结束,机台端还要向后台发送一个反馈,反馈是否出货成功的指令。具体流程如下:
1设备返回响应结果给DTU。
2DTU根据相应协议封装数据信息。
3DTU将封装好的数据信息发送到TCP服务。
4TCP服务收到反馈信息后,然后根据协议解析相应数据。
5最后将解析后的数据发送给后台。
可以参照下图进行理解。
后台与机台端的通讯流程大致就是这样,毕竟初学者,可能有一些地方理解的不到位,望大家海涵。
一切安好,便是晴天。
Tank心跳包其实就是一个在终端设备和服务器之间定时通知服务器自己状态的一串自己定义的字符,按照一定的时间间隔主动进行发送,因为这种工作机制类似于我们人类的心跳所以将它称为心跳包。
心跳包作用
网络中的接收和发送数据都是使用SOCKET进行实现。但是如果此套接字已经断开,那发送数据和接收数据的时候就一定会有问题。可是如何判断这个套接字是否还可以使用呢这个就需要在系统中创建心跳机制。其实TCP中已经为我们实现了一个叫做心跳的机制。如果你设置了心跳,那TCP就会在一定的时间(比如你设置的是30秒钟)内发送你设置的次数的心跳(比如说2次),并且此信息不会影响你自己定义的协议。所谓"心跳"就是定时发送一个自定义的结构体(心跳包或心跳帧),让对方知道自己"在线"。 以确保链接的有效性。
用来判断对方(设备,进程或其它网元)是否正常运行,采用定时发送简单的通讯包,如果在指定时间段内未收到对方响应,则判断对方已经离线。用于检测TCP的异常断开。基本原因是服务器端不能有效的判断客户端是否在线,也就是说,服务器无法区分客户端是长时间在空闲,还是已经掉线的情况。所谓的心跳包就是客户端定时发送简单的信息给服务器端告诉它我还在而已。代码就是每隔几分钟发送一个固定信息给服务端,服务端收到后回复一个固定信息如果服务端几分钟内没有收到客户端信息则视客户端断开。
比如有些通信软件长时间不使用,要想知道它的状态是在线还是离线就需要心跳包,定时发包收包。发包方:可以是客户也可以是服务端,看哪边实现方便合理,一般是客户端。服务器也可以定时发心跳下去。一般来说,出于效率的考虑,是由客户端主动向服务器端发包,而不是服务器向客户端发。客户端每隔一段时间发一个包,使用TCP的,用send发,使用UDP的,用sendto发,服务器收到后,就知道当前客户端还处于“活着”的状态,否则,如果隔一定时间未收到这样的包,则服务器认为客户端已经断开,进行相应的客户端断开逻辑处理。
注册包
注册包: 一般是一种设备识别机制包。如果用户的服务器有身份识别机制,用户可以配置DTU连接网络时或者每包数据前发送有关身份识别的数据包
注册包的作用
在设备启动时,上传一组带有唯一编号的信息到服务器,用于服务器辨别是那一台设备。方便后续进行数据交互。4GDTU与组态软件通信配置过程分为三部分DTU配置、下位机配置和组态王配置。1、DTU配置首先通过串口线将DTU与计算机串口连接,点击配置工具软件的读模块配置按钮,然后接通电源即可读取DTU内的参数配置,根据下位机的通信参数来设置DTU的通信参数。2、下位机设定根据不同厂家提供的modbus协议设定方法设定,组态王支持标准的modbus协议。3、组态王通讯设置定义IO设备定义GPRS---虚拟串口设备
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)