用户中心

资讯 > SCADA

基于GPRS和Internet的SCADA系统研究与实现(三)

作者:季堃2010.09.02阅读 4041

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

        4.1.2 命令码(CMD 字段)
        命令码有,系统参数读取命令,系统参数写命令,数据传输命令等。
        系统参数设置命令,如表 4-1。

        系统参数读取命令,如表 4-2。

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

        其他命令,如表 4-4。

        4.1.3 报文例子
        每条命令由发起方进行超时判断和可靠性控制。每次会话至少有两条报文 的发送。下面详细说明每个命令的会话过程,并给出示例。
        (1)系统参数设置命令
        E1 设置服务器ip 地址和端口号:服务器ip 为上位机IP 地址CONTROL ENGINEERING China版权所有,端口号为通 信服务程序监听的端口号。上位机发送报文:
        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 地址CONTROL ENGINEERING China版权所有,端口号为通 信服务程序的端口号。
        上位机发送报文: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) 响应方通知请求方请求执行完毕www.cechina.cn,没有应答按超时处理
        5) 命令完成
        4.2.2 超时重发机制
        (1)请求回应的超时
        一个请求命令发出后在规定的时间内未收到回应,认为超时。超时后重发, 重发规定次数后仍未收到回应认为通讯不可用,通讯结束。超时时间根据具体的 通讯方式和任务性质可自定义。 超时重发次数根据具体的通讯方式和任务性质 可自定义。
        (2)执行超时
        请求方在收到请求回应(或一个分包)后规定时间内未收到返回数据或命令 执行结果,认为超时,命令执行失败,结束。
        4.2.3 通讯协议数据结构
        所有的通讯包都是由ACSII 码字符组成(CRC 校验码除外)。报文结构如图 4-1。


        通讯包结构组成,如图4-1,表4-4。

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

        字段定义
        字段与其值用“=”连接;在数据区中,同一项目的不同分类值间用“,”来
        分隔,不同项目之间用“;”来分隔。
        (1)字段名
        字段名要区分大小写,单词的首个字符为大写,其他部分为小写。
        (2)数据类型
        C4:表示最多4 位的字符型字串,不足4 位按实际位数。
        N5: 表示最多5 位的数字型字串,不足5 位按实际位数。
        N14.2: 用可变长字符串形式表达的数字型,表示14 位整数和2 位小数,
        带小数点,带符号,最大长度为18。
        YYYY:日期年www.cechina.cn,如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 码的协议要比二进制的协议编程实现较简单,主要是对字符串的操 作www.cechina.cn,二进制的协议需要一定的位操作。
        ASCII 码的协议要比二进制的协议扩展起来更加方便。
        二进制的协议比 ASCII 码的协议工作流程简单,实时性稍好。在接入监控 点数量较多的时候采用ASCII 码协议的上位机负担较重。

版权声明:版权归控制工程网所有,转载请注明出处!

频道推荐

关于我们

控制工程网 & CONTROL ENGINEERING China 全球工业控制、自动化和仪器仪表领域的先锋媒体

CE全球

联系我们

商务及广告合作
任小姐(北京)                 夏小姐(上海)
电话:010-82053688      电话:18616877918
rendongxue@cechina.cn      xiashuxian@cechina.cn
新闻投稿:王小姐

关注我们的微信

关于我们 | 网站地图 | 联系我们
© 2003-2020    经营许可编号:京ICP证120335号
公安机关备案号:110102002318  服务热线:010-82053688