5d

来自Jack's Lab
跳转到: 导航, 搜索

目录

1 Data Collector Spec

1.1 系统功能要求

采集数据默认抄表时间间隔为 2 分钟


  • 上行到服务器,支持以太网/GPRS(可选WiFi/3G/4G),IP 地址和端口可配置,支持 DHCP
  • 通过 http 请求往边缘服务器推送数据
  • 数据间隔可调,最小粒度1min,即:每 1min 抄一次所有表,随后 http 发往边缘服务器
  • 集中器需支持配置电表的 CT 变比,自动乘上 CT 变比


  • 集中器如果数据上行 push 失败,至少要能存储一天的历史数据,待边缘服务器恢复后,自动将历史数据推送到边缘服务器 (可选)
  • 支持配置 building_id 和 gateway_id(可选)


1.2 数据上传格式


采集数据默认抄表时间间隔为 2 分钟


  • building_id 为建筑编号
  • gateway_id 为采集器编号
  • meter id 为电表地址
  • way id 为电表的路号,支持 1 路的电表 way id 为 1;支持 2 路三相电监控的路号为 1 ~ 2;支持 6 路三相电监控的路号为 1 ~ 6


  • 电表数据可以详细到三相电的每一相,就是下面 xml 格式内的 phase A, B,C
  • 每项的监测数据有电压 (U),电流 (I),功率 (P),功率因数 (PF),视在功率 (S),无功功率 (Q)


  • 三相总的(phase All)数据:功率因数 (PF),有功功率 (P),无功功率 (Q),视在功率 (S),正向有功总电能 (PEP),反向有功总电能 (NEP),正向无功总电能 (PEQ),反向无功总电能 (NEQ)


  • 电表没有的数据,数据域填 0 即可


  • 每一个时间间隔抄表,上行数据的 timestamp 必须统一 (xml: <time>20170908123000</time>,即:2017-09-08 12:30:00)


以下是电表地址 (meter id) 为 0x46(一路)和 0x48 (两路)两块表的数据同时上传例子:

<?xml version="1.0" encoding="utf-8"?>
<root>
  <common>
    <building_id>110101B001</building_id>
    <gateway_id>2</gateway_id>
    <type>report</type>
    <data operation="report">
      <sequence>0</sequence>
      <parser>yes</parser>
      <time>20170810093040</time>
      <total>1</total>
      <current>1</current>
      <meter id="46">
        <function id="1" coding="01" error="0">
          <way id="1">
            <phase id="A">
              <U>226.12</U>
              <I>7.00</I>
              <S>0.00</S>
              <P>0.70</P>
              <Q>0.00</Q>
              <PF>0.77</PF>
            </phase>
            <phase id="B">
              <U>226.12</U>
              <I>7.00</I>
              <S>0.00</S>
              <P>0.70</P>
              <Q>0.00</Q>
              <PF>0.77</PF>
            </phase>
            <phase id="C">
              <U>226.12</U>
              <I>7.00</I>
              <S>0.00</S>
              <P>0.70</P>
              <Q>0.00</Q>
              <PF>0.77</PF>
            </phase>
            <phase id="All">
              <S>0.00</S>
              <P>0.00</P>
              <Q>0.00</Q>
              <PF>0.00</PF>
              <PEP>5.00</PEP>
              <NEP>6.00</NEP>
              <PEQ>5.00</PEQ>
              <NEQ>6.00</NEQ>
            </phase>
          </way>
        </function>
      </meter>
      <meter id="48">
        <function id="1" coding="01" error="0">
          <way id="1">
            <phase id="A">
              <U>226.12</U>
              <I>0.00</I>
              <S>0.00</S>
              <P>0.00</P>
              <Q>0.00</Q>
              <PF>0.10</PF>
            </phase>
            <phase id="B">
              <U>226.12</U>
              <I>0.00</I>
              <S>0.00</S>
              <P>0.00</P>
              <Q>0.00</Q>
              <PF>0.10</PF>
            </phase>
            <phase id="C">
              <U>226.12</U>
              <I>0.00</I>
              <S>0.00</S>
              <P>0.00</P>
              <Q>0.00</Q>
              <PF>0.10</PF>
            </phase>
            <phase id="All">
              <S>0.00</S>
              <P>0.00</P>
              <Q>0.00</Q>
              <PF>0.00</PF>
              <PEP>5.00</PEP>
              <NEP>6.00</NEP>
              <PEQ>5.00</PEQ>
              <NEQ>6.00</NEQ>
            </phase>
          </way>
          <way id="2">
            <phase id="A">
              <U>226.12</U>
              <I>0.00</I>
              <S>0.00</S>
              <P>0.00</P>
              <Q>0.00</Q>
              <PF>0.20</PF>
            </phase>
            <phase id="B">
              <U>226.12</U>
              <I>0.00</I>
              <S>0.00</S>
              <P>0.00</P>
              <Q>0.00</Q>
              <PF>0.20</PF>
            </phase>
            <phase id="C">
              <U>226.12</U>
              <I>0.00</I>
              <S>0.00</S>
              <P>0.00</P>
              <Q>0.00</Q>
              <PF>0.20</PF>
            </phase>
            <phase id="All">
              <S>0.00</S>
              <P>0.00</P>
              <Q>0.00</Q>
              <PF>0.00</PF>
              <PEP>5.00</PEP>
              <NEP>6.00</NEP>
              <PEQ>5.00</PEQ>
              <NEQ>6.00</NEQ>
            </phase>
          </way>
        </function>
      </meter>
    </data>
  </common>
</root>


1.3 HTTP POST 格式

POST /dev/elec HTTP/1.1
Host: 192.168.1.20
User-Agent: curl/7.52.1
Accept: */*
Content-Length: 3402
Content-Type: application/x-www-form-urlencoded
Expect: 100-continue

<?xml version="1.0" encoding="utf-8" ?><root><common><building_id>110101B001</building_id><gateway_id>2</gateway_id><type>report</type><data operation="report"><sequence>0</sequence><parser>yes</parser><time>20180810093040</time><total>1</total><current>1</current><meter id="99"><function id="1" coding="01" error="0"><way id="1"><phase id="A"><U>226.12</U><I>7.00</I><S>0.00</S><P>0.70</P><Q>0.00</Q><PF>0.77</PF></phase><phase id="B"><U>226.12</U><I>7.00</I><S>0.00</S><P>0.70</P><Q>0.00</Q><PF>0.77</PF></phase><phase id="C"><U>226.12</U><I>7.00</I><S>0.00</S><P>0.70</P><Q>0.00</Q><PF>0.77</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way></function></meter><meter id="9A"><function id="1" coding="01" error="0"><way id="1"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.10</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.10</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.10</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="2"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.20</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.20</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.20</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="3"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.30</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.30</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.30</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="4"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.40</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.40</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.40</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="5"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.50</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.50</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.50</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="6"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.60</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.60</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.60</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way></function></meter></data></common></root>

or:

$ cat d.xml
<?xml version="1.0" encoding="utf-8" ?><root><common><building_id>110101B001</building_id><gateway_id>2</gateway_id><type>report</type><data operation="report"><sequence>0</sequence><parser>yes</parser><time>20180810093040</time><total>1</total><current>1</current><meter id="99"><function id="1" coding="01" error="0"><way id="1"><phase id="A"><U>226.12</U><I>7.00</I><S>0.00</S><P>0.70</P><Q>0.00</Q><PF>0.77</PF></phase><phase id="B"><U>226.12</U><I>7.00</I><S>0.00</S><P>0.70</P><Q>0.00</Q><PF>0.77</PF></phase><phase id="C"><U>226.12</U><I>7.00</I><S>0.00</S><P>0.70</P><Q>0.00</Q><PF>0.77</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way></function></meter><meter id="9A"><function id="1" coding="01" error="0"><way id="1"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.10</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.10</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.10</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="2"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.20</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.20</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.20</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="3"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.30</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.30</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.30</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="4"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.40</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.40</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.40</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="5"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.50</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.50</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.50</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="6"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.60</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.60</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.60</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way></function></meter></data></common></root>

$ curl -X POST -d @d.xml http://192.168.1.2:8000/dev/elec


1.4 硬件要求

单次采集,数据量很大,硬件最好满足如下基本要求:

  • 至少 32MB(建议 1GB)内存
  • 至少 32MB(建议 4GB)存储
  • 能跑嵌入式 Linux 系统
  • 支持百兆/千兆 Ethernet
  • 支持 3G/4G(可选)
  • 支持 WiFi(可选)
  • 支持 LoRa(可选)
  • 下行最少一路 RS485 最少支持 40 块表,支持多路 RS485


2 现场调试操作

现场服务器 IP 地址: 192.168.1.2

现场服务端口:8000


2.1 查看数据

2.1.1 Station 1

浏览器直接访问: http://192.168.1.2:8000/dev/data?meter_id=2B&way_id=5

XML 格式的第一条时间戳就是最新数据,如果最新数据是一周前的数据,默认监控页面就会没有数据显示。。。


2.1.2 Station 2

浏览器直接访问: http://192.168.1.2:8000/dev/data?meter_id=1B&way_id=3

XML 格式的第一条时间戳就是最新数据,如果最新数据是一周前的数据,默认监控页面就会没有数据显示。。。



2.2 上传数据测试接口

测试边缘 IoT 云接受数据是否正常:

$ cat d.xml
<?xml version="1.0" encoding="utf-8" ?><root><common><building_id>110101B001</building_id><gateway_id>2</gateway_id><type>report</type><data operation="report"><sequence>0</sequence><parser>yes</parser><time>20180810093040</time><total>1</total><current>1</current><meter id="99"><function id="1" coding="01" error="0"><way id="1"><phase id="A"><U>226.12</U><I>7.00</I><S>0.00</S><P>0.70</P><Q>0.00</Q><PF>0.77</PF></phase><phase id="B"><U>226.12</U><I>7.00</I><S>0.00</S><P>0.70</P><Q>0.00</Q><PF>0.77</PF></phase><phase id="C"><U>226.12</U><I>7.00</I><S>0.00</S><P>0.70</P><Q>0.00</Q><PF>0.77</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way></function></meter><meter id="9A"><function id="1" coding="01" error="0"><way id="1"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.10</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.10</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.10</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="2"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.20</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.20</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.20</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="3"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.30</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.30</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.30</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="4"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.40</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.40</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.40</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="5"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.50</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.50</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.50</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="6"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.60</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.60</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.60</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way></function></meter></data></common></root>
 
$ curl -X POST -d @d.xml http://192.168.1.2:8000/dev/elec
<?xml version="1.0"?>
<root><code>0</code><message>OK</message></root>


OK 后,浏览器里访问如下地址查看刚刚 POST 的数据:




2.3 Notes





2.4 Log



3 有功无功

根据《多功能电能表通信协议》DL/T645-2007的规定,我们将一个平面坐标系的横轴定义为无功功率,纵轴定义为有功功率,二个轴将一个平面划分为四个区域,左上角的为Ⅰ象限,顺时针依次为Ⅱ象限、Ⅲ象限和Ⅳ象限;Ⅰ象限和Ⅱ象限无功定义为正向无功, Ⅲ象限和Ⅳ象限无功定义为反向无功;

我们按下面的要求定义实际功率的方向:

  • 正向有功功率:即输入有功功率,是电网向用户送电,是用户用电功率;
  • 反向有功功率:即输出有功功率,是用户向电网送电,是用户发电功率;
  • 正向无功功率:即输入无功功率,是电网向用户送无功,是用户用无功功率;
  • 反向无功功率:即输出无功功率,是用户向电网送无功,是用户发无功功率;


  • Ⅰ象限无功:输入有功功率,输入无功功率,用户为阻感性负载;
  • Ⅱ象限无功:输出有功功率,输入无功功率,用户负荷相当于一台欠励磁发电机;
  • Ⅲ象限无功:输出有功功率,输出无功功率,用户负荷相当于一台过励磁发电机;
  • Ⅳ象限无功:输入有功功率,输出无功功率,用户为阻容性负载


正向无功是指系统呈感性 反向无功是指系统呈容性 ,正反向都计量无功


4 Reference

















个人工具
名字空间

变换
操作
导航
工具箱