V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
gam2046
V2EX  ›  问与答

电能表 DL/T 645-2007 求科普

  •  
  •   gam2046 · 70 天前 · 329 次点击
    这是一个创建于 70 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在做一个电表的辅助程序开发,遇到了一些困难,求懂的大佬给科普一下。

    我仔细阅读了 DL/T 645-2007 标准,同时又根据上游给了几组合法数据,与设备进行了一些调试,发现目标设备数据格式并不完全和 645 标准一致,初步怀疑可能是采用了上海规约(因为设备产自上海地区),可是网上找不到相关上海规约的具体规范文件。

    以简单的读表操作来说,上游给的正确数据应该是:68XXXXXXXXXXXX681104323733228316,但是根据 645 标准,数据域并不应该是 3237332283 。

    同时设备上的返回值是68XXXXXXXXXXXX689139323733229c843433 fa373333373333336f333b3a3d33e73333333333b73475ac3375ac33333333333333575533333333b468333333333333335116,很显然返回值的数据域也与 645 标准不一致,看起来像是经过了某种 xor 或者数据偏移。而且只有数据域参与了偏移,控制位之前的数据位都是符合 645-2007 标准的。

    很遗憾的上游需求方也是层层转包过来,具体的细节他们也无法给出更多的参考资料,只能给出许多正确的请求样例与返回样例。

    因此,现在我就只关心一点了,这个设备的返回的数据是使用了某种地方性规范还是厂家自己魔改的。各位大佬们有关于上海规约的规范性文件嘛?如果对不上规范文件的标准,那这个活不干就是了。

    2 条回复
    jimmy980352
        1
    jimmy980352  
       70 天前
    数据域的字节需要减去 0x33
    gam2046
        2
    gam2046  
    OP
       70 天前
    @jimmy980352 #1 当然,标准的 DL/T645 协议,我已经完全阅读过了,数据域即使减去 33H ,其也不是标准数据格式。现在我只是想判断一下,这是厂家自己魔改的,还是某些地方标准。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2699 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 11:05 · PVG 19:05 · LAX 03:05 · JFK 06:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.