在WinCC Unified中使用自定义Web控件实现报表功能

基于西门子官方示例中的表格工具,扩展部分功能,初步实现报表功能。

1 西门子表格控件

image

官方的table控件采用了JavaScript库“Tabulator”(详见http://tabulator.info),并通过补充代码使其适用于WinCC Unified环境。

1.1 目录结构

用VS Code打开解压的文件夹,观察目录结构。

image

a. 文件名为“manifest.json”的文件,是控件与西门子WinCC进行交互的描述清单,包含了控件名称、版本、属性、方法、事件等的定义。

b. 文件名为“CWC_manifest_Schema.json”的文件,是“manifest.json”文件的注释和限制文件,一般不需要修改。可以用AI将文件中的"title"属性翻译成中文,这样在“manifest.json”文件中鼠标停留在标签上,会显示注释,程序更易读一些。

c. 名为“assets”的文件夹。可在此文件夹中以任意图形格式放置图标,该图标将在此控件的TIA门户中显示。

d. 名称为“control”的文件夹。此文件夹中用来放置“index.html”、“webcc.min.js”文件和其他附属库文件。“index.html”是控件的起始画面,可以在“manifest.json”文件中进行定义。“webcc.min.js”是WinCC与控件交互的底层逻辑,不能进行修改。其他附属库文件,西门子将JavaScript库“Tabulator”放置于此文件夹。

1.2 manifest.json文件

打开manifest.json文件,包含控件的描述和属性、方法、事件等接口的定义,是与WinCC进行交互的关键。此文件不允许有注释。

1.3 code.js文件

打开control目录下的code.js文件,里面有对manifest.json文件中定义的接口的具体实现。使用函数“WebCC.start();”开始连接配置。

1.4 index.html文件

初始文件,可以看到引用了两个js文件。后续的程序修改中,我们修改code.js即可

2 报表控件

image

想实现报表控件基本功能:数据查询,数据显示,数据导出。

2.1 数据查询

我们要实现数据查询,并不能直接通过控件访问历史数据库,JS没有合适的库去做这个功能,而是需要通过WinCC的HMIRuntime.TagLogging.CreateLoggedTagSet()函数来实现。

所以我们要在控件中点击“查询”按钮来查询某一时间段的数据变化,那我们需要进行以下操作。

2.1.1 触发事件

事件需要在index.html、manifest.json和code.js里面进行修改。

index.html文件在<body>标签里面加入以下代码,当点击按钮的时候,就会调用"_getTableData()"函数。

code.js文件修改如下

同时在最底部追加以下代码。

这里的变量名,是固定的值,后期可以设置为控件的属性值,方便使用者使用。WebCC.Events.fire是用来触发报表事件的函数,触发之后就可以在WinCC里面执行后续的代码。

这里需要注意一下,经过测试即便是传递了再多参数,实际上只有第一个参数能够传递成功。因为这里需要传递的是多个变量,包括起始时间、结束时间、变量的名称等信息,因此我们需要使用集合的方式进行数据传递。

别忘了修改manifest.json,修改如下

2.1.2 查询数据

image

查询数据要放到WinCC里面执行。需要在报表控件的事件里面找到'GetTableData',在里面进行数据的查询。代码如下

2.1.3 数据返回报表

数据的返回是以JSON文本的方式,但是因为logTagSet.Read()的返回值无法进行JSON序列化,所以只能手动转JSON文本。

2.2 数据显示

WinCC的表格示例控件已经能够很好进行数据显示。但是我们需要根据返回的JSON文本,转换成“Tabulator”库可以理解的代码。

我们需要添加一个方法SetTableData。需要在manifest.json和code.js里面进行修改。

code.js里面代码如下

别忘了在manifest.json声明一下

2.3 数据导出

JavaScript库“Tabulator”自带表格导出功能,但是需要附加几个js库。这几个库可以在网络上搜索到。

需要在index.html文件的<head>标签里面增加这几个js的引用

同时在<body>标签里面增加以下代码,可以放到表格的前面。

在code.js里面增加"_exportTable“函数。

根据jsPDF版本的不一样,有的时候window.jspdf.js会被加载成window.jspdf.jsPDF,这里需要加一个小代码确保jsPDF 可用。

相关链接

WinCCUnifiedV20_自定义网络控件-WinCC Unified V20 基本功能简介-系列课程-西门子1847工业学习平台官网

将用户自定义控件集成到 WinCC Unified 中(自定义 Web 控件) - ID: 109779176 - Industry Support Siemens

源码下载

jixaonian/WinCC Unified中的WebCC自定义Web报表控件

纪小年

Jing

您可能还喜欢...

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理