0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

DTU脚本编程_本地采集脚本指令详解

物联网资讯 2018-06-01 17:02 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

前言:

通过配置 DTU 的脚本指令实现 DTU 定时自动采集,用户只需知道外接仪表、无需再单独 增加控制器 传感器的采集流程,然后通过编写脚本指令即可让 DTU 按照用户的流程自动采集、上传数 据。脚本实现了基本的开关控制、延时控制、指令下发、循环控制、上报控制、插入自定义 报文头、是否接收仪表应答、波特率改变等功能,能满足大部分仪表的采集需求。

此文档定义的脚本指令主要是为了实现 DTU 自动采集功能,在某种情况下,用户可能 需要数据中心远程控制采集或者干预一些开关动作,众山 DTU 也支持用户的数据中心通过 SHELL:+脚本的形式发送给 DTU,DTU 收到此数据会临时执行一次数据中心下发的脚本来实 现远程采集和控制。如数据中心下发:SHELL:@W1=1@C=0102@W1=0 DTU 收到 SHELL:开 始的数据不会透传给 DTU 串口,而是执行一次脚本。--本文针对众山科技DTU脚本指令详解。

image.png

一、脚本格式:

@cmd=value

@:脚本头,每一条脚本指令都使用@开始。

cmd:指令,为 1 或多个字符、数字组成的字符串,不区分大小写,下面详解每一条脚 本指令的含义。

value:指令动作,指定指令需要执行的值。


二、脚本指令详解:

E: ECHO 回显,此脚本指令控制 C 脚本指令下发给仪表的采集命令是否需要同时上报

给中心,value 为 1 表示需要回显,value 为 0 表示不回显。不使用此指令时默认为

不回显。此指令为整个脚本全局生效指令,直到脚本结束。如果有些采集指令需要

回显有些不需要回显只需要在相应的采集指令前加入此指令做相应的控制即可。

示例:

@E=1 回显采集命令

@E=0 不回显采集命令

M:标记,此脚本指令无实际动作,用于产生一个标记,和 L 指令配合完成 LOOP 循环

控制。value 为 1-3,支持 3 个标记,循环嵌套时需要使用不同的标记,非嵌套循环

可以重复使用。

示例:

@M=1 产生 M1 标记点

@M=2 产生 M2 标记点

L: 循环脚本,此脚本指令控制循环到标记点的次数,用于需要对仪表进行多次重复数 据

采集的场合,比如需要对仪表连续采集 3 次数据。value 为 x,y 的格式,x 表示标 记点,值

为 1-3 表示 M1~M3 标记点,y 为循环次数。3 个标记点允许实现 3 层循环 的嵌套,不嵌套

的循环无限制,可以重复使用标记点。脚本执行到 L 指令时立即跳转到指定的 M 标记点,

直到达到循环指定的次数后,继续往后面执行。

示例:

@L=1,3 表示跳转到 M1 标记,循环执行 3 次。

@L=2,2 表示跳转到 M2 标记,循环执行 2 次。

T: 数据上报中心控制,此脚本指令用于实现多次采集周期结束后一次性上报数据的 应用,比如

用户设置每 5 分钟采集一次数据,1 小时上报一次,就可以通过设置此 指令值为 12 来实现。

value 表示次数,默认为 1 次,即当次采集周期结束后立即上 报。此指令为整个脚本全局生效指

令,直到脚本结束,并且只允许出现一次此指令, 如果此脚本出现多次时,以最后一次的值为有

效。注意:此指令控制的上报次数以 一次脚本完全执行结束为一个周期,与 L 指令控制的循环执

行不产生影响。

示例:

@T=3 表示 3 个采集周期结束后才上报数据。

B: 波特率控制,此脚本指令用于外接多个不同波特率仪表或者仪表波特率与 DTU 串口 波特率不相

同时临时改变 DTU 的串口波特率。value 为波特率值,需要在发送采集 命令前通过此指令改变 DTU

波特率与仪表波特率一致。当脚本执行结束,会自动 回到 DTU 默认的串口波特率。

示例:

@B=38400

H: 数据头控制,此脚本指令用于在采集的仪表数据前加入用户自定义的数据头或用 户便于解析的

特征码等, 比如在进行多个仪表数据采集时加入分隔符便于区分不 同的仪表数据,value 为可见的

HEX 字符,比如 123 表示为 313233。此指令执行一 次立即失效,如果需要在不同的采集指令前插

入特征码需要分开加入此指令,特征 码可以相同也可以不同。

示例:

@H=AA5501

@H=AA5502

C: 仪表下发命令,此脚本指令用于定义下发给仪表的采集命令内容,value 为可见的 HEX 字符,执

行到此脚本 DTU 会通过串口把内容发送给仪表,同时如果回显为开 DTU 会立即把此内容加入上报队列。

示例:

下发 Modbus 采集指令:01 03 00 01 00 01 12 34

脚本表示为:@C=0103000100011234

A: 接收仪表应答控制,此脚本指令用于控制 DTU 是否接收仪表的应答,value 为 1 表 示接收应答,

value 为 0 表示不接收应答。不使用此指令时默认为接收应答。此指 令为整个脚本全局生效指令,直到

脚本结束,如果有些采集指令需要接收应答有些 不需要接收应答只需在相应的采集命令前加入此指令做

相应的控制即可

示例:

@A=0 不接收后面的仪表应答数据

D: 延时控制,此脚本指令用于控制延时,DTU 发送采集命令后的延时控制或者等待 应答的延时控制。

value 为数字+单位的格式,单位有 S(秒)、M(分钟)、H(小时),DTU 遇到此指令后等待相应的延时值再

继续执行脚本。

示例:

@D=10S (等待 10 秒)

@D=2M (等待 2 分钟)

@D=1H (等待 1 小时)

S: 立即上报数据控制,此脚本指令用于控制 DTU 立即上报仪表数据。value 为 1 表 示立即上报,默认

情况下 DTU 执行完 T 指令控制的采集次数后上报(T 默认为 1, 每次脚本执行结束都上报),用户在需

要分开上报多个仪表数据时或者 1 个仪表的 多条数据时,可以在发送采集命令后,DTU 已经收到仪表应

答时插入@S=1 来立即 上报之前的数据。

示例:

@S=1 立即上报

W1:开关 1 控制,此脚本指令用于 DTU 控制外接仪表的电源。value 为 1表 示 开 , value 为 0 表示关。

示例:

@W1=1 打开开关 1

@W1=0 关闭开关 1

注:需要硬件支持有开关控制的型号才支持此指令。

W2:开关 2 控制,此脚本指令用于 DTU 控制外接仪表的电源。value 为 1表 示 开 , value 为 0 表示关。

示例:

@W2=1 打开开关 2

@W2=0 关闭开关 2

注:需要硬件支持有开关控制的型号才支持此指令。

W3:开关 3 控制,此脚本指令用于 DTU 控制外接仪表的电源。value 为 1表 示 开 , value 为 0 表示关。

示例:

@W3=1 打开开关 3

@W3=0 关闭电开关 3

注:需要硬件支持有开关控制的型号才支持此指令。

I1:数字量 DI1 状态上报,DI1 触发控制,此脚本指令用于 DTU 采集 DI1 的状态以及配 置 DI1 的状态改变

时触发采集脚本的执行。 value 的值可为:?(报告状态)、 0 (下降沿触发采集)、1(上升沿触发采集)、2(下降沿和上升沿均触发采集)、

其他(不触发采集)。默认 DI1 不触发采集。此指令可以出现多个,比如需要上报 DI1 状态同时又需要配置 DI1 的触发采集。如:配置 DI1 为下降沿触发采集且同时 上报 DI1 状态,可配置脚本@I1=0@I1=?

示例:

@I1=? 采集 DI1 状态,小提示:可在前面插入 H 指令加入便于识别的头。

@I1=0 DI1 下降沿触发采集

@I1=1 DI1 上升沿触发采集 @I1=2 DI1 上升沿和下降沿触发采集

@I1=其他 DI1 不触发采集(默认,可省略),即使不触发采集也可在脚本 中插入

@I1=?让 DTU 定时采集时报告 DI1 的状态。

I2:数字量 DI2 状态上报,DI2 触发控制,此脚本指令用于 DTU 采集 DI2 的状态以及配 置 DI2 的状态改变时触发采集脚本的执行。 value 的值可为:?(报告状态)、 0 (下降沿触发采集)、1(上升沿触发采集)、2(下降沿和上升沿均触发采集)、 其他(不触发采集)。默认 DI2 不触发采集。此指令可以出现多个,比如需要上报 DI2 状态同时又需要配置 DI2 的触发采集。如:配置 DI2 为下降沿触发采集且同时 上报 DI2 状态,可配置脚本@I2=0@I2=?

示例:

@I2=? 采集 DI2 状态,小提示:可在前面插入 H 指令加入便于识别的头。

@I2=0 DI2 下降沿触发采集 @I2=1 DI2 上升沿触发采集

@I2=2 DI2 上升沿和下降沿触发采集 @I2=其他 DI2 不触发采集(默认,可省略),即使不触发采集也可在脚本 中插入

@I2=?让 DTU 定时采集时报告 DI2 的状态。

三、应用案例 在众山 DTU 的串口外接 2 个 RS485 接口的仪表,2 个仪表使用 W1 开关控制电源,打开 电源需要 10 秒时间让仪表稳定,仪表为标准的 Modbus 协议,Modbus 地址分别为 01 和 02。 每个仪表需要采集 2 个寄存器数据,寄存器地址为 0000 和 0001,仪表 1 的 2 个寄存器采集 指令为: 0103000000010000 和 0103000100010000。仪表 2 的 2 个寄存器采集指令为: 0203000000010000 和 0203000100010000。一次采集需要连续采集 3 次数据,CRC 校验需用户自己计算。仪表 1 的波特率为 4800,仪表 2 的波特率为 38400。 用户需求为每 1 小时采集一次数据,一次数据采集需要采集到 2 个仪表的 2 个寄存器数 据,并且需要采集 3 次,上报的数据需要回显采集命令,在每条数据前加入 AA55 以便于用 户解析数据,每条采集指令之间延时 3 秒,都需要接收仪表应答。

首先需要设置 DTU 的仪表自动采集周期参数为 3600 秒。

脚本设计如下,和默认值一致的脚本指令可省略

1:每次采集周期结束立即上报

@E=1@T=1@W1=1@D=10S@M=1@B=4800@H=AA55@C=0103000000010000@D=3S@H=AA5

5@C=0103000100010000@D=3S@B=38400@H=AA55@C=0203000000010000@D=3S@H=AA55 @C=0203000100010000@D=3S@L=1,3@W1=0 注:@T=1 可省略,默认即为 1 次采集周期结束立即上报。


2:每 3 小时上报一次数据 @E=1@T=3@W1=1@D=10S@M=1@B=4800@H=AA55@C=0103000000010000@D=3S@H=AA5 5@C=0103000100010000@D=3S@B=38400@H=AA55@C=0203000000010000@D=3S@H=AA55 @C=0203000100010000@D=3S@L=1,3@W1=0 注:3 次采集周期结束才上报一次数据,所以@T=3


3:每采集到 1 个仪表的 2 个寄存器数据时分开上报 @E=1@W1=1@D=10S@M=1@B=4800@H=AA55@C=0103000000010000@D=3S@H=AA55@C= 0103000100010000@D=3S@S=1@B=38400@H=AA55@C=0203000000010000@D=3S@H=AA55 @C=0203000100010000@D=3S@S=1@L=1,3@W1=0 注:采集完一个仪表的 2 个数据后用@S=1 立即上报


4:每采集到 1 个仪表的 1 个寄存器数据时分开上报 @E=1@W1=1@D=10S@M=1@B=4800@H=AA55@C=0103000000010000@D=3S@S=1@H=AA5 5@C=0103000100010000@D=3S@S=1@B=38400@H=AA55@C=0203000000010000@D=3S@S= 1@H=AA55@C=0203000100010000@D=3S@S=1@L=1,3@W1=0 注:每采集一个数据后用@S=1 立即上报

四、脚本指令默认值 1、@E=0 默认为不回显,用户不需要上报采集指令时可省略此脚本 2、@T=1 默认为 1 个采集周期结束立即上报数据,可省略 3、@A=1 默认为接收仪表的应答,可省略




声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    泰克MP5000系列的TSP Toolkit I-V脚本生成功能

    使用TSP Toolkit脚本开发插件(Visual Studio Code扩展程序)可降低对多种被测器件,例如如多端半导体元件、太阳能电池等,进行电流-电压(I-V特性)测试的开发时间与复杂度
    的头像 发表于 11-24 13:53 2768次阅读
    泰克MP5000系列的TSP Toolkit I-V<b class='flag-5'>脚本</b>生成功能

    关于系统链接脚本的介绍

    一、队伍介绍 本篇为蜂鸟E203系列分享第四篇,本篇介绍的内容是系统链接脚本。 二、如何实现不同的下载模式? 实现三种不同的程序运行方式,可通过makefile的命令行指定不同的链接脚本,从而实现
    发表于 10-30 08:26

    【技术分享】正确编写SysV Init脚本以实现Systemd兼容(上)

    嵌入式的ubuntu系统如何写好SysVInit脚本呢?与system服务又有什么差别呢?一起随着文章来探究吧。问题背景许多传统Linux服务仍使用SysVInit脚本(/etc/init.d
    的头像 发表于 10-28 11:45 542次阅读
    【技术分享】正确编写SysV Init<b class='flag-5'>脚本</b>以实现Systemd兼容(上)

    LuatOS脚本开发入门:嵌入式运行框架全解析!

    想搞懂LuatOS如何运行Lua脚本?本文深入剖析其嵌入式运行框架,涵盖虚拟机加载、任务协程、系统初始化等关键环节,适合初学者。 一、LuatOS 编程起步 1.1 底层固件怎么启动 LuatOS
    的头像 发表于 09-26 17:45 261次阅读
    LuatOS<b class='flag-5'>脚本</b>开发入门:嵌入式运行框架全解析!

    嵌入式开发新选择:LuatOS脚本框架入门教程

    LuatOS正成为嵌入式开发的新趋势!本教程带你从基础入手,全面了解其基于Lua的脚本开发模式与轻量级运行框架。 一、LuatOS 编程起步 1.1 底层固件怎么启动 LuatOS 脚本
    的头像 发表于 09-26 17:34 305次阅读
    嵌入式开发新选择:LuatOS<b class='flag-5'>脚本</b>框架入门教程

    【Labview技巧合集】11 实现脚本化插件编程

    【Labview技巧合集】11 实现脚本化插件编程
    发表于 09-02 18:10

    Python脚本实现运维工作自动化案例

    还在为重复性运维工作而烦恼?每天被各种告警、监控、部署搞得焦头烂额?作为一名有10年经验的运维老司机,今天分享5个超实用的Python自动化脚本,让你的运维工作效率提升300%!这些都是我在生产环境中实际使用的案例,代码简洁高效,拿来即用!
    的头像 发表于 08-27 14:46 803次阅读

    rtu和dtu是什么意思

    系统的“现场大脑”,集成数据采集、处理、控制与通信功能。 典型任务 : 采集模拟量(如温度、压力、电流)和数字量(如开关状态); 执行本地逻辑控制(如自动启停设备); 通过通信网络(如4G、以太网)将数据上传至SCADA系统,并
    的头像 发表于 08-15 18:00 2407次阅读

    DTU 30s后没有指令,会自动断开连接?

    DTU 30s后没有指令,会自动断开连接? 30s后没有指令DTU就会自动断开连接,如果需要DTU不自动断开,在30s内发送查询命令作为心
    发表于 08-07 07:38

    multisim通讯脚本

    如何开发一个multisim通讯脚本,可以读取multisim中电路的仿真结果,可修改multisim仿真电路中电源、电阻等元器件的数值。
    发表于 06-11 17:16

    树莓派新手必看!在树莓派上编写和运行 Shell 脚本

    在本教程中,我将讨论Shell脚本的基础知识、它们的用途以及如何在RaspberryPi上编写和运行Shell脚本。什么是Shell脚本?Shell脚本可以让你自动化几乎所有在Linu
    的头像 发表于 03-25 09:28 890次阅读
    树莓派新手必看!在树莓派上编写和运行 Shell <b class='flag-5'>脚本</b>!

    罗德与施瓦茨推出CMX500 AI脚本助手

    罗德与施瓦茨(以下简称“R&S”)推出CMX500 AI脚本助手,这是一款革新移动设备测试的全新解决方案。
    的头像 发表于 03-05 16:09 866次阅读

    EE-235:VisualDSP脚本简介

    电子发烧友网站提供《EE-235:VisualDSP脚本简介.pdf》资料免费下载
    发表于 01-06 14:22 0次下载
    EE-235:VisualDSP<b class='flag-5'>脚本</b>简介

    windows服务器备份mysql脚本

    一、linux备份 使用python脚本,要求有python3和mysqldump #! /usr/bin/python36# -*- coding: utf-8 -*-import
    的头像 发表于 01-02 09:14 668次阅读

    韩国企业Mythosia发布面向嵌入式行业的脚本驱动串行通信

    专注于嵌入式与固件开发的韩国企业Mythosia全新推出了一款基于脚本运行的串行通信监控程序“CRMT”。   CRMT设计为可应用于包括Arduino在内的多种嵌入式行业,能够同时提供串行通信工作
    的头像 发表于 12-30 11:20 1086次阅读
    韩国企业Mythosia发布面向嵌入式行业的<b class='flag-5'>脚本</b>驱动串行通信