****************************************
CRT与控制器RS-232通信协议(16回路版)
****************************************
一、通信模式
1. 波特率            19200bps        8位有效数据        无奇偶校验    1位停止位
2. 五线制在线检测
对方在线:数据设备准备好DSR(data-set-ready)信号是否被设置
自己在线:设置数据终端准备好DTR (data-terminal-ready)信号
备注:(两个有用的win32函数)
BOOL GetCommModemStatus(
HANDLE hFile,        // handle to communications device
LPDWORD lpModemStat  // pointer to control-register values
);
BOOL EscapeCommFunction(
HANDLE hFile,  // handle to communications device
DWORD dwFunc  // extended function to perform
);
3. 主从式、半双工通信方式
控制器为主方、CRT为从方,所有通信过程由主方发起,从方只做应答。
主方发送一帧数据,若未收到从方应答,则延时重发本帧,收到应答后才发送下一帧。
从方收到一帧数据,校验无误后发送应答帧,未收到数据或校验有错不发送任何帧。
采用窗口方式避免数据帧重复和帧混序现象出现,窗口大小为1。主方和从方各自维持一个标志位,并保证初始状态一致。主方发送新的数据帧(带上主方标志位),从方正确接收到一帧后,将该帧中的主方标志位和从方标志位比较,若一致则认为是新的数据帧,存储该帧数据并发送应答帧,同时将从方标志位翻转;如不一致则认为是重复的数据帧,丢弃该帧数据并再次发送应答帧(即收方认为主方未收到上次应答帧),此时从方标志位不变。主方若超时未收到从方应答帧,则保持主方标志位不变,并重新发送上一帧数据;若收到应答帧则将主方标志位翻转,开始发送下一新的数据帧(带上更新后的主方标志位),进入下一轮通信过程。
二、通信流程
控制器                                      CRT
        检测CRT是否在线    <----------->      检测控制器在线并给出CRT在线信号
                | 是                                      | 是
          发送握手密钥    ------------>    与自身的密钥对比,检查是否有单元信息
                | 等待应答                          | 没有        | 有
        接受应答帧并判断    <-----------  发送否认应答NCK    发送肯定应答ACK
        | ACK        | NCK                          | 等待            | 等待
    发送历史信息  发送单元信息 --------->    接收单元信息        接收历史信息
。。。        | 逐帧确认                      | 肯定应答        。。。
。。。        结束                    重新启动(软启动)    。。。
三、帧结构
1. 数据帧格式(固定帧长为34 byte,有效负荷16 byte,超长必须拆帧)
---------------------------------------------------------------------------------------------------------------------------------
偏移量        大小        存储内容        数据格式        说明
---------------------------------------------------------------------------------------------------------------------------------
0x00        1 byte        帧头标志        0x10或0x11        帧头唯一,最低位为窗口
0x01        1 byte        第1个数据高位    0x0?                高4位为0,低4位为数据
0x02        1 byte        第1个数据低位    0x0?                和上一个字节共同传输第1字节
0x03        1 byte        第2个数据高位    0x0?                高4位为0,低4位为数据
0x04        1 byte        第2个数据低位    0x0?                和上一个字节共同传输第2字节
…            …            …                …                …
0x2F        1 byte        第16个数据高位    0x0?                高4位为0,低4位为数据
0x20        1 byte        第16个数据低位    0x0?                和上一个字节共同传输第16字节
0x21        1 byte        校验位            0xF?            低4位为数据[0x01, 0x20]异或校验
---------------------------------------------------------------------------------------------------------------------------------
2. 命令帧格式(固定帧长为1 byte)
--------------------------------------------------------------------------------------------------------
偏移量        大小        存储内容        数据值            数据描述
--------------------------------------------------------------------------------------------------------
0x00        1 byte        帧头标志        0x20            确认应答ACK
                                        0x25            否认应答NCK
--------------------------------------------------------------------------------------------------------
注释:
[1]该帧结构可以保证传输数据透明;
[2]数据字段的高4位永远为0000B,校验字段的高4位永远为1111B,其它情况用于特殊字段。
四、信息存储结构
1. 历史事件
基本元素:
逻辑地址:节点号、回路号、单元号
物理地址:楼栋号、楼层号、区域号、汉字标签(单字节)
时间标签:月、日、时、分
事件标识:事件类型、单元类型
数据格式:(长度为16 byte)
------------------------------------------------------------------------------------------------------------------------
--------
偏移量        大小        存储内容        数据类型        有效值范围[1]        说明
--------------------------------------------------------------------------------------------------------------------------------
0x00        1 byte        节点号            HEX            0x01-0x80        控制器的编号
0x01        1 byte        回路号            HEX            0x01-0x80        回路1-128
0x02        1 byte        单元号            HEX            0x01-0xFE        编址单元1-254
0x03        1 byte        单元类型        HEX            0x00-0xFE        定义见附件
0x04        1 byte        楼栋号            HEX            0x01-0xFE        楼栋1-254
0x05        1 byte        楼层号            HEX            0x01-0xFE        见注释[2]
0x06        1 byte        区域号            HEX            0x01-0xFE        区域1-254[3]
0x07        1 byte        月                BCD            0x01-0x12        月份1-12
0x08        1 byte        日                BCD            0x01-0x31        日期1-31
0x09        1 byte        时                BCD            0x00-0x23        小时0-23
0x0A        1 byte        分                BCD            0x00-0x59        分钟0-59
0x0B        1 byte        事件类型        HEX            0x01-0xFE        定义见附件
0x0C        4 byte        单字节汉字        HEX            0x01-0xFE        表示4个汉字[4]
---------------------------------------------------------------------------------------------------------------------------------
注释:
[1] 除汉字标签外各字段中保留0xFF为无效值,表示无本字段内容,而起始值为0x01或0x00是根据惯例来定的;
[2]本字段0x01-0xC8表示地上1-200层,0xC9-0xFE表示地下1-54层;
[3]未分区情况下缺省为1区,即取值0x01,0x00为无效取值;
[4]本字段一个字节表示一个汉字,汉字表见附件;
2. 单元信息
基本元素:
逻辑地址:节点号、回路号、单元号
物理地址:楼栋号、楼层号、区域号、汉字标签
单元特征:单元类型、定义类型、楼显号
单元状态:预警/火警、屏蔽、双次报警
数据格式:(暂略)
3. 握手密钥信息
基本元素:
厂商标识:厂商ID号
通信协议
设备标识:控制器系列编号、控制器类型、控制器硬件版本、控制器软件版本
用户标识:用户ID号
配置标识:配置日期、配置时间、配置密码、配置签名
数据格式:(暂略)
五、附件
1. 历史事件类型定义
--------------------------------------------------------------------------------------------------------------------------------
事件类型    单元类型    历史事件名称            所属类别            说明
--------------------------------------------------------------------------------------------------------------------------------
0x01        0x00        回路通信故障恢复        故障1(撤销)        无CRT图形
            其它        单元通信故障恢复        故障2(撤销)
0x02        0x01~0x04    稳态值超限                提示1
0x05~0x06    上电触点开路            提示2
0x07~0x0D    供电24V故障            提示3
其它        保留(未知事件)
0x03        0x10        短路隔离                故障3
            其它        总线欠压                提示4
0x04        0x07~0x0C    线路1开路                提示5

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。