在根据行业数据通信的特点选择了 TCP 协议或是UDP 协议后,应用层协 议的设计显的非常重要。由于GPRS 业务是根据通信流量计费的,所以应用层 协议的设计关系到整个系统的运行费用。但是,在尽可能的减少数据流量的同 时,要保证数据通信的稳定性、可靠性、实时性,以及协议的灵活性和扩展性。 下面提出两种应用层协议的设计和实现。
4.1 二进制通信协议的设计
4.1.1 报文结构
这种通信协议以二进制编码为基础,格式如下:



命令码有,系统参数读取命令控制工程网版权所有,系统参数写命令,数据传输命令等。
系统参数设置命令,如表 4-1。

系统参数读取命令控制工程网版权所有,如表 4-2。

数据传输命令,如表 4-3。

其他命令,如表 4-4。

4.1.3 报文例子
每条命令由发起方进行超时判断和可靠性控制。每次会话至少有两条报文 的发送。下面详细说明每个命令的会话过程,并给出示例。
(1)系统参数设置命令
E1 设置服务器ip 地址和端口号:服务器ip 为上位机IP 地址,端口号为通 信服务程序监听的端口号。上位机发送报文:
11 80 32000001 E1 0601010909090000 03 0006 D3123682 1392(共24 个字节)
下位机收到后立即回复报文:
11 00 32000001 E1 0601010909090000 03 0006(共18 个字节)
E2 设置上传频率:上传频率为数据上发时间间隔单位为秒。上位机发送报
文:11 80 32000001 E2 0601010909090000 03 0002 0258(共20 个字节)
下位机收到后立即回复报文:
11 00 32000001 E2 0601010909090000 03 0002(共18 个字节) E3 设置下位机时间。
上位机发送报文:
11 80 32000001 E3 0601010909090000 03 0008 0601010909090000(共26 个字节) 下位机收到后立即回复报文:
11 00 32000001 E3 0601010909090000 03 0008(共18 个字节) E4 设置下位机心跳包间隔。单位为秒。
上位机发送报文:11 80 32000001 E4 0601010909090000 03 0001 3C 共19 个字 节。
下位机收到后立即回复报文:11 00 32000001 E4 0601010909090000 03 0001 共 18 个字节。
E5 设置报警上下限。数据域为:通道号+上限+下限[+通道号+上限+下限]
上位机发送报文:11 80 32000001 E5 0601010909090000 03 0009 04 12345678 12345678 共27 个字节。
下位机收到后立即回复报文:11 00 32000001 E5 0601010909090000 03 0009 共 18 个字节。
(2)系统参数读取命令
D1 读取服务器ip 地址和端口号:服务器ip 为上位机IP 地址,端口号为通 信服务程序的端口号。
上位机发送报文:11 80 32000001 D1 0601010909090000 03 0000 共18 个字节
下位机收到后立即回复报文:11 00 32000001 D1 0601010909090000 03 0006 D3123682 1392 共24 个字节。
D2 读取上传频率:上传频率为数据上发时间间隔单位为秒。
上位机发送报文:11 80 32000001 D2 0601010909090000 03 0000 共18 个字节
下位机收到后立即回复报文:11 00 32000001 D2 0601010909090000 03 00002 0258 共20 个字节
D3 读取下位机时间。
上位机发送报文:11 80 32000001 D3 0601010909090000 03 0000 共18 个字节
下位机收到后立即回复报文:11 00 32000001 D3 0601010909090000 03 0008 0601010909090000 共26 个字节。
D4 读取下位机心跳包间隔。单位为秒。
上位机发送报文:11 80 32000001 D4 0601010909090000 03 0000 共18 个字节
下位机收到后立即回复报文:11 00 32000001 D4 0601010909090000 03 0001 3C 共19 个字节
(3)数据传输命令
C1 定时上传:下位机根据设定的数据定时上传频率,主动发送数据。
下位机发送报文:11 00 32000001 C1 0601010909090000 03 0005 04 12345678 共 23 个字节。
上位机收到后立即回复报文:11 80 32000001 C1 0601010909090000 03 0005 共 18 个字节。
C2 请求上传实时数据:与C1 类似控制工程网版权所有,不同的是由上位机发起实时数据的上 传。
上位机发送报文:11 80 32000001 C2 0601010909090000 03 0000 共18 个字节 下位机收到后立即回复报文:11 00 32000001 C2 0601010909090000 03 0005 04 12345678 共23 个字节。
C3 请求上传历史数据,数据域为两个时间,表示请求上传两个时间之间的 历史数据。
上 位 机 发 送 报 文 : 11 80 32000001 C3 0601010909090000 03 0010 0601010909090000 0601011409090000 共34 个字节。
下位机收到后立即回复报文:11 00 32000001 C3 0601010909090000 03 000D 04 0601010909090000 12345678 共31 个字节。如果历史数据量大需要分组发送。
C4 报警上传。数据域:通道号+报警类型+报警值
下位机发送报文:11 00 32000001 C4 0601010909090000 03 0006 04 01 12345678 共24 个字节。
上位机收到后立即回复报文:11 80 32000001 C4 0601010909090000 03 0005 共 18 个字节。
C5 解除报警。数据域为:通道号+报警类型+解除报警时数据值 下位机发送报文:11 00 32000001 C5 0601010909090000 03 0006 04 01 12345678 共23 个字节。
上位机收到后立即回复报文:11 80 32000001 C5 0601010909090000 03 0006 共 18 个字节。 (4)其他命令
A1 登陆(心跳)命令:下位机一旦拨号登陆上GPRS 网络就向中心站发送。
数据域中是移动公司分配的动态IP 地址(每次拨号分配的不同),和通信端口 好。
下位机发送报文:11 00 32000001 A1 0601010909090000 03 0006 0A20629B 0CEF 共24 个字节。
上位机收到后立即回复报文:11 80 32000001 A1 0601010909090000 03 0006 共 18 个字节。
A2 控制命令打开继电器。数据域为要打开的继电器通道号。
上位机发送报文:11 80 32000001 A2 0601010909090000 03 0001 10 共19 个字 节。
下位机收到后立即回复报文:11 00 32000001 A2 0601010909090000 03 0002 10 FF 共20 个字节。
A3 控制命令关闭继电器。数据域为要关闭的继电器通道号。
上位机发送报文:11 80 32000001 A3 0601010909090000 03 0001 10 共19 个字 节。
下位机收到后立即回复报文:11 00 32000001 A3 0601010909090000 03 0002 10 00 共20 个字节。
A4 透明传输命令,用于上位机直接控制下位机所接仪器。下位将收到数据 域直接发送到指定通道,对数据不做任何处理,也就是说数据域中的数据应该 为该通道所接仪表的命令。
上位机发送报文:11 80 32000001 A4 0601010909090000 03 0005 04 FF00FF00 共23 个字节。
下位机收到后立即回复报文:11 00 32000001 A4 0601010909090000 03 0005 共 18 个字节。
A5 重新启动下位机通信模块。
上位机发送报文:11 80 32000001 A5 0601010909090000 03 0000 共18 个字节
下位机收到后立即回复报文:11 00 32000001 A5 0601010909090000 03 0000 共 18 个字节。
A6 重新启动下位机通信模块。
上位机发送报文:11 80 32000001 A6 0601010909090000 03 0000 共18 个字节
下位机收到后立即回复报文:11 00 32000001 A6 0601010909090000 03 0000 共 18 个字节。
4.2 ASCII 码的通信协议[20]
4.2.1 应答模式
完整的命令由请求方发起,响应方应答组成,具体步骤如下:
1) 请求方发送请求命令给响应方
2) 响应方接到请求命令后应答,请求方收到应答后认为连接建立
3) 响应方执行请求的操作
4) 响应方通知请求方请求执行完毕,没有应答按超时处理
5) 命令完成
4.2.2 超时重发机制
(1)请求回应的超时
一个请求命令发出后在规定的时间内未收到回应,认为超时。超时后重发, 重发规定次数后仍未收到回应认为通讯不可用,通讯结束。超时时间根据具体的 通讯方式和任务性质可自定义。 超时重发次数根据具体的通讯方式和任务性质 可自定义。
(2)执行超时
请求方在收到请求回应(或一个分包)后规定时间内未收到返回数据或命令 执行结果,认为超时,命令执行失败,结束。
4.2.3 通讯协议数据结构
所有的通讯包都是由ACSII 码字符组成(CRC 校验码除外)。报文结构如图 4-1。

通讯包结构组成www.cechina.cn,如图4-1,表4-4。

数据段结构组成,如表4-5。

字段定义
字段与其值用“=”连接;在数据区中,同一项目的不同分类值间用“,”来
分隔,不同项目之间用“;”来分隔。
(1)字段名
字段名要区分大小写,单词的首个字符为大写,其他部分为小写。
(2)数据类型
C4:表示最多4 位的字符型字串,不足4 位按实际位数。
N5: 表示最多5 位的数字型字串,不足5 位按实际位数。
N14.2: 用可变长字符串形式表达的数字型,表示14 位整数和2 位小数,
带小数点,带符号控制工程网版权所有,最大长度为18。
YYYY:日期年,如2005 表示2005 年
MM:日期月,如09 表示9 月
DD:日期日,如23 表示23 日
HH:时间小时
MM:时间分钟
SS:时间秒
ZZZ:时间毫秒
(3)字段对照表4-6,其中:xxx:代表某个污染物编号。



4.2.4 通讯流程
请求命令,如图4-2(四步或者三步)

上传命令(一步),如图4-3。

通知命令(二步),如图4-4 图4-5。


4.2.5 报文例子
(1)报警,报文如下:
上传报警事件通知命令
QN=20040516010101001;ST=32;CN=2072;PW=123456;MN=888888800000
01;Flag=0;CP=&&AlarmTime=20040506010101;101-Ala=1.1, AlarmType
=1&&
共125个字节
通知应答
ST=91;CN=9013;PW=123456;MN=88888880000001;Flag=0;CP=&&QN=200
40516010101001&&
共76个字节
(2)实时数据采集,报文如下:
取污染物实时数据
QN=20040516010101001;ST=32;CN=2011;PW=123456;MN=888888800000
01;Flag=3;CP=&&&&
请求应答
ST=91;CN=9011;PW=123456;MN=88888880000001;Flag=0;CP=&&QN=200
40516010101001;QnRtn=1&&
上传污染物实时数据
ST=32;CN=2011;PW=123456;MN=88888880000001;CP=&&DataTime=2004
0516020111;B01-Rtd=100;101-Rtd=1.1,101-Flag=N;102-Rtd=2.2,102-Flag=N
...&&
停止察看实时数据
QN=20040516010101001;ST=32;CN=2012;PW=123456;MN=888888800000
01;CP=&&&&
通知应答
ST=91;CN=9013;PW=123456;MN=88888880000001;CP=&&QN=200405160
10101001&&
4.3 两种应用层协议的比较
根据上面的论述,两种协议都可以满足系统的要求,它们又有各自的缺点 和优点。
二进制的协议报文长度比 ASCII 码的协议报文长度要短的多,也就是说在 完成同样功能的前提下二进制的协议数据流量小,也就节省通讯费用。 ASCII 码的协议要比二进制的协议更加直观,有利于工程技术人员的阅读和 调试。
ASCII 码的协议要比二进制的协议编程实现较简单,主要是对字符串的操 作,二进制的协议需要一定的位操作。
ASCII 码的协议要比二进制的协议扩展起来更加方便。
二进制的协议比 ASCII 码的协议工作流程简单CONTROL ENGINEERING China版权所有,实时性稍好。在接入监控 点数量较多的时候采用ASCII 码协议的上位机负担较重。


在线会议
论坛
专题
工控直播
新闻中心
子站
技术
社区


爱德克SE2L进阶版安全激光扫描仪有奖预约演示
剑维软件电子半导体行业白皮书有奖下载
魏德米勒麒麟系列产品赋能本土工业
Fluke 283 FC 智能万用表震撼来袭
SugonRI2.0工业编程平台免费有奖试用



























