常见通信协议的接口调试方法.docx
《常见通信协议的接口调试方法.docx》由会员分享,可在线阅读,更多相关《常见通信协议的接口调试方法.docx(20页珍藏版)》请在冰豆网上搜索。
常见通信协议的接口调试方法
集团企业公司编码:
(LL3698-KKI1269-TM2483-LUI12689-ITT289-DQS58-MG198)
常见通信协议的接口调试方法
常见通信协议的接口调试方法
版本号:
1.0.1
发布时间:
2012-2-4
1.Modbus
Modbus是一种工业领域通信协议标准,并且现在是工业电子设备之间相当常用的连接方式。
Modbus协议是一个Master/Slave架构的协议。
有一个节点是Master节点,其他使用Modbus协议参与通信的节点是Slave节点。
Master节点类似Client/Server架构中的Client,Slave则类似Server。
工业上Modbus协议的常见架构如下图所示。
1.1.应用场合
Modbus协议主要用于测风塔数据实时读取、风机数据实时读取。
将来有可能用于集控系统中,读取各类数据和进行远程控制。
在清三营、长风风电场,莱维赛尔的测风塔使用ModbusRTU协议与功率预测系统通信。
在向阳风电场,明阳的SCADA服务器通过ModbusTCP协议向功率预测系统提供各风机的实时运行数据。
在乌力吉、浩日格吐、马力、前后查台等风电场,赛风的测风塔使用ModbusRTUoverTCP协议与功率预测系统通信。
1.2.Modbus数据模型
在Slave和Master进行通信时,Slave会将其提供的变量映射到四张不同的表上,Master从表中相应位置读/写变量,就完成了数据获取或命令下达。
这四张不同的表,称作Modbus数据模型(ModbusDataModel)。
为了理解方便,这里将四张表分别称作1位只读表、1位可读可写表、16位只读表、16位可读可写表。
(类似电力通信国标中的遥信、遥控、遥测、遥调。
)1位表用来映射单比特数据类型的变量,通常是布尔型变量;16位表用来映射双字节数据类型的变量,如int16、float16等,如果希望映射int32、float32等四字节变量,可以通过一次使用16位表中的两个位置来实现。
只读表用来映射Master只能读取的变量;可读可写表用来映射Master既可读取、又可改写的变量。
1位只读表
变量地址
0
1
2
3
4
5
...
数据区域
(1个方格表示1bit)
...
1位可读可写表
变量地址
0
1
2
3
4
5
...
数据区域
(1个方格表示1bit)
...
16位只读表
变量地址
0
1
2
3
4
5
...
数据区域
(1个方格表示1bit)
...
16位可读可写表
变量地址
0
1
2
3
4
5
...
数据区域
(1个方格表示1bit)
...
例如,在某温度监视系统中,一部温度传感器与一台上位机通过Modbus总线进行通信,温度传感器是Server,上位机是Client。
对温度传感器提供的变量做如下映射:
变量含义
数据类型
映射表
在映射表中的起始位置
高8位在前
是否停止运行
bool
1位只读表
0
-
有无故障
bool
1位只读表
2
-
外部温度
float32
16位只读表
1
否
内部温度
float32
16位只读表
3
否
外部温度告警值
float16
16位可读可写表
2
否
内部温度告警值
float16
16位可读可写表
4
否
1位只读表
变量地址
0
1
2
3
4
5
...
数据区域
(1个方格表示1bit)
是否停止运行
有无故障
...
1位可读可写表
变量地址
0
1
2
3
4
5
...
数据区域
(1个方格表示1bit)
...
16位只读表
变量地址
0
1
2
3
4
5
...
数据区域
(1个方格表示1bit)
外部温度
内部温度
...
16位可读可写表
变量地址
0
1
2
3
4
5
...
数据区域
(1个方格表示1bit)
外部温度告警值
内部温度告警值
...
再次说明,1位只读表、1位可读可写表、16位只读表、16位可读可写表等名称是本文档为了方便读者理解自拟的,在Modbus协议规范中有它们的正式名称。
另外,不同厂商的设备/软件说明书中,对这四张表的称呼又有不同。
1位只读表
1位可读可写表
16位只读表
16位可读可写表
Modbus协议规范
DiscretesInput
Coils
InputRegisters
HoldingRegisters
BachmannPLC
Disc
Coils
Regs
HRegs
SiemensPLC
InputCoil
OutputCoil
InputRegister
OutputRegister
HoldingRegister
1.3.ModbusRTU、ModbusTCP与ModbusRTUoverTCP
Modbus协议有很多种变体,最常见的是ModbusRTU、ModbusTCP和ModbusRTUoverTCP。
为了能从众多Slave中唯一地标识出希望与其通信的Slave,需要知道Slave的地址。
不同的变体对Slave地址的描述方式不同。
对于ModbusRTU、ModbusTCP和ModbusRTUoverTCP,其硬件接口与对Slave地址的描述方式如下表:
硬件接口
是否需要指定SlaveId
是否需要指定IP地址与TCP端口
其他需要指定的参数
ModbusRTU
串口
是
否
通信端口、波特率、数据位、校验方式、停止位
ModbusTCP
网口
否
是
无
ModbusRTUoverTCP
网口
是
是
无
1.4.调试工具与调试方法
ModbusPoll和ModbusSlave是ModbusTools系列软件中的两个工具软件,可运行在Windows2000/XP/Vista/7平台。
ModbusPoll可用于测试从Slave中实时读取数据。
ModbusSlave是一款Slave模拟软件,可用于模拟出一个假想的Slave设备。
modpoll?
的用法
./modpoll?
-m?
tcp?
-a?
1?
-r?
2?
-c?
?
8?
-t?
3?
-p?
5021?
-a?
后面接?
slave?
id
-r?
后面接?
起始偏移地址,这个地址要比配置文件中的地址大1
-c?
后面接?
读取数据个数
-t?
后面接数据类型
-p?
后面接端口
最后加上?
ip
liksun
liksungogogo/liksunispower/liksun
/home/opps/config/opps.cfg
2.OPCDA
OPC是OLEforProcessControl的缩写,其最大的特点是必须运行在Windows平台,因为它基于微软的OLE、COM、DCOM技术而实现。
严格地说,OPC是指一系列协议,如OPCDA、OPCHDA、OPCDA-XML、OPCAE、OPCUA、OPCDX等。
但由于OPCDA的使用最为广泛,所以一般说OPC就是指OPCDA,即OPCDataAccess。
OPCDA最新的协议版本是OPCDA3.0,目前主流的版本是OPCDA2.0。
2.1.应用场合
OPC协议目前多用于风机实时数据的读取,且主要为华锐SCADA服务器的风机实时数据接口。
将来有可能用于集控系统中,读取各类数据和进行远程控制。
在高山子、阜北、彰北、通榆等风电场,华锐的SCADA服务器通过OPC协议向功率预测系统提供各风机的实时运行数据。
2.2.OPCDA的特点
为了从同一局域网的众多机器中标识出OPC服务软件所在的机器,需要指定该机器的IP地址。
由于同一台机器上有可能运行多个OPC服务,需要指定该OPC服务的名称。
最后,通过字符串形式的变量名称来指定希望读/写的变量。
例如高山子风电场华锐SCADA系统的OPC服务器的信息和部分变量如下:
IP地址
服务名称
HrDataSvr
变量名称
含义
数据类型
是否可写
1#风机的PLC状态
Short
否
ABB_WT2.Basic.WinSpe
2#风机的机舱外风速
Float
否
ABB_WT3.Basic.ActPow
3#风机的有功功率
Float
否
ABB_WT8.Basic.bErrSta
8#风机是否故障
Boolean
否
与Modbus不同,OPC的变量名称一旦指定,其数据类型与是否可写就是确定的了。
另外,OPC的变量除了具有value属性(表示该变量的实时值)之外,还具有quality和timestamp属性,表示读取该变量时的通信质量和该变量的更新时间。
Modbus的变量只有值。
2.3.调试工具与调试方法
MatrikonOPC是一家专业开发OPC相关软件的加拿大公司。
MatrikonOPCExplorer是一款OPC客户端软件,可用于测试OPC服务器。
MatrikonOPCOPCSimulationServer是一款OPC服务器模拟软件。
OPCQuickClient是一款小巧的OPC客户端软件,无需安装,快捷简便。
3.CDT规约
CDT,也称部颁CDT,是我国的电力和自动控制领域的常见的通信接口。
与其他规约相比,它的特点是:
1)相对简单;
2)并非客户端/服务器端工作方式,而是发端不管收端是否接收,总是将数据发送出去;
3)所表示的遥测数据为12位的整数。
其中最高位为符号位,所以表示范围是-2048(负2的11次方)~2047(正2的11次方减1)。
3.1.应用场合
CDT规约目前主要用于从远动柜获取升压站处采集的风电场实时总功率,以及其他厂家的测风塔实时数据。
还用于向电网上报测风塔的实时数据。
3.2.报文说明
CDT规约传输的一组数据被封装在一个数据帧中。
数据帧包括同步字、控制字和信息字三部分。
同步字:
标识一个帧的开头,一般是三个EB90。
控制字:
记载帧的一些重要信息,如数据类型,信息字的长度等。
也是三个字节。
对遥测数据,控制字常常是7161开头。
信息字:
数据本身,长度可变(由控制字中指明)。
因为这个原因,CDT规约的原始报文中,往往可以看到三个EB90,后面再接7161。
在本系统工程实施上,这可以看做CDT规约报文的特征。
若干厂家(如许继、四方)扩展了CDT的通信规约标准,加入了自身的规范内容。
但是目前,远动装置给过来的CDT报文,都还是标准CDT报文。
3.3.倍率问题
在与第三方厂家对接CDT接口时,往往需要根据数据点表,设定一个合适的倍率。
虽然大多时候,倍率由第三方厂家指定,但是有时候由我们指定,或者我们与第三方厂家共同论定,所以知道如何设定合适的倍率是必要的。
设置方式:
CDT遥测原始数据(有时被称为码值)表示范围:
-2048~2047,其真实含义(比方,准备表示一个300MW的风场的有功功率)的数据的变化范围:
-1兆瓦~300兆瓦。
所以倍率应该小于等于300/2047。
在这个范围内选择一个合适的数字就好,但不要小于300/2047太多,否则造成表示范围的浪费,从而造成表示误差的升高;也不能大约300/2047,否则无法表示满发时风场的有功功率。
3.4.实例详解
以下例子需要好好研究,以便理解CDT规约是如何包装数据的。
设有若干数据需要CDT传输。
列表如下:
物理量
单位
倍数
70米风速
m/s
0.1
70米风向
度
0.2
50米风速
m/s
0.1
50米风向
度
0.2
10米风速
m/s
0.1
10米风向
度
0.2
气温
摄氏度
0.1
相对湿度
%
0.1
气压
百帕
1
则CDT报文往往是:
片段序号
报文内容
说明
1
eb90eb90eb90
报文起始。
2
7161052d0fxx
7161表示本报文是遥测数据;
05是信息字个数,CDT每个信息字可存放2个物理量,一共9个物理量,故信息字个数为5(向上取整);
2d表示源地址,0f表示目的地址,即接口的源地址为45(2d)、目的地址为15(0f);
xx为CRC校验码。
3
0062004006xx
00是信息字的地址;
0062(高低字节对调)对应十进制数98,即表示70米风速为9.8m/s;
0640对应十进制数1600,乘以倍数0.2,即70米风向为320度;
xx为CRC校验码。
4
0142000c06xx
01是信息字的地址;
0042对应十进制数66,即表示50米风速大小为6.6m/s;
060c对应十进制数1548,即50米风向为309.6度;
xx为CRC校验码。
5
0220000e06xx
02是信息字的地址;
0020对应十进制数32,即10米风速3.2m/s;
060e对应十进制数1550,即10米风向310度;
xx为CRC校验码。
6
035a00e600xx
03是信息字的地址;
005a对应十进制数90,即气温9摄氏度;
00e6对应十进制数230,即相对湿度为23%;
xx为CRC校验码。
7
04e5030000xx
04是信息字的地址;
03e5对应十进制数997,即气压为997百帕;
0000处是无用的数据,一般补0;
xx为CRC校验码。
3.5.调试工具与调试方法
Windows平台:
SSCOM串口调试工具(用于调试串口)
监控模拟系统调试工具(用于调试CDT规约)
Linux平台:
readcom(用于读取串口原始报文)
readcdt(用于读取和解包CDT数据)
writecdt(用于写入CDT数据)
4.长仪DETT协议
DETT(梯度风协议)是长春气象仪器厂自有的测风塔实时数据读取协议。
该协议除可读取实时数据外,还能够通过监控操作指令对测风塔的部分参数进行远程配置。
4.1.实时数据的输出格式
1、每条记录之间用“\n”分开。
2、每条记录由4段组成,每段之间用“\t”分开。
第一段:
ToyID(每个元素之间用“/”分开,每个元素每次基本上都可读到)
格式:
数据类型/站号-采集时间-唯一ID/本记录生成时间
数据类型:
现有wms1sec、wms10min、wms1hou三种
站号:
区站号(由施工人员现场确定并输入)
采集时间:
格式为YYYYMMDDHHmmss
唯一ID:
取当前时间的微秒数
本记录生成时间:
程序执行时写入当前时间(格式与采集时间一样)
第二段:
基本数据(每个元素之间用“\t”分开,元素可能缺少)
物理量依次为:
温度(℃)、相对湿度(%)、气压(hPa)、降水量(mm)
例1:
32.2\t56\t998.2\t11
例2:
32.2\t\t998.2\t11
第三段:
附加数据(每个元素之间用“/”分开,元素可能缺少)
目前的物理量为:
主板电压(V)、主板温度(℃)
例1:
?
13.6/22
例2:
?
/22
第四段:
第1~12路智能风数据(每个元素之间用“\t”分开,元素可能缺少)
共12路数据,每一路由多个数据组成,分三种情况,根据ToyID的间隔时间来判断
(注:
下述风向均以正北风向为零度,以顺时针方向为正)
(1)wms1sec
物理量为:
实时风向(度)、实时风速(m/s)
例:
270\t2.3\t210\t2.2\t\t1.1\t...
含义如下:
第一路风向270、第一路风速2.3
第二路风向210、第二路风速2.2
第三路风向无、第三路风速11
...
(2)wms10min
物理量为:
10分平均风向(度)、10分平均风速(m/s)、标准偏差
例:
270\t2.3\t0.41\t210\t\t0.33\t...
含义如下:
第一路风向270、第一路风速2.3、第一路标准偏差0.41
第二路风向210、第二路风速无、第二路标准偏差0.33
...
(3)wms1hou
物理量为:
小时平均风向(度)、小时平均风速(m/s)、极大风向(度)、极大风速(m/s)、极大风出现时间(YYYY-MM-DDHH:
mm:
ss)、3~25m/s有效风累计时间(分钟)
例:
\t4.1\t\t5.0\t2011-08-0107:
04:
36\t52\t...
含义如下:
第一路小时平均风向无
第一路小时平均风速4.1
第一路极大风向无
第一路极大风速5.0
第一路极大风出现时间2011-08-0107:
04:
36
第一路3~25m/s有效风累计时间52
...
4.2.监控操作指令
执行readdett程序时,加入参数-c,即可进入指令模式。
各指令分述如下:
(1)采集器自检(命令符:
AUTOCHECK)
返回的内容包括采集器时间,主板温度,主板电压,各传感器开启状态,以及各传感器挂接状态。
(2)设置或读取区站号(命令符:
ID)
参数:
区站号(5位数字或字母)
示例:
若设置区站号为57494,键入命令为:
ID57494↙
返回值:
↙
整体在<>中,F表示设置失败,T表示设置成功,各项由半角空格隔开,结尾为回车换行。
若读取区站号,键入命令为:
ID↙
返回值:
↙
表示当前区站号为A5890
(3)设置或读取采集器时间(命令符:
TIME)
参数:
YYYY-MM-DDHH:
MM:
SS
示例:
若设置采集器时间为2011年7月21日12时34分10秒,
键入命令为:
TIME2011-07-2112:
34:
10↙
返回值:
↙
若读取采集器时间,键入命令为:
TIME↙
返回值:
04:
36>↙
(4)设置或读取传感器开启状态(命令符:
SENST)
参数:
18位的0或1,1表示传感器开启,0表示传感器关闭,详见下表。
示例:
若开启第1,2,3路智能风,以及辅助分机1,
键入命令为:
SENST↙
返回值:
↙
若读取传感器开启状态,键入命令为:
SENST↙
返回值:
可以看到第2,3,4路智能风是开启的。
各传感器标识符如下表所示:
序号
传感器名称
传感器标识符(XXX)
序号
传感器名称
传感器标识符(XXX)
1
第1路智能风
10
第10路智能风
2
第2路智能风
11
第11路智能风
3
第3路智能风
12
第12路智能风
4
第4路智能风
13
辅助分机1
5
第5路智能风
14
保留
6
第6路智能风
15
保留
7
第7路智能风
16
保留
8
第8路智能风
17
保留
9
第9路智能风
18
保留
(5)设置或读取智能风分机号及类型(命令符:
WST)
二级命令符:
Wxx(xx取01至12)
参数:
智能风分机号,智能风类型
智能风分机号取20至99,
智能风类型取0或1,0为风速风向一体,1为只有风速。
示例:
若设置第1路智能风分机号为21,类型为只有风速,
键入命令为:
WSTW01211↙
返回值:
↙
若读取第2路智能风状态,直接键入命令:
WSTW02↙
返回值:
↙
可以看到第2路智能风分机号为22,类型为风速风向一体。
(6)清空补报数据标志(命令符:
CLEAR)
示例:
CLEAR↙
返回值:
↙
(7)擦除全部存储数据(命令符:
ERASE)
擦除整个存储器约用时90-120秒
示例:
ERASE↙
返回值:
↙
(8)复位采集器(命令符:
RESET)
示例:
RESET↙
返回值:
↙
(9)调试指令(命令符:
TEST)
参数:
SS。
说明:
SS为秒数,即每间隔指定秒数,发出实时数据,以便于系统调试
示例:
若设置每10秒发出实时数据,键入命令为:
TEST10↙
返回值:
↙
若关闭此功能,键入命令为:
TEST00↙