python - 如何通过DLMS协议读取仪表数据?
问题描述
我试图通过 DLMS 协议从仪表中读取数据,但只能'/?!\r\n'
使用另一个不能,
我尝试读取诸如 (1-1.32.7.0 [电压]) 之类的数据,但不能将其用作ASCII,
然后我通过并行RS485将 RS485 中的数据记录到USB。
所以我在下面显示的代码有效,但无论如何我都无法解码。
def readr():
rcx2 = ser.readline()
print(rcx2)
def writex(data):
ser.write(data.encode('raw_unicode_escape'))
readr()
writex('\xa0\x07\x03!\x93\x0f\x01')writex('\xa0+\x03!\x10\xfb\xaf\xe6\xe6\x00`\x1d\xa1\t\x06\x07`\x85t\x05\x08\x01\x01\xbe\x10\x04\x0e\x01\x00\x00\x00\x06_\x1f\x04\x00\x00~\x1f\x04\xb0\xca\xea')
writex('\xa0\x19\x03!2o\xd8\xe6\xe6\x00\xc0\x01\xc1\x00\x01\x01\x00\x00\x00\x00\xff\x02\x00\xc3\xad')
writex('\xa0\x19\x03!T_\xde\xe6\xe6\x00\xc0\x01\xc1\x00\x03\x01\x01 \x07\x00\xff\x02\x00P\x1c')
writex('\xa0\x07\x03!q\x13\xc5')
writex('\xa0\x07\x03!S\x03\xc7')
解决方案
在尝试读取属性之前,您需要执行许多步骤。您需要创建一个应用程序关联,在此之前您需要将串行接口的模式更改为HDLC。您可能需要安全凭证才能创建可以访问您要读取的属性的应用程序关联。您可以从DLMS 网站获得蓝皮书和绿皮书的免费摘录,但您可能需要 IEC 62056 标准或 DLMS 用户协会的完整绿皮书和蓝皮书才能建立通信。用户协会可通过用户协会网站为会员提供技术支持。
推荐阅读
- c# - Nullable.GetUnderlyingType(string) returns null
- mercurial - Multiple heads in mercurial with different changesets
- symfony - 如何在 Symfony 路由中包含主题标签
- validation - Access 2016: Short-text validation rules
- jsf - 当 PrimFaces p:chips 的焦点离开时自动创建芯片的能力
- spring-cloud-contract - How to run stub-runner docker image with local repo
- ms-access - Prevent The Details Form From Openning If No Details, Access 2007
- c++ - 如何在 C++ 中将 2 的倍数乘以 2 的 10 倍?
- asp.net - 图像处理程序未加载图像
- javascript - 未找到 Microsoft ODBC 驱动程序管理器数据源名称