最近在做一个电表的辅助程序开发,遇到了一些困难,求懂的大佬给科普一下。
我仔细阅读了 DL/T 645-2007 标准,同时又根据上游给了几组合法数据,与设备进行了一些调试,发现目标设备数据格式并不完全和 645 标准一致,初步怀疑可能是采用了上海规约(因为设备产自上海地区),可是网上找不到相关上海规约的具体规范文件。
以简单的读表操作来说,上游给的正确数据应该是:68XXXXXXXXXXXX681104323733228316
,但是根据 645 标准,数据域并不应该是 3237332283 。
同时设备上的返回值是68XXXXXXXXXXXX689139323733229c843433 fa373333373333336f333b3a3d33e73333333333b73475ac3375ac33333333333333575533333333b468333333333333335116
,很显然返回值的数据域也与 645 标准不一致,看起来像是经过了某种 xor 或者数据偏移。而且只有数据域参与了偏移,控制位之前的数据位都是符合 645-2007 标准的。
很遗憾的上游需求方也是层层转包过来,具体的细节他们也无法给出更多的参考资料,只能给出许多正确的请求样例与返回样例。
因此,现在我就只关心一点了,这个设备的返回的数据是使用了某种地方性规范还是厂家自己魔改的。各位大佬们有关于上海规约的规范性文件嘛?如果对不上规范文件的标准,那这个活不干就是了。
1
jimmy980352 70 天前
数据域的字节需要减去 0x33
|
2
gam2046 OP @jimmy980352 #1 当然,标准的 DL/T645 协议,我已经完全阅读过了,数据域即使减去 33H ,其也不是标准数据格式。现在我只是想判断一下,这是厂家自己魔改的,还是某些地方标准。
|