MyEMS开源能源管理系统ModbusTCP协议配置说明

MyEMS开源能源管理系统简介

MyEMS是行业领先的开源能源管理系统,基于Python语言开发。用于工厂、建筑、商场、数据中心、园区等能源数据采集、处理、分析、报表和展示。还具有设备管理、故障诊断、工单管理、人工智能优化控制等功能。MyEMS由资深专业团队开发维护,源代码基于MIT开源软件许可协议发布。用开源助力实现碳达峰碳中和目标。

本文介绍:在MyEMS管理界面中添加Modbus TCP数据源和数据点

注意:如果您修改了Modbus TCP数据源和点,请重新启动此服务:

systemctl restart myems-modbus-tcp.service

输入数据源协议:

modbus-tcp

数据源连接示例:

{"host":"10.9.67.99","port":502,"interval_in_seconds":60]}


数据点地址示例:

{"slave_id":1, "function_code":3, "offset":0, "number_of_registers":2, "format":", "byte_swap":true}


数据点地址参数说明

slave_id(从设备地址)


01 (0x01) Read Coils
 02 (0x02) Read Discrete Inputs
 03 (0x03) Read Holding Registers
 04 (0x04) Read Input Registers
 23 (0x17) Read/Write Multiple registers

offset(寄存器地址)

请求PDU中指定的起始寄存器地址

number_of_registers(寄存器个数)

请求PDU中指定的寄存器数量

format(格式)

使用python3库结构体格式化字节。

Python字节对象用于保存表示C结构的数据。

也可以作为格式字符串(下面解释)来描述C结构中的数据布局。

可选的第一个格式字符表示字节顺序、大小和对齐方式:

@: native order, size & alignment (default)

=: native order, std. size & alignment

<: little-endian, std. size & alignment

>: big-endian, std. size & alignment

!: same as >

其余字符表示参数的类型,必须完全匹配;

这些可以以十进制重复计数开头:

x: pad byte (no data); c:char; b:signed byte; B:unsigned byte;

?: _Bool (requires C99; if not available, char is used instead)

h:short; H:unsigned short; i:int; I:unsigned int;

l:long; L:unsigned long; f:float; d:double.

特殊情况(前面的十进制计数表示长度):

s:string (array of char); p: pascal string (with count byte).

特殊情况(仅以原生格式提供):

n:ssize_t; N:size_t;

P:an integer type that is wide enough to hold a pointer.

Special case (not in native mode unless ‘long long’ in platform C):

q:long long; Q:unsigned long long

格式之间的空白将被忽略。

byte_swap(字节翻转)

布尔值表示是否交换相邻字节。

交换32位(4字节)或64位(8字节)的相邻字节。

这不适用于小端和大端的交换,请使用format。

当number_of_registers为以太2(32位)或4(64位)时,该选项有效

否则,它将被忽略。

参考资料

[1]. http://myems.io

[2]. http://www.modbus.org/tech.php

[3]. https://github.com/ljean/modbus-tk

[4]. https://docs.python.org/3/library/struct.html#format-strings

你可能感兴趣的:(能源,开源)