(图片来源网络,侵删)
本案例通过零代码开发实现不限距离的4G数据传输,可将该设备接入快速原系统,仅需增加原系统配置的Modbus超时时间(无线传输相对有线传输抗干扰较弱),由于4G数据电台通过4G网络传输数据,运营商会收取一定的流量费用,因此4G数传电台常用“远程抄表”这一类对实时性无要求以及通讯间隔较长的场景。下文将通过“远程抄表”深入了解4G云输出电台的使用方法。硬件准备1.采集设备选择下面我将通过远程采集DTSU666(正泰旗下智能电能表),支持Modbus RTU协议与电表常用的DL/T 645-2007协议,本文主要讲解Modbus RTU协议采集,有机会在将DL/T 654-2007协议采集解析方法。2.采集控制设备选择人机交互采用昆仑通态的嵌入式组态屏(TPC-7062Ti),该方案在工控环境经常应用,网上有不少入门教程,有兴趣可以去搜索了解,本案例不对“MCGSE组态环境”开发基础知识进行讲解,有疑问可通过百度搜索查询。3.远程传输设备选择采用亿佰特E95-DTU (4G02-485) 云数传电台,该电台是采用4G CAT1方案,支持移动、联通、电信运营商网络。支持微信小程序配置,可以实现一对一、一对多、多对多等复杂应用场景。设备连接与电台配置分别连接E95-DTU(4G02-485)与DTSU666和E95-DTU(4G02-485)与TPC7062Ti通讯线电台A接设备A(或屏的RS485-A),电台B接设备B(或屏的RS485-B)。分别为设备接通电源。打开微信扫码界面,扫描设备二维码进入小程序点击“扫码添加”进入扫码界面,再次扫描设备上的二维码,设置波特率和校验,点击“确定”,即可加入分组,进入分组设备列表界面。在分组设备列表页面,点击“添加”按钮,即可继续添加设备。两个设备添加完成后,电脑启动两个串口调试助手,选择串口波特率为9600bps(默认)、校验方式8N1(默认),点击“确认”。更改参数后需手动重启设备,观察LED指示灯情况,当设备双方LINKB与LINKA灯都亮时,说明已成功建立连接。具体步骤参考手册快速入门。DTSU666寄存器DTSU666支持多种电能参数统计输出,案例就不全部演示了,就以获取正向有功总电能为例。 地址(HEX)参数说明寄存器类型数据类型00 06电流互感器倍率IrAt(1~9999)保存寄存器Int1600 07电压互感器倍率UrAt(1~9999 表示电压变比 0.1~999.9)保存寄存器Int1610 1E(当前)正向有功总电能(ImpEp)保存寄存器单精度浮点(标准IEEE754格式)【注】通讯读出的所有电量数据均为二次值,不含变比,负数以补码表示,具体方法与其余寄存器通过“DTSU666”手册查询。数据转换规则(当前正向有功总电能计算方法)如下:读当前正向有功总电能 ImpEp (101EH):读命令帧:01 03 10 1E 00 02 A0 CD返回帧:01 03 04 3F F1 EB 85 28 87(3FF1EB85为浮点数据)ImpEp测量值=0x3FF1EB85(单精度浮点)×电流变比(IrAt)×电压变比(UrAt0.1)=1.89(十进制)×20×(10×0.1)= 37.8kWH。MCGS嵌入软件设备驱动与变量定义为了节省流量采用手动发送,因此不能使用官方驱动,需要使用用户自定义驱动,这里提供百度网盘下载地址(见评论区)添加用户自定义设备,不能使用官方提供的Modbus RTU驱动,官方驱动不支持手动发送,此例程是基于整点自动发送指令实现的,可以将流量消耗降到最低,若对流量消耗无限制也可使用官方驱动实现,此处不做讲解。无论是采用自定义驱动还是官方驱动,对于无线设备都需要适当增加超时时间,在后续实机调试时说明方法。本例程使用变量表如下: 变量名描述类型初值注释collection_run用于标记通讯执行中开关型00:空闲1:忙meter_IrAt_01存储电流变比数值型11-9999meter_UrAt_01存储电压变比,使用时需要×0.1数值型101-9999meter_state_01设备状态开关型00:通讯正常1:通讯异常nReturnModbus异常码开关型0返回码meter_value_01有功电能综合,原始值,不含变比数值型0——resend_set_value重发次数配置值开关型3——resend_value重发次数运行值开关型0——采集执行策略(带重发机制)MCGS嵌入式组态环境的“运行策略”下添加用户策略,具体配置如下:定时发送MCGS嵌入式组态环境的“运行策略”下添加循环策略,并添加两个策略行,一个用于总线繁忙时用于延时,一个用于触发采集,配置如下:脚本程序与调用策略配置如下图所示:人机交互界面制作添加人机交互界面“HOME”,并在启动策略中添加手动获取变比与有功总功率的Modbus指令发送函数如下:!SetDevice(设备0,6,"ReadP(4,7,WUB,2,meter_IrAt_01,meter_UrAt_01,nReturn)")!SetDevice(设备0,6,"ReadP(4,4127,DF,1,meter_value_01,nReturn)")添加13个“标签”控件,以下仅说明有关联函数“标签”,添加2个“按钮”控件。采集状态,使用两个“标签”控制,分别在变量“meter_state_01”等于1或者0时隐藏。通过DTSU666手册提供计算公式,显示当前真实有功总功率。电流变比与电压变比仅关联对应变量显示,不再说明。手动采集调用用户自定义策略“采集执行”,该按钮在自动采集过程中不生效。更新变比“按钮”控件调用脚本函数实现:!SetDevice(设备0,6,"ReadP(4,7,WUB,2,meter_IrAt_01,meter_UrAt_01,nReturn)")实机调试超时时间匹配在使用实机演示前应当根据设备工作环境对应调整超时时间,将主机连接云数传电台的RS485接口同时引出的USB转RS485设备上监控数据收发情况,利用“手动采集”按钮,触发设备采集,等待数据返回,若监控设备上统计的数据为一个Modbus请求一个Modbus返回,在多尝试几次若依旧正常则配置参数合理,若出现两个请求指令连接在一起并且存在数据放回就需要增加超时时间。仿真实机演示笔者手上并无DTSU666设备,通过Modbus Slave软件仿真设备测试;第一组数据:第二组数据:
0 评论