完成了上述的各项准备工作,就可以开始 “终端管理” 应用的各项工作了。我们将在接下来的使用讲解中,以 “三普能源集团工业互联网项目(SERG)”为例来说明。

(一)打开应用

打开 “终端管理” 应用就很容易看到,应用有三个菜单(经常也称为三个菜单版块),分别是:“终端”、“配置”和“流量卡”。最后还有—个“Lua合成工具”。

如果 MixIOT 应用的菜单版块是两个或者两个以上,那么一般来说,都会有使用不同菜单版块的先后顺序。

“终端管理” 应用菜单版块的使用顺序是: 配置–>终端–>流量卡

“Lua合成工具” 是—个有可能用到的工具,用来合并Aprus Lua代码。这是因为在 Mixiot Aprus 中,为了我们更加容易编写和使用 Mixiot Lua脚本,所以 Aprus Lua 脚本由 aprus.lua(主控脚本)和 config.lua(配置脚本)两部分构成。但这两个部分的脚本需要合并才能在 Aprus 适配器中运行。

在某些 Mixiot V8 版本中,合并 Lua 脚本代码的工作是在平台后端去完成的,我们只需要分别上传(提交) Aprus 的主控和配置 Lua 脚本代码即可,无需我们自己去合并。

(二)确定 “配置”

在 MixIOT 体系中,“数据终端” 有一个很重要的概念,就是数据终端的 “配置”。数据终端 “配置” 主要是指数据终端里面运行的数据交互程序以及程序版本。如果我们用的数据终端是 Aprus 适配器,那么,数据终端的配置指的就是数据终端里面运行的 Lua 程序(脚本)。

从硬件的角度来看,数据终端可以有各种型号。以 Aprus 适配器为例,有 AM系列AX系列, 每个系列都有不同的型号,可以理解为,这些适配器在硬件上是完全不相同的。

AM系列

AX系列

但它们却可以是同一个配置,也就是说,不同系列、不同型号的 Aprus 适配器,里面可以跑相同的 Lua 程序(脚本)。

反过来,同一个系列、同一个型号的 Aprus 适配器,只要里面跑的 Lua 程序(脚本)不一样,它们的配置就不一样。

从这个意义上来说,数据终端 “配置” 的概念是 “软 的,而非 “硬” 的。

那么在 MixIOT 体系中,为什么数据终端会有 “配置”这个概念呢?其实就是为了解决实际工况场景中的“重复”而设计的分离方式。所谓重复的意思,就是在实际工业场景中设备的重复,这在工业场景中非常常见。

以SERG 为例,这是佳华电站的情况:

  • 有5台完全相同的瓦斯发电机组(1#-5#机组);
  • 有5台完全相同的发电量计量的电表(有供电量表),分别计量每台机组的发电量;
  • 有2台完全相同的管道压力表,用来分别测量瓦斯输气干管前端和后端的压力;
  • 有1台瓦斯浓度(甲烷浓度)测量仪表。

数据终端对接

数据终端对接的情况,如图所示:

  • 每台瓦斯发电机组,都分别用 1个Aprus适配器去对接;
    因为每台机组是完全一样的,所以,这5个适配器对接机组的程序也应该是一样的。因此,这5个适配器的“配置”是一样的。(这个配置记为佳华A,JHA)。

  • 用1个适配器,同时对接5台发电量计量表;
    这里只有1个适配器,所以对应的是一个“配置”。(这个配置记为佳华B,JHB)。

  • 用2个适配器,分别对接两个压力表;
    这2个压力表是完全一样的,所以,2个适配器的配置也应该是一样的。(这个配置记为佳华C,JHC)。

  • 用1个适配器,对接瓦斯浓度测量表。
    这里只有1个适配器,所以对应的是一个“配置”。(这个配置记为佳华D,JHD)。

掌握了这些情况,我们就应该很清楚,“佳华电站” 一共用了8个数据终端,一共需要有4个配置。这4个配置我们暂时称为 “佳华A/ 佳华B/ 佳华C/ 佳华D”。

(三)理解配置

我们现在来创建 “佳华A”,点击“+添加”操作:

从这里可以看到,构成一个配置的要素,除了名称和别名,还有两个需要上传的 Lua 程序(脚本)文件。

这里面有三个很重要的概念:

  1. 这是运行在数据终端(Aprus 适配器)中的Lua程序;
  2. 数据终端(Aprus适配器)如何对接设备、采集什么数据、如何采集数据、采集数据后发送到哪里,总之,就是数据终端如何工作,完全取决这个Lua程序;
  3. 这个 Lua 程序需要我们自己去编写。

所以,现在应该清楚了,数据终端 “配置” 的核心关键,就在于配置里面的 Lua 程序要怎么编写。而且编写这两个 Lua程序的工作只能由我们自己来完成,因为只有我们自己知道要用这个Aprus适配器去对接什么设备,要采集什么数据。

这里的 Lua 程序实际上是一个合并后的程序,被合并的两个程序分别是 Aprus 脚本(aprus.lua)和 Config脚本(config.lua)。

也就是说,我们需要编写的 Lua 程序是两个:aprus.lua 和 config.lua。

MixIOT 提供了 Aprus Lua 的规范编程方案,也就是用两个(aprus.lua 和 config.lua) Lua 程序来实现数据采集需求的方案,完全可以让非IT程序员也能完成相应的编程工作。

完成 Aprus 脚本(aprus.lua)和 Config 脚本(config.lua)编程后,可以使用 “终端管理” 应用提供的合并工具,把 Aprus 脚本和Config脚本合并成一个用来上传的 Lua 文件。

合并后的脚本,需要严格按Aprus Lua文件名规范,即 “XXXXX . XXXXX . L.Vxxxxxxx. R”。规范的细节会在后面详细讲解。

(四)Aprus Lua

Aprus 适配器有两个系列,M 系列和 X 系列。

无论是哪个系列,在通电后会去找到一个名为 “xxxx.R” 的程序,然后运行这个程序,这就是 Aprus 适配器的默认规则。

换句话说,我们可以把 Aprus M 或者 Aprus X 当做一台电脑,把要这台电脑做的事情都写到 aprus.lua 这个程序里面,并把这个程序放到 Aprus 适配器里面。这时候,只要 Aprus 通上电,它就会自动运行 “xxxx.R” 这个程序。

前面介绍过,这个 “xxxx.R” 程序是由 Aprus 脚本(aprus.lua)和 Config 脚本(config.lua)合并而成,那么,为什么用户编程不直接去编写 “xxxx.R”,而是要去编写 aprus.lua 和 config.lua呢?

这是因为 Aprus 适配器所支持的 Aprus Lua,是在标准 Lua 础上的一个扩展,简单地说,就是把很多 “对接各种不同工业设备” 要用到的东西都内置了进去。

Aprus Lua 的最大特点,就是用了一个 “示范分离” 的方法。所谓 “示范分离” 方法,就是把程序分成了三个部分:不会改变的部分、很少会改变或基本上不会改变的部分、一定会变化的部分。

(1)不会改变的部分,已经集成到Aprus适配器固件的底层,编程的时候完全无需去关心这些内容;
(2)很少改变的部分或者基本上不会改变的部分,就放到aprus.lua里面,这部分主要是数据交互协议函数的定义等等。
(3)会改变的部分,就都放到了config.lua里面。这部分就是怎么去对接设备,怎么去采集数据。

如果同一类协议的对接,aprus.lua 基本上是不会有什么改变的,具体对接什么,比如控制器、寄存器、地址、点位等等,这些东西全部都放在 config.lua里面。

所以,aprus.lua 和 config.lua 都是 Aprus Lua 的示范程序。也就是说,如果要编写什么程序,那就直接把示范程序拿过来,aprus.lua 基本上不用动,只在 config.lua 照葫芦画瓢改一下。

MixIOT 提供了很多各种使用场景下的示范程序(aprus.lua 和 config.lua):

这些都可以从 MixIOT 技术支持获得。用更加通俗直白一点的话说,如果要对接的设备控制器是 “西门子 S7”,就找到这个目录,下载对应的 aprus.lua 和config.lua。

基本上就可以把这个直接拿来用,aprus.lua 不用改什么,要采集什么数据,就对着 config.lua 这个示范程序去改一下。

MixIOT 的《Aprus Lua软件编程手册》有 Aprus Lua 的编程方法的详细讲解,在 “终端管理” 应用就不做更多的介绍了。

(五)数据表

当确定了要对接的是什么、采集什么数据、怎么采集,这些都必须要按适配器采集对端的数据表。

以佳华电站1-5#机组为例,需要获得佳华电站机组的数据表(也称为“PLC点表”)。

我们截取其中一部分来看。

简单地说,数据表实际上就是对对端(PLC控制器)的描述,哪个寄存器里的什么寄存器地址、存放着的是什么数据、这个数据是什么类型的数据、是只读还是可以读写、数据按什么精度存储等等。

尽管不同设备给出的数据表形式都不尽相同,但基本上包含的信息就是这些。数据表(或PLC点表)是对接数据交换的基础,如果没有这个基础,其他的工作也是无法进行下去的。

(六)选择参数

我们回到佳华电站1-5#机组的数据表:

各种寄存器里面的数据一共有103个,也就是说,我们可以采集的数据有103个。但其中一些数据与我们要做的事情关系并不是很大,事实上我们并不想把这些数据都进行采集。

选择需要的参数,这个工作非常重要,而且跟经济利益直接相关。但这通常也是一个非常容易被忽视的工作。

以佳华机组为例,看一下如果选择了很多不需要的参数,会是什么一个结果。我们可以采集的参数一共有103个,但最终只选择了49个,也就是丢掉了54个。

每个参数报文的数据量可以按大约20字节计算,54个参数就是20×54=1080(字节);

如果按每3秒钟采集一次数据,每分钟的采集的数据量就是:1080×20=21600(字节)=21.1(K字节);

每小时的数据量是:21.1×60=422(K字节);

每天的数据量是:422×24=10128(K字节)=9.9(M字节);

每个月的数据量是:9.9×30=296(M字节)。

这还只是一台机组的情况。佳华电站有5台机组,那么每个月的数据量就是:296×5=1480(M字节)=1.44(G字节)。

这些数据都需要发送到MixIOT平台,自然就需要用到流量卡的流量,每个月1.44G的流量,多少也是一笔开销。除了通讯成本的考量,还有这些数据到了MixIOT ,就需要被保存,日积月累,数据量存储需要的花销也不小。

这是最终的参数选择结果:

找到了对应的 aprus.lua 和 config.lua,加上有了这个数据表,就可以为 “佳华A” 配置进行编程了。

(七) Lua程序

通过相关技术资料的研究,我们知道佳华电站瓦斯发电机组的控制器是 “西门子 S7”,这样就可以直接去找到相应的示范程序目录,下载 aprus.lua 和 config.lua。

这个目录里面,还包括了详细的示范程序的使用说明,我们也可以参考。

有了这些,现在就可以开始试着编程了。

前面介绍过,如果选择的示范程序没有什么问题,那么aprus.lua基本不用去改什么。

剩下的就是怎么根据数据表(PLC点表),在示范程序的基础上,去完善 config.lua。

我们看一下修改后的 config.lua:

放大其中的一个细节:

在《(西门子S7)示范程序使用说明》里面有相关的说明,数据表的地址位是从1开始,而这里的地址位是从0开始,所以,这个地方要减1。
其实这些都是基本确定的内容,照着做并非多难的事情。

(八)创建配置

有了 “佳华A” 配置的要件(aprus.lua 和 config.lua),就可以创建 “佳华A”的配置了。要创建这个配置,需要分两步走:

第一步,利用 “终端管理” 的 Lua 代码合并工具,把 Aprus 脚本和 Config 脚本合并。

进入 Lua 合成工具:

然后,分别把 Aprus 脚本(aprus.lua)和 Config 脚本(config.lua)代码复制后粘贴进去,点击 “合并下载”:

这时会看到提示:

如果使用的适配器是 Aprus X 系列,则勾选 “Aprus-X方式”。

勾选 Aprus-X方式,按确定。这个时候,合并后的代码就下载到了本地。

需要注意的是,合并后的文件名 “terminalConfig_20231205165213.JHA.L.V23070301.R”。

其中,20231205165213 实际上是合并的日期和时间。

而后面的 .JHA.L.V23070301.R,是在 Config脚本(config.lua)中的 luaver 定义的:

这就是这个 Lua 程序脚本的版本号。

第二步,创建配置“佳华A(JHA)”:

把合并后的Lua文件(terminalConfig_20231205165213.JHA.L.V23070301.R)上传:

上传后的 Lua 文件名,会被自动修改,这个我们不用去理会。

扩展信息是为了给 “终端” 记录的时候更加统一和简洁形式的扩展信息。

扩展信息是一个 “扩展信息脚本”,这个脚本的书写规范格式为:

如果需要,我们可以在 “描述” 字段写一些相关的备注信息。

确定保存后,“佳华A(JHA)”配置就算是创建完成了。这个配置的编号是: TCF3252436900006。

我们现在来盘点一下,配置“佳华A(JHA)”的几个要件是什么:

  • 配置方案,也就是对接的方案;
    这整理到了一个文档:佳华A对接方案.pdf。

  • 对接对端(发电机组控制器)数据表(点表);
    这整理到一个Excel文件:佳华1-5#机组数据表.xls。

  • 参数选择表;
    这也整理到了一个Excel文件:佳华1-5#机组数据表(参数选择).xls。

  • 我们自己编写好的Aprus脚本和Conigg脚本:aprus.lua和config.lua.
    这些东西都是形成终端配置“佳华A(JHA)”的重要依据资料,所以,我们可以把这些保存到“文件管理”里面,创建一个文件夹,别名就用“TCF3252436900006”。

上传所有相关资料后,确定保存。

这样,跟 “佳华A(JHA)”配置所有相关的资料,都在这里面了,日后随时可以查找。

(九)注册“佳华A”的数据终端

创建完成了 “佳华A”配置后,就可以对使用该配置的数据终端进行注册了。可以回顾一下 “佳华A” 配置,一共有5个 Aprus X 适配器使用了这个配置,都对接到一个发电机组。

进入终端版块:

通过添加操作,先创建第一个数据终端:

  • 终端编号是印刷在适配器设备上面的编号,这个是不能错的;
  • 终端名称可以由用户自行决定,通常可以用配置名称与终端编号的位数组合,如 “佳华A-201”;
  • 终端类型,选择实际使用适配器的系列,这里是 Mixlinker Aprus-X;
  • 终端配置编号,直接下拉后选择 “佳华A”;
  • 生产厂家,可以填写 “智物联”;
  • 如果需要,可以在 “描述” 记录一些备注信息。

最后的扩展信息,是之前在配置 “佳华A” 中定义好的:

这几个信息,就是我们可以填写的内容,这些内容将作为该终端的扩展信息保存。

确定保存,这样就完成了第一个适配器的登记。

同样的方法,我们完成全部5个适配器的创建:

在 “全部终端” 视图列表中,马上就可以看到这些适配器的在线状态。

其他的几个视图,是 “分类” 视图。“在线终端” 视图里面只有当前 “在线” 状态的适配器;而 “离线终端” 视图里面只有当前 “离线” 状态的适配器。

分类视图也是 MixIOT 应用中的一个非常重要的视图形式。

(十)终端 – 操作菜单

打开终端列表的操作菜单,如下图所示:

  • 详情
    可以查看终端详情;

  • 编辑
    可以编辑终端信息;

  • 删除
    可以删除已经创建的终端(需要超级管理员权限);

  • 刷新
    刷新当前的终端在线状态以及最新报文时间等等;

  • 重启
    向数据终端下发指令,让数据终端重新启动。这只对 “在线” 状态的终端有效,如果该终端当前是 “离线” 状态,这一操作无效;

  • 升级
    让终端进行版本比对,如果有新版本,则立即进行强制升级。

这一指令对 “离线” 状态的终端同样有效,当终端重新“在线”的时候,进行版本比对,如果有新版本,则执行强制升级。

(十一)返回配置

重新回到 “配置” 版块,打开配置视图列表的操作:

打开详情:

查看 “关联终端”:

这是之前创建的以 “佳华A” 为配置的5个终端。这样,终端与配置就关联了起来。

(十二)配置升级

数据终端(适配器)的升级,是经常会发生的事情。当发现之前适配器的 Lua 程序有问题需要完善,或者对采集的数据项有变化,或者对接的设备控制器有调整等等,各种情况都可能需要及时去升级 Aprus 适配器里面的 Lua 程序。

Aprus 适配器里面的 Lua 程序需要升级,那就需要把该适配器的对应配置升级。

配置升级的方法很简单,就是进入该配置项的编辑模式,重新上传新版本的 Lua 程序。

要注意的是,Lua 程序的版本信息是写在 Config 脚本(config.lua)里面的。

如果只是修改了 aprus.lua 和 config.lua 代码,但是,却没有在 config.lua 代码中修改 luaver 的值,那么即便重新合并,上传了 Lua 文件,也不能视为版本需要升级。

事实上,我们在这里用了 “升级”,但 Lua 程序的版本号并没有版本大小这个概念。换句话说,只要重新上传了某配置项的 Lua 文件,只要这个 Lua 文件的版本不一样,那么,就会被视为需要升级。

(十三)终端升级

数据终端的升级有两个途径。一个是通过 “配置列表” 的 “批量升级” 操作。

或者通过 “终端列表” 的 “升级” 操作:

一般来说,我们只需要关注 “待升级终端” 视图即可。

“终端管理” 终端版块的 “待升级终端” 是一个动态视图, MixIOT 会根据终端报文的情况来判断终端是否需要升级,并会把需要升级的终端自动归类到这个视图。

当终端完成升级后,就不会再出现在这个 “待升级终端” 视图中。

文档更新时间: 2024-07-11 10:16   作者:Mixiot