夜雨聆风学习资料网

ARTICLE · 1128483

组态软件如何采集多功能电表数据:Modbus 通讯的配置逻辑与实现路径(实操)

组态软件如何采集多功能电表数据:Modbus 通讯的配置逻辑与实现路径(实操)

组态王7.5读取多功能电表数据实录:以安科瑞ACR220EL为例

某厂房配电改造验收前,业主提出一条要求:值班室电脑上要看到车间三路进线的电压、电流、功率和累计用电量。配电柜里三台安科瑞ACR220EL多功能电表已经装好,柜门上有数码管显示,但数据只停留在柜子跟前,值班室看不到。把数据集中到上位机,靠的是电表自带的RS485通讯口和Modbus-RTU协议,上位机软件用的是组态王7.5。本文按现场实际操作顺序,把接线、查地址表、设备定义、建变量、做画面五个环节走一遍,寄存器地址全部取自安科瑞官方说明书,照着做就能把正向有功电能、三相电压、电流和功率读出来。

一、系统构成:一根双绞线把三台表串到电脑

整套系统三样东西:装组态王的电脑、USB转RS485转换器、自带RS485口的电表。ACR220EL的RS485接线端子印有A、B标识,具体位置以表壳上的接线图为准。
RS485是半双工总线,一条总线挂多台设备,拓扑必须是手拉手:从电脑出来依次进1#表、2#表、3#表,不能走星形分叉。三台表的A与A相连、B与B相连,屏蔽层单端接大地。总线较长时,在最末端一台表的A、B之间并一只120欧电阻,吸收信号反射。
通讯采用主从应答方式:组态王当主站,轮流呼叫各台电表;电表是从站,靠地址区分,ACR系列地址范围1到247。三台表通过面板按键分别设为1、2、3,波特率统一设为9600。电脑没有串口的,用USB转RS485转换器,装好驱动后记下分配到的COM口号,后面组态王里要用。
转换器优先选带光电隔离的型号,柜内强电环境里抗干扰更好。COM口号在设备管理器里查,USB转换器每次插同一个口,Windows一般沿用同一个COM号,避免换口后串口号变了、组态王里连不上设备。
图1系统连接示意

二、先摸清地址表:每个数据在哪个寄存器

Modbus-RTU协议里,主站不认识“电压”“电流”这些名字,只认寄存器地址。读什么数据、从哪个地址读,必须查电表说明书。安科瑞ACR系列说明书第6.4节给出了完整通讯地址表,本案例用到的数据整理如表1。

数据项

Modbus地址

数据类型

换算方法

相电压UA/UB/UC

0025H~0027H

word

×10^(DPT-4)

线电压UAB/UBC/UCA

0028H~002AH

word

×10^(DPT-4)

电流IA/IB/IC

002BH~002DH

word

×10^(DCT-4)

有功功率PA/PB/PC/ΣP

002EH~0031H

word

×10^(DPQ-4)

频率

003EH

word

÷100

电压电流小数位

0023H

word

高字节DPT、低字节

功率小数位

0024H

word

高字节DPQ

正向有功电能(一次侧)

0047H~0048H

Float

÷1000得kWh

正向有功电能(二次侧)

003FH~0040H

Long

÷1000×PT×CT

表1  ACR系列多功能电表本案例用到的Modbus寄存器(摘自说明书6.4节通讯地址表)

word型数据的读出值是整数,要按小数位换算成实际值,公式为:实际值=读出值×10^(DPT-4)。DPT是电压小数位数,从0023H高字节读出;电流小数位DCT在0023H低字节;功率小数位DPQ在0024H高字节。以电压为例,DPT为3时系数是10的负一次方,读出2201就是220.1V。频率读出值除以100,功率因数读出值除以1000。
数据类型选错,读回的数就完全不对。Float和Long各占两个连续寄存器,组态王里选FLOAT或LONG类型一次读两个word;如果错选成USHORT,读到的只是半个数,画面上就是一个莫名其妙的整数。地址表里每个参数占几个寄存器、是什么类型,建变量前逐行核对一遍。
电能读法有两条路。地址表里电能项的原文叫吸收有功电能,即用电方向的正向有功电能。一条读003FH起的二次侧电能,Long类型,读出值先除以1000,再乘PT变比和CT变比,得到一次侧电量。另一条读0047H起的一次侧电能,Float类型,仪表已按IEEE754格式存好含变比的电能值,说明书示例中该值换算结果为52140Wh,即52.14kWh,上位机读出后除以1000得到kWh。现场优先选第二条路,少一次乘法,也少一个出错环节。

三、组态王侧六步配置

第1步,定义设备。打开组态王工程浏览器,在设备节点下新建,驱动选PLC,再选莫迪康,选Modbus(RTU)项下的串行设备。给设备起逻辑名,例如ACR电表1#。下一步选实际串口,本案例为COM3。设备地址填1,与1#表面板设置一致。
第2步,设串口参数。双击工程浏览器里的COM3,设置波特率9600、数据位8、奇偶校验无、停止位1。这几项必须与电表面板设置完全一致,差一项整条总线都不通。
第3步,通讯测试。在设备节点上右键选“测试”,寄存器填40038,数据类型选USHORT,点读取。屏幕上出数,说明链路、地址、寄存器全对;报错就回头查接线与串口参数。这步花两分钟,后面建变量、做画面时就能少排查一层。
40038这个编号这样来:ACR地址表里的0025H是协议报文里从0起算的地址,换算成十进制是37;组态王Modbus驱动的寄存器通道号从1起算,遇到从0起算的设备地址要加1,通道号就是38;写在4区保持寄存器,就是40038。加1这条规则,现场读错地址的情况多数出在这里。
第4步,建变量。在数据词典里新建I/O变量,连接设备选ACR电表1#,寄存器与数据类型按表2填写。

变量名

组态王寄存器

数据类型

换算后显示

A相电压

40038

USHORT

220.1 V

A相电流

40044

USHORT

80.5 A

P_total(总有功功率)

40050

SHORT

44.7 kW

Freq(频率)

40063

USHORT

50.02 Hz

Ep_forward(正向有功电能)

90072

FLOAT

15234.8 kWh

表2组态王数据词典变量定义(寄存器=40000+Modbus地址+1;电能用9区FLOAT)

FLOAT型的电能变量用9区寄存器,编号规则与4区相同:90000+Modbus地址+1,0047H对应90072。9区同样对应保持寄存器,支持LONG和FLOAT类型,一次读两个连续寄存器,正好匹配0047H占用的两个word。同一台表上再定义别的32位变量时,通道号要隔开2个,从90074起往下排,挤在一起两笔数据会重叠。
有功功率有正负。有倒送电可能的回路里,P总读出来可能是负数,符号位在0024H低字节里,变量数据类型选SHORT,负号才能正常显示;错选成USHORT,负功率会变成一个极大的正数,与电表实际工况对不上。
第5步,做画面。新建画面,从工具箱拖出文本和表格,标上Ua、Ia、P、Ep等名称与单位,把显示值连接到对应变量。电压保留一位小数,功率保留一位,电能保留一位。
第6步,运行验证。切到VIEW运行系统,打开画面。1#表读通后,2#表、3#表各建一个设备,地址填2和3,变量照抄一份,改设备名和地址即可。
图2组态王设备定义、串口参数与通讯测试

四、数据换算:读出的整数怎么变成220.1V

画面上显示的220.1V,通讯线上传的是2201,中间隔一次换算。做法按省事程度排,有三种。
第一种,在变量属性里做线性化。组态王变量定义里可以设原始值与最大最小值的映射,把读出值直接转成工程量,小数位固定时这个办法最省事。
第二种,按小数位写死换算系数。说明书里DPT取值范围3到7,DCT范围1到5,DPQ范围4到10,常见配电回路DPT取3、DPQ取4,电压系数0.1、功率系数1。动笔前先读0023H和0024H,把三个小数位拿准,系数就定了。
第三种,在脚本里换算,适合电能累计、班次统计这类需要再加工的数据。
有一个现象要单独说:电能Float变量如果读出来是一串极小的数,比如10的负38次方,或者与电表面板显示差了几个数量级,大概率是浮点数字节顺序不匹配。组态王Modbus驱动提供SwapF寄存器调整字节顺序,取值0到3,对应四种字节排列。在数据词典里建一个I/O整型变量,寄存器写SwapF0,数据类型选Byte,画面上做一个输入框连到这个变量,运行时逐个切换0到3,取与面板显示一致的那个值。
图3组态王VIEW运行画面(三台电表数据集中显示)

五、注意事项

  1. 寄存器地址加1。组态王Modbus驱动的寄存器通道号从1起算,而ACR地址表里的地址是协议报文中从0起算的地址,所以每个地址都要加1再填,Modbus地址0025H对应组态王40038。每建一个变量都对一次表,不凭感觉填。
  2. 串口参数三处一致。电表面板、组态王串口设置、转换器驱动,波特率与校验方式必须一致。现场改过电表波特率后忘改组态王,通讯立刻中断。
  3. 总线拓扑与终端电阻。手拉手接线,分支线尽量短;总线超过百米时末端并120欧电阻。A、B接反是最常见的故障,现象是所有变量通讯失败,调换两根线即可排除。
  4. 地址不能重复。两台表设成同一个地址,主站呼叫时两台同时应答,总线数据冲突,读回的全是乱码。
  5. 采集周期与读取方式。变量采集周期设1到2秒足够,电表响应一帧需要几十毫秒,设太快只会增加总线负担。电压、电流、功率的地址0025H到0031H是连续的,中间没有空洞,建变量时让组态王打包读取这一段,比零散定义效率高。
  6. 电能先核对再投用。画面投用前,把上位机读出的电能与电表面板显示核对一遍,确认字节序、变比、单位都对了,再用于考核或结算参考。
  7. 调试顺序。先接线,再串口测试,然后建变量,最后做画面。每步确认通过再走下一步,出问题时排查范围小。

结语

从一根双绞线到画面上的数字,电表数据要走五步:查地址表定坐标,组态王里定义设备和变量,按小数位换算,画面绑定显示,逐级验证。整个过程里真正花时间的不是组态王操作,而是把地址表、换算公式、字节序这三件事核对清楚。多数人配到一半发现读出来的数不对,回头一查,不是地址忘了加1,就是波特率没对上。配下一批电表时,把这次确认过的参数表存进工程文档,新表照表填写,半小时能配完一个回路。

相关学习资料