【miscellaneous】GPRS本质论
GPRS DTU最基本的用法是:在DTU中放入一张开通GPRS功能的SIM卡,DTU上电后先注册到GPRS网络,然后通过GPRS网络和数据处理中心建立连接。这条连接涉及了无线网络运营商,因特网宽 带供应商,用户公司的网络情况,以及用户的电脑配置等环节,因此要建立这条连接需要把各部分都配置好。
在本质上,DTU和数据处理中心建立的是SOCKET连接。DTU是SOCKET客户端,数据处理中心是SOCKET的服务端。SOCKET连接有TCP协议和UDP协议之分,DTU和中心要使用相同的协议,这个一般都有配置软件进行配置。
给DTU配置好中心的IP地址和端口号后,则把DTU通过串口和用户的设备相连。DTU和水文、电力、气象、环保等用户设备通过串口连起来放置在现场。
DTU上电后首先注册到移动的网络,然后发送建立SOCKET的请求包给移动,移动把这个请求发送到因特网。中心的服务端软件接收到请求后建立连接,并发送应答信息。
DTU发送的请求信息是因特网上的数据包,有一些原因会阻止中心收到连接请求包,这样也就不能建立连接。最常见的有中心的电脑上有杀毒软件、防火墙等把这些数据包给屏蔽了。另一是中心电脑是通过路由器上网的,在路由器上要设置数据转发。SOCKET连接建立后就可以双向通信了。
工作过程
GPRS DTU上电后,首先读出内部FLASH中保存的工作参数(包括GPRS拨号参数,串口波特率,数据中心IP地址等等,事先已经配置好)。
GPRS DTU登陆GSM网络,然后进行GPRS PPP拨号。拨号成功后,GPRS DTU将获得一个由移动随机分配的内部IP地址(一般是10.X.X.X)。也就是说,GPRS DTU处于移动内网中,而且其内网IP地址通常是不固定的,随着每次拨号而变化。 我们可以理解为GPRS DTU这时是一个移动内部局域网内的设备,通过移动网关来实现与外部Internet公网的通信。这与局域网内的电脑通过网关访问外部网络的方式相似。
GPRS DTU主动发起与数据中心的通信连接,并保持通信连接一直存在。 由于GPRS DTU处于移动内网,而且IP地址不固定。因此,只能由GPRS DTU主动连接数据中心,而不能由数据中心主动连接GPRS DTU。这就要求数据中心具备固定的公网IP地址或固定的域名。数据中心的公网IP地址或固定的域名作为参数存储在GPRS DTU内,以便GPRS DTU一旦上电拨号成功,就可以主动连接到数据中心。
具体地讲,GPRS DTU通过数据中心的IP地址(如果是采用中心域名的话,先通过中心域名解析出中心IP地址)以及端口号等参数,向数据中心发起TCP或UDP通信请求。在得到中心的响应后,GPRS DTU即认为与中心握手成功,然后就保持这个通信连接一直存在,如果通信连接中断,GPRS DTU将立即重新与中心握手。
由于TCP/UDP通信连接已经建立,就可以进行数据双向通信了。
对于DTU来说,只要建立了与数据中心的双向通信,完成用户串口数据与GPRS网络数据包的转换就相对简单了。一旦接收到用户的串口数据,DTU就立即把串口数据封装在一个TCP/UDP包里,发送给数据中心。反之,当DTU收到数据中心发来的TCP/UDP包时,从中取出数据内容,立即通过串口发送给用户设备。
通过有线的数据采集中心,同时与很多个GPRS DTU进行双向通信。这是目前GPRS DTU应用系统中最为常用的方式。
核心功能
(1)内部集成TCP/IP协议栈
GPRS DTU内部封装了PPP拨号协议以及TCP/IP协议栈并且具有嵌入式操作系统,从硬件上,它可看作是嵌入式PC与无线GPRS MODEM的结合;它具备GPRS拨号上网以及TCP/IP数据通信的功能。
(2)提供串口数据双向转换功能
GPRS DTU提供了串行通信接口,包括RS232,RS485,RS422等都属于常用的串行通信方式,而且GPRS DTU在设计上大都将串口数据设计成“透明转换”的方式,也就是说GPRS DTU可以将串口上的原始数据转换成TCP/IP数据包进行传送,而不需要改变原有的数据通信内容。因此,GPRS DTU可以和各种使用串口通信的用户设备进行连接,而且不需要对用户设备作改动。
(3)支持自动心跳,保持永久在线
GPRS通信网络的优点之一就是支持GPRS终端设备永久在线,因此典型的GPRS DTU在设计上都支持永久在线功能,这就要求DTU包含了上电自动拨号、采用心跳包保持永久在线(当长时间没有数据通信时,移动网关将断开DTU与中心的连接,心跳包就是DTU与数据中心在连接被断开之前发送一个小数据包,以保持连接不被断开)、支持断线自动重连、自动重拨号等特点。
(4)支持参数配置,永久保存
GPRS DTU作为一种通信设备,其应用场合十分广泛。在不同的应用中,数据中心的IP地址及端口号,串口的波特率等都是不同的。因此,GPRS DTU都应支持参数配置,并且将配置好的参数保存内部的永久存储器件内(一般为FLASH或EEPROM等)。一旦上电,就自动按照设置好的参数进行工作。
GPRS DTU使用场合一般可以从以下几个实际应用角度来讲:
(1) 现场只能使用无线通信环境
当数据采集现场的设备需要在移动中工作,或者采集现场处于野外等情况下,无法提供有线通信的环境。这个时候,采用GPRS无线网络就可能是一个好的选择,因为GPRS网络的覆盖率在国内已经很高,全国大部分地区均有GPRS信号覆盖。
(2) 现场终端的传输距离分散
由于GPRS网络是覆盖全国的公共网络,因此采用GPRS来传输数据的一大优势就是现场采集点可以分步在全国范围,数据中心与现场采集点之间的距离不受限制。无线公网通信(包括GPRS/CDMA网络,3G网络等)这个非常显著的优点是专用无线通信网络(比如数传电台,WiMax,WLAN等)无法达到的。
(3) 适当的数据实时性要求
国内GPRS网络,其传输数据的延时为秒级范围。在绝大部分时间下,GPRS数据通信的平均整体延时为2秒左右。也就是说,从GPRS DTU端发送的数据包将大致在2秒钟后到达数据中心。反之,从数据中的数据包也大致在2秒钟后到达GPRS DTU。
总的来说,GPRS这种实时性,可以满足大多数行业应用的要求。 但是,对于一些特定的应用系统,如果不能承受2秒左右的平均延时,那么GPRS通信方式就可能是不适合的。(另外,CDMA网络的传输延时也是1秒-2秒左右)。
从另一个角度来讲,如果我们要设计的系统希望通过GPRS网络来传输数据,那么就要在设计通信协议时候考虑这种延时的情况。
(4) 适当的数据通信速率
GPRS DTU与数据中心的数据通信速率一般在10kbps-60kbps之间。从也就是说,GPRS DTU可以持续不断地以10bps-60kbps的速度向中心发送数据,反之亦然。(补充说明:国内CDMA网络的数据通信平均速率可以达到40kbps-90kbps左右)从系统应用可靠性角度来讲,我们认为当应用系统本身的数据平均通信量在30kbps以内的时候,使用GPRS网络来进行数据传输是比较适合的。
也可以从另外一方面,例如果通过GPRS网络来进行远程传输数据,那么就需要把数据平均通信量控制在30kbps之内。(注意:这里的平均持续通信速率和瞬间通信速率是有区别的,与设备串口波特率也不是同一个概念)
以上的几点可以用于判断应用系统是否适合采用GPRS网络进行数据传输,如果这几个方面都比较符合的话,那么采用GPRS DTU进行数据传输是非常合适的。
【miscellaneous】GPRS本质论的更多相关文章
- gprs/gsm 在linux下的应用
之前有篇随笔整理了一种在裸机下用状态机+超时的机制来操作gprs/gsm,linux下就不需要了,本身有完善的调度机制,在等待的流程中直接sleep就行了. 下面是飞凌OK6410下的 demo, 其 ...
- 《C#本质论》读书笔记(18)多线程处理
.NET Framework 4.0 看(本质论第3版) .NET Framework 4.5 看(本质论第4版) .NET 4.0为多线程引入了两组新API:TPL(Task Parallel Li ...
- GPRS 接入外网的过程
请问GPRS模块与Internet上主机的连接.数据传输过程 虽然按照GPRS模块的说明文档能够通过内嵌TCP/IP实现数据的传输,但是对GPRS模块和主机之间的连接关系了解得不是很多.有谁可以介绍一 ...
- sim800 gprs发送数据的AT流程
switch(send_flag) { case 1: uart_send(&huart4,"AT\r\n",4); //AT break; case 2: uart_se ...
- linux下利用GPRS模块发短信、打电话
一.开发环境 内核版本:linux-3.0 开发板:FL2440(nandflash:K9F1G08 128M) GPRS模块:SIM900 二.与发短信和拨号相关的 AT 指 ...
- 关于C#本质论和CLR via C#中译本,不吐不快
C#本质论和CLR via C#两本好书,周老师可能是俗务缠身,太忙了吧,翻译得只能让人呵呵了. 你要是忙,别接那么多活好不啦. 现在都在说供给侧改革,都在大力提倡工匠精神,我们做技术的,还是踏实点好 ...
- 分享我的“艺术品”:公共建筑能耗监测平台的GPRS通讯服务器的开发方法分享
在这个文章里面我将用一个实际的案例来分享如何来构建一个能够接受3000+个连接的GPRS通讯服务器软件,这个软件被我认为是一个艺术品,实现周期为1.5个月,文章很长,有兴趣的同志慢慢看.在这里,我将分 ...
- WinCE下GPRS自动拨号软件(GPRS AutoDial)
之前在WinCE下调试USB的3G Modem时,写过一个拨号助手RASManager,基本能用.后来车机卖到俄罗斯去,客户老M提供了一个更好的GPRS自动拨号软件GPRS AutoDial,功能完善 ...
- GPRS/3G
像GPRS/3G模块之类的应用,需要连接,登陆,初始化等步骤完成后才能传输数据,而这些步骤又比较耗时. 所以用 状态机 + 超时 的机制来实现比较合理. 如下代码片段来描述数据透传 : 状态机 + 超 ...
随机推荐
- 【每日一包0003】kind-of
github地址:https://github.com/ABCDdouyae... kind-of 判断数据类型用法:kind-of(date)返回:string 数据类型 January undef ...
- python之爬取网页数据总结(一)
今天尝试使用python,爬取网页数据.因为python是新安装好的,所以要正常运行爬取数据的代码需要提前安装插件.分别为requests Beautifulsoup4 lxml 三个插件 ...
- 【NOIP2017提高A组模拟9.5】心灵治愈
题目 好吧,我表示比赛时完全看不懂题目 题目解释 良心的出题人为一道两三句可以讲清楚的题目,又写了一大坨恶心的解释. 容斥 其实题目就是有个数组a[1~n+1],已知a[n+1]=m,1<=a[ ...
- Python 正则表达式Ⅱ
re.search方法 re.search 扫描整个字符串并返https://www.xuanhe.net/回第一个成功的匹配. 函数语法: 函数参数说明: 匹配成功re.search方法返回一个匹配 ...
- AOP 实现日志
package com.foen.foensys.config; import com.alibaba.fastjson.JSON;import com.foen.foensys.model.SysL ...
- luoguP1772 [ZJOI2006]物流运输 x
P1772 [ZJOI2006]物流运输 题目描述 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线 ...
- Unity3D_(游戏)卡牌01_启动屏界面
卡牌2D游戏展示 (游戏代码放到 卡牌04_游戏界面 文章最后面~) 游戏项目已托管到github上(里面有个32bit可执行文件) 传送门 规则 开始游戏每张卡牌初始翻开展示 展示几秒后卡牌 ...
- echarts之bootstrap选项卡不能显示其他标签echarts图表
在echarts跟bootstrap选项卡整合的时候,默认第一个选中选项卡可以正常加载echarts图表,但是切换其他选项的时候不能渲染出其他选项卡echarts图表. 解决方法: 在js中添加代码: ...
- 5、kubernetes资源清单之Pod应用190709
一.Pod镜像及端口 获取帮助文档 # kubectl explain pod.spec.containers spec.containers <[]object> pod.spec.co ...
- 怎样查看explorer里运行的DLL文件
怎样查看explorer里运行的DLL文件 tasklist /m /fi "imagename eq explorer.exe">a.txt 列出explorer用的所有模 ...