刀刀网
您的当前位置:首页常见通信协议的接口调试方法_1.0.

常见通信协议的接口调试方法_1.0.

来源:刀刀网
.

常见通信协议的接口调试方法

版本号:1.0.1 发布时间:2012-2-4

1. Modbus

Modbus是一种工业领域通信协议标准,并且现在是工业电子设备之间相当常用的连接方式。 Modbus协议是一个Master/Slave架构的协议。有一个节点是Master 节点,其他使用Modbus协议参与通信的节点是 Slave 节点。Master节点类似Client/Server架构中的Client,Slave则类似Server。工业上Modbus协议的常见架构如下图所示。

.

.

Modbus Slave (Server)Modbus Master 1Slave 1Modbus Master 2Slave2………… Slave 255Modbus Master n16位寄存器016位寄存器116位寄存器2……16位寄存器655351.1. 应用场合

Modbus协议主要用于测风塔数据实时读取、风机数据实时读取。将来有可能用于集控系统中,读取各类数据和进行远程控制。

在清三营、长风风电场,莱维赛尔的测风塔使用Modbus RTU协议与功率预测系统通信。

在向阳风电场,明阳的SCADA服务器通过Modbus TCP协议向功率预测系统提供各风机的实时运行数据。

在乌力吉、浩日格吐、马力、前后查台等风电场,赛风的测风塔使用Modbus RTU over TCP协议与功率预测系统通信。

1.2. Modbus数据模型

在Slave和Master进行通信时,Slave会将其提供的变量映射到四张不同的表上,Master从表中相应位置读/写变量,就完成了数据获取或命令下达。这四张不同的表,称作Modbus数据模型(Modbus Data Model)。 为了理解方便,这里将四张表分别称作1位只读表、1位可读可写表、16位只读表、16位可读可写表。(类似电力通信国标中的遥信、遥控、遥测、遥调。)1位表用来映射单比特数据类型的变量,通常是布尔型变量;16位表用来映射双字节数据类型的变量,如int16、float16等,如果希望映射int32、float32

.

.

等四字节变量,可以通过一次使用16位表中的两个位置来实现。只读表用来映射Master只能读取的变量;可读可写表用来映射Master既可读取、又可改写的变量。

1位只读表

变量地址 数据区域 (1个方格表示1 bit) ... 0 1 2 3 4 5 ... 1位可读可写表

变量地址 数据区域 (1个方格表示1 bit) ... 0 1 2 3 4 5 ... 16位只读表

变量地址 0 1 2 3 4 5 ... 数据区域 (1个方格表示1 bit) ... 16位可读可写表

变量地址 0 1 2 3 4 5 ... 数据区域 (1个方格表示1 bit) ... .

.

例如,在某温度监视系统中,一部温度传感器与一台上位机通过Modbus总线进行通信,温度传感器是Server,上位机是Client。对温度传感器提供的变量做如下映射:

变量含义 数据类型 映射表 在映射表中的起始位置 0 2 1 3 2 4 高8位在前 是否停止运行 有无故障 外部温度 内部温度 外部温度告警值 内部温度告警值 bool bool float32 float32 float16 float16 1位只读表 1位只读表 16位只读表 16位只读表 16位可读可写表 16位可读可写表 1位只读表

- - 否 否 否 否 变量地址 0 是否停止运行 1 2 3 4 5 ... 数据区域 (1个方格表示1 bit) 有无故障 ... 1位可读可写表

变量地址 数据区域 (1个方格表示1 bit) ... 0 1 2 3 4 5 ... 16位只读表

变量地址 0 1 2 3 4 5 ... 数据区域 (1个方格表示1 bit) 外部温度 内部温度 ... .

.

16位可读可写表

变量地址 0 1

2 外部温度告警值 3 4 内部温度告警值 5 ... 数据区域 (1个方格表示1 bit) ... 再次说明,1位只读表、1位可读可写表、16位只读表、16位可读可写表等名称是本文档为了方便读者理解自拟的,在Modbus协议规范中有它们的正式名称。另外,不同厂商的设备/软件说明书中,对这四张表的称呼又有不同。

1位只读表 1位可读可写表 16位只读表 Input Registers Regs Input Register Holding Register

16位可读可写表 Holding Registers HRegs Output Register Siemens PLC Input Coil Output Coil Modbus协议规范 Discretes Input Coils Bachmann PLC Disc Coils 1.3. Modbus RTU、Modbus TCP与Modbus RTU over TCP

Modbus协议有很多种变体,最常见的是Modbus RTU、Modbus TCP和Modbus RTU over TCP。 为了能从众多Slave中唯一地标识出希望与其通信的Slave,需要知道Slave的地址。不同的变体对Slave地址的描述方式不同。对于Modbus RTU、Modbus TCP和Modbus RTU over TCP,其硬件接口与对Slave地址的描述方式如下表:

Modbus RTU .

硬件接口 串口 是否需要指定Slave Id 是 是否需要指定IP地址与TCP端口 否 其他需要指定的参数 通信端口、波特率、数据位、校.

验方式、停止位 Modbus TCP Modbus RTU over TCP

网口 网口 否 是 是 是 无 无 1.4. 调试工具与调试方法

Modbus Poll和Modbus Slave是Modbus Tools系列软件中的两个工具软件,可运行在Windows 2000/XP/Vista/7平台。Modbus Poll可用于测试从Slave中实时读取数据。Modbus Slave是一款Slave模拟软件,可用于模拟出一个假想的Slave设备。

modpoll 的用法

./modpoll -m tcp -a 1 -r 2 -c 8 -t 3 -p 5021 192.168.100.1 -a 后面接 slave id

-r 后面接 起始偏移地址,这个地址要比配置文件中的地址大1 -c 后面接 读取数据个数 -t 后面接数据类型 -p 后面接端口 最后加上 ip

172.18.106.11:10004 liksun

liksungogogo/liksunispower/liksun /home/opps/config/opps.cfg

2. OPC DA

OPC是OLE for Process Control 的缩写,其最大的特点是必须运行在Windows平台,因为它基于微软的OLE、COM、DCOM技术而实现。

严格地说,OPC是指一系列协议,如OPC DA、OPC HDA、OPC DA-XML、OPC AE、OPC UA、OPC DX等。但由于OPC DA的使用最为广泛,所以一般说OPC就是指OPC DA,即OPC Data Access。

.

.

OPC DA最新的协议版本是OPC DA 3.0,目前主流的版本是OPC DA 2.0。

2.1. 应用场合

OPC协议目前多用于风机实时数据的读取,且主要为华锐SCADA服务器的风机实时数据接口。将来有可能用于集控系统中,读取各类数据和进行远程控制。

在高山子、阜北、彰北、通榆等风电场,华锐的SCADA服务器通过OPC协议向功率预测系统提供各风机的实时运行数据。

2.2. OPC DA 的特点

为了从同一局域网的众多机器中标识出OPC服务软件所在的机器,需要指定该机器的IP地址。由于同一台机器上有可能运行多个OPC服务,需要指定该OPC服务的名称。最后,通过字符串形式的变量名称来指定希望读/写的变量。

例如高山子风电场华锐SCADA系统的OPC服务器的信息和部分变量如下:

IP地址 服务名称

变量名称 ABB_WT1.Basic.PlcSta ABB_WT2.Basic.WinSpe 含义 1#风机的PLC状态 2#风机的机舱外风速 3#风机的有功功率 8#风机是否故障 数据类型 Short Float 是否可写 否 否 86.21.0.19 HrDataSvr ABB_WT3.Basic.ActPow ABB_WT8.Basic.bErrSta

Float Boolean 否 否 与Modbus不同,OPC的变量名称一旦指定,其数据类型与是否可写就是确定的了。

另外,OPC的变量除了具有value属性(表示该变量的实时值)之外,还具有quality和timestamp属性,表示读取该变量时的通信质量和该变量的更新时间。Modbus的变量只有值。

2.3. 调试工具与调试方法

MatrikonOPC是一家专业开发OPC相关软件的加拿大公司。MatrikonOPC Explorer是一款OPC客户端软件,可用于测试OPC服务器。MatrikonOPC OPC Simulation Server是一款OPC服务器模拟软件。

.

.

OPC Quick Client是一款小巧的OPC客户端软件,无需安装,快捷简便。

3. CDT规约

CDT,也称部颁CDT,是我国的电力和自动控制领域的常见的通信接口。与其他规约相比,它的特点是:

1)相对简单;

2)并非客户端/服务器端工作方式,而是发端不管收端是否接收,总是将数据发送出去;

3)所表示的遥测数据为12位的整数。其中最高位为符号位,所以表示范围是-2048(负2的11次方)~2047(正2的11次方减1)。

3.1. 应用场合

CDT规约目前主要用于从远动柜获取升压站处采集的风电场实时总功率,以及其他厂家的测风塔实时数据。还用于向电网上报测风塔的实时数据。

3.2. 报文说明

CDT规约传输的一组数据被封装在一个数据帧中。数据帧包括同步字、控制字和信息字三部分。 同步字:标识一个帧的开头,一般是三个EB90。

控制字:记载帧的一些重要信息,如数据类型,信息字的长度等。也是三个字节。对遥测数据,控制字常常是71 61开头。

信息字:数据本身,长度可变(由控制字中指明)。

因为这个原因,CDT规约的原始报文中,往往可以看到三个EB 90,后面再接71 61。在本系统工程实施上,这可以看做CDT规约报文的特征。

若干厂家(如许继、四方)扩展了CDT的通信规约标准,加入了自身的规范内容。但是目前,远动装置给过来的CDT报文,都还是标准CDT报文。

3.3. 倍率问题

在与第三方厂家对接CDT接口时,往往需要根据数据点表,设定一个合适的倍率。虽然大多时候,倍率由第三方厂家指定,但是有时候由我们指定,或者我们与第三方厂家共同论定,所以知道如何设定合适的倍率是必要的。

设置方式:CDT遥测原始数据(有时被称为码值)表示范围:-2048~2047,其真实含义(比方,准备表示一个300MW的风场的有功功率)的数据的变化范围:-1兆瓦~300兆瓦。所以倍率应该小于等于300/2047。在这个范围内选择一个合适的数字就好,但不要小于300/2047太多,否则造成表示范围的浪费,从而造成表示误差的升高;也不能大约300/2047,否则无法表示满发时风场的有功功率。

3.4. 实例详解

以下例子需要好好研究,以便理解CDT规约是如何包装数据的。

.

.

设有若干数据需要CDT传输。列表如下:

物理量 70米风速 70米风向 50米风速 50米风向 10米风速 10米风向 气温 相对湿度 气压

则CDT报文往往是:

片段序号 1 报文内容 eb 90 eb 90 eb 90 报文起始。 71 61表示本报文是遥测数据; 05是信息字个数,CDT每个信息字可存放2个物理量,一共9个物理量,故信息字个数为5(向上取整); 2 71 61 05 2d 0f xx 2d表示源地址,0f表示目的地址,即接口的源地址为45(2d)、目的地址为15(0f); xx为CRC校验码。 00是信息字的地址; 00 62(高低字节对调)对应十进制数98,即表示70米风速为00 62 00 40 06 xx 9.8m/s; 06 40对应十进制数1600,乘以倍数0.2,即70米风向为320度; xx为CRC校验码。 01是信息字的地址; 4 01 42 00 0c 06 xx 00 42对应十进制数66,即表示50米风速大小为6.6m/s; 06 0c对应十进制数1548,即50米风向为309.6度; .

单位 m/s 度 m/s 度 m/s 度 摄氏度 % 百帕 0.1 0.2 0.1 0.2 0.1 0.2 0.1 0.1 1 倍数 说明 3 .

xx为CRC校验码。 02是信息字的地址; 00 20对应十进制数32,即10米风速3.2m/s; 5 02 20 00 0e 06 xx 06 0e对应十进制数1550,即10米风向310度; xx为CRC校验码。 03是信息字的地址; 00 5a对应十进制数90,即气温9摄氏度; 6 03 5a 00 e6 00 xx 00 e6对应十进制数230,即相对湿度为23%; xx为CRC校验码。 04是信息字的地址; 03 e5对应十进制数997,即气压为997百帕; 7 04 e5 03 00 00 xx 00 00处是无用的数据,一般补0; xx为CRC校验码。

3.5. 调试工具与调试方法

Windows平台:

SSCOM串口调试工具(用于调试串口) 监控模拟系统调试工具(用于调试CDT规约)

Linux平台:

readcom(用于读取串口原始报文) readcdt(用于读取和解包CDT数据) writecdt(用于写入CDT数据)

4. 长仪DETT协议

DETT(梯度风协议)是长春气象仪器厂自有的测风塔实时数据读取协议。该协议除可读取实时数据外,还能够通过监控操作指令对测风塔的部分参数进行远程配置。

.

.

4.1. 实时数据的输出格式

1、每条记录之间用“\\n”分开。

2、每条记录由4段组成,每段之间用“\”分开。

第一段:ToyID(每个元素之间用“/”分开,每个元素每次基本上都可读到) 格式:数据类型/站号-采集时间-唯一ID/本记录生成时间 数据类型:现有wms1sec、wms10min、wms1hou三种 站号:区站号(由施工人员现场确定并输入) 采集时间:格式为 YYYYMMDDHHmmss 唯一ID:取当前时间的微秒数

本记录生成时间:程序执行时写入当前时间(格式与采集时间一样) 例:wms1sec/fuxin_fubei-GW001-20111110155814-422105/20111110155815

第二段:基本数据(每个元素之间用“\”分开,元素可能缺少)

物理量依次为:温度(℃)、相对湿度(%)、气压(hPa)、降水量(mm) 例1:32.2\56\998.2\11 例2:32.2\\998.2\11

第三段:附加数据(每个元素之间用“/”分开,元素可能缺少) 目前的物理量为:主板电压(V)、主板温度(℃) 例1: 13.6/22 例2: /22

第四段:第1~12路智能风数据 (每个元素之间用“\”分开,元素可能缺少) 共12路数据,每一路由多个数据组成,分三种情况,根据ToyID的间隔时间来判断 (注:下述风向均以正北风向为零度,以顺时针方向为正) (1)wms1sec

物理量为:实时风向(度) 、实时风速(m/s) 例: 270\2.3\210\2.2\\1.1\ ... 含义如下:

.

.

第一路风向 270、第一路风速 2.3 第二路风向 210、第二路风速 2.2 第三路风向 无、第三路风速 11 ...

(2)wms10min

物理量为:10分平均风向(度) 、10分平均风速(m/s)、标准偏差 例:270\2.3\0.41\210\\0.33\ ... 含义如下:

第一路风向 270、第一路风速 2.3、第一路标准偏差 0.41 第二路风向 210、第二路风速 无、第二路标准偏差 0.33 ...

(3)wms1hou

物理量为: 小时平均风向(度)、小时平均风速(m/s)、极大风向(度)、极大风速(m/s)、极大风出现时间 (YYYY-MM-DD HH:mm:ss)、3~25m/s有效风累计时间(分钟)

例:\4.1\\5.0\2011-08-01 07:04:36\52\ ... 含义如下:

第一路小时平均风向 无 第一路小时平均风速 4.1 第一路极大风向 无 第一路极大风速 5.0

第一路极大风出现时间 2011-08-01 07:04:36 第一路3~25m/s有效风累计时间 52 ...

4.2. 监控操作指令

执行readdett程序时,加入参数-c,即可进入指令模式。各指令分述如下:

(1)采集器自检(命令符:AUTOCHECK)

返回的内容包括采集器时间,主板温度,主板电压,各传感器开启状态,以及各传感器挂接状态。

(2)设置或读取区站号(命令符:ID)

.

.

参数:区站号(5位数字或字母)

示例:若设置区站号为57494,键入命令为:ID 57494↙ 返回值:

整体在<>中,F表示设置失败,T表示设置成功,各项由半角空格隔开,结尾为回车换行。 若读取区站号,键入命令为:ID↙

返回值:↙ 表示当前区站号为A50

(3)设置或读取采集器时间(命令符:TIME) 参数:YYYY-MM-DD HH:MM:SS

示例:若设置采集器时间为2011年7月21日12时34分10秒, 键入命令为:TIME 2011-07-21 12:34:10↙ 返回值:

若读取采集器时间,键入命令为:TIME↙

返回值:

(4)设置或读取传感器开启状态(命令符:SENST)

参数:18位的0或1,1表示传感器开启,0表示传感器关闭,详见下表。 示例:若开启第1,2,3路智能风,以及辅助分机1, 键入命令为:SENST 111000000000100000↙ 返回值:↙ 若读取传感器开启状态,键入命令为:SENST↙

返回值:↙ 可以看到第2,3,4路智能风是开启的。

各传感器标识符如下表所示:

传感器标识符(XXX) 传感器标识符(XXX) 序号 传感器名称 序号 传感器名称 1 2 3 .

第1路智能风 第2路智能风 第3路智能风 10 11 12 第10路智能风 第11路智能风 第12路智能风 .

4 5 6 7 8 9

第4路智能风 第5路智能风 第6路智能风 第7路智能风 第8路智能风 第9路智能风 13 14 15 16 17 18 辅助分机1 保留 保留 保留 保留 保留 (5)设置或读取智能风分机号及类型(命令符:WST) 二级命令符:Wxx(xx取01至12) 参数:智能风分机号,智能风类型 智能风分机号取20至99,

智能风类型取0或1,0为风速风向一体,1为只有风速。 示例:若设置第1路智能风分机号为21,类型为只有风速, 键入命令为:WST W01 21 1↙ 返回值:↙ 若读取第2路智能风状态,直接键入命令: WST W02↙

返回值:

可以看到第2路智能风分机号为22,类型为风速风向一体。

(6)清空补报数据标志(命令符:CLEAR) 示例:CLEAR↙

返回值:

(7)擦除全部存储数据(命令符:ERASE) 擦除整个存储器约用时90-120秒 示例:ERASE↙

返回值:

.

.

(8)复位采集器(命令符:RESET) 示例:RESET↙

返回值:

(9)调试指令(命令符:TEST) 参数:SS。

说明:SS为秒数,即每间隔指定秒数,发出实时数据,以便于系统调试 示例:若设置每10秒发出实时数据,键入命令为:TEST 10↙

返回值:

若关闭此功能,键入命令为:TEST 00↙

.

因篇幅问题不能全部显示,请点此查看更多更全内容