101规约遇到的问题
68 4B 4B 68 88 05 15 9E 16 05 01 07 78 2C 39 2B 55 2C 00 00 47 4C 1A 4C 38 4C 75 00 93 00 8A 00 00 00 42 F0 9E EF A0 EF D0 EF A0 FC B1 FB E5 FB 35 F4 91 FD 3A FD 58 FD 23 F8 C1 09 00 00 00 00 30 02 8D 03 8D 03 8D 03 03 20 11 03 13 42 07 CD 16
以上字段是101规约模拟器中发出的
现在的问题是 怎么从信息体地址中获取相应测点数据 好纠结网上一点资料也没有,
测点的数据是存在内存里面吗? 求大神帮帮忙啊!
--------------------编程问答--------------------
十六进制?
--------------------编程问答--------------------
&&&&&&&&&&&&&&&第1帧报文&&&&&&&&&&&&&&&&
68 4B 4B 68 启动帧--(帧长度=75)
88 控制域--PRM(bit6):0(子站)
ACD(bit5要求访问位):0
DFC(bit4帧计数位有效):0
功能码(bit3~bit0)--以数据响应请求帧(响应帧)
05 链路地址:5
15 类型标识:21
9E 可变结构限定词VSQ--信息数目=30 SQ:1 顺序(如:首地址,数据1,数据2..)
16 传送原因--[T bit7:0][P/N bit6:0][原因 bit5~bit0:22]:响应第1组召唤响应第2组召唤响应第3组召唤响应第4组召唤响应第5组召唤响应第6组召唤响应第7组召唤响应第8组召唤响应第9组召唤响应第10组召唤响应第11组召唤响应第12组召唤响应第13组召唤响应第14组召唤响应第15组召唤响应第16组召唤
05 运用地址:5
++++++++++不带品质描述的测量值++++++++++
01 07 信息体地址:1793
--------数据1------
78 2C 遥测值(报文:低前,高后):11384
--------数据2------
39 2B 遥测值(报文:低前,高后):11065
--------数据3------
55 2C 遥测值(报文:低前,高后):11349
--------数据4------
00 00 遥测值(报文:低前,高后):0
--------数据5------
47 4C 遥测值(报文:低前,高后):19527
--------数据6------
1A 4C 遥测值(报文:低前,高后):19482
--------数据7------
38 4C 遥测值(报文:低前,高后):19512
--------数据8------
75 00 遥测值(报文:低前,高后):117
--------数据9------
93 00 遥测值(报文:低前,高后):147
--------数据10------
8A 00 遥测值(报文:低前,高后):138
--------数据11------
00 00 遥测值(报文:低前,高后):0
--------数据12------
42 F0 遥测值(报文:低前,高后):-28738
--------数据13------
9E EF 遥测值(报文:低前,高后):-28574
--------数据14------
A0 EF 遥测值(报文:低前,高后):-28576
--------数据15------
D0 EF 遥测值(报文:低前,高后):-28624
--------数据16------
A0 FC 遥测值(报文:低前,高后):-31904
--------数据17------
B1 FB 遥测值(报文:低前,高后):-31665
--------数据18------
E5 FB 遥测值(报文:低前,高后):-31717
--------数据19------
35 F4 遥测值(报文:低前,高后):-29749
--------数据20------
91 FD 遥测值(报文:低前,高后):-32145
--------数据21------
3A FD 遥测值(报文:低前,高后):-32058
--------数据22------
58 FD 遥测值(报文:低前,高后):-32088
--------数据23------
23 F8 遥测值(报文:低前,高后):-30755
--------数据24------
C1 09 遥测值(报文:低前,高后):2497
--------数据25------
00 00 遥测值(报文:低前,高后):0
--------数据26------
00 00 遥测值(报文:低前,高后):0
--------数据27------
30 02 遥测值(报文:低前,高后):560
--------数据28------
8D 03 遥测值(报文:低前,高后):909
--------数据29------
8D 03 遥测值(报文:低前,高后):909
--------数据30------
8D 03 遥测值(报文:低前,高后):909
CD 校验和
16 结束符
--------------------编程问答--------------------
至于里面的名词,你可以到下面地址下载看看
http://download.csdn.net/detail/hanwb2010/5272589
--------------------编程问答--------------------
既然有数据格式,照着做就可以了。
你可以先将数据放在byte[]里面。
--------------------编程问答--------------------
数据区 我也晓得 但是怎么从这里面获取数据?78 2C 遥测值(报文:低前,高后):11384
的78 2C 只是一个信息体地址 值存在哪儿里了?
--------------------编程问答--------------------
78 2c不是地址,而是数据 。如:78 2C 遥测值(报文:低前,高后):解析出来就是16进制的2c78,转化二进制就是10110001111000,转化十进制就是11384
--------------------编程问答--------------------
101规约数据可能会出现double类型的吗?
--------------------编程问答--------------------
除
--------------------编程问答--------------------
大神 出来一下 最后一个问题了 约数据可能会出现double类型的吗? 如果出现是怎么处理的
--------------------编程问答--------------------
当然可以有float类型,如果是上面的类型,提供这个101规约的厂商会给你一个倍数表(倍率),然后用解析出来的值去乘以它对应的倍数表(倍率),就好像报文中的78 2C,就要乘以对应 01 07(0701 信息体地址:1793)的倍数表(倍率)
还有一种数据类型,是IEEE4的数据类型,这种数据就是4个byte位,通过高地位排列后再通过IEEE4的解析直接解析为float类型,这种类型精度可能到不了double
--------------------编程问答--------------------
对了,再备注一下,数据39 2B 遥测值(报文:低前,高后):11065 则需要乘以02 07(0702 信息体地址:1794)的倍数表(倍率)
还有一个提示就是有的16进制数据转化为出所有的2进制后,第一位是1表明是负数,有的救不是(如2c78--0010110001111000--11384;FBB1--1111101110110001--(-31665)),看规约提供商。
101、102、103、104,modbus,modbus/tcp,cdt这些数据解析都类似,大概可以分3种类型
遥信(开关)0(off)、1(on)
遥测(模拟)----
遥脉-----
后2种你都可以当做数据,这些数据类型都是通过上面报文中的(15 类型标识:21)来判断,还有很多加品质位,加时间戳,或者加校验符等等,自己慢慢研究吧,其实研究通透挺好的
补充:.NET技术 , C#