博途WinCC Unified如何通过JS代码测试数据记录的值
1 数据记录
1.1 系统设置
首先需要在运行系统设置中启用记录存储功能,并指定存储介质:
- 进入”运行系统设置“选项
- 进入”存储系统”子菜单
- 选择“变量记录的存储介质” 这里选择SD卡(或根据实际硬件选择其他介质)
- 可选“报警记录的存储介质” 这里选择SD卡
1.2 设置日志功能
启用日志功能。
- 进入”日志“选项
- 添加新的数据日志“数据日志_1”
- 进入“数据日志_1”的”属性“
- 选择”常规“
- 选择”存储介质“ 选择之前配置的存储介质(如SD卡)
- 日志时间周期 默认是7.00:00:00 意思是7天0时0分0秒。
- 选择分段
- 根据需要选择分段周期,默认是1天,表示单个日志文件的时间跨度
建议:如果数据量较大,适当缩短分段周期可以提升后续查询效率;如果数据量较小,增大分段周期可减少文件碎片。
1.3 创建变量
创建需要记录的变量,并将其关联到数据日志:
- 进入“默认变量表”
- 创建三个内部变量(如
HMI_Tag_1、HMI_Tag_2、HMI_Tag_3) - 下面进入”记录变量“
- 创建记录变量“记录变量_1” 每个变量可以关联多个记录变量(例如不同采样周期)
- 进入”记录变量_1“的”属性“界面
- 进入“常规”
- “数据日志”选择之前创建的“数据日志_1”
- “日志模式”可选择“周期性”“按需”和“改变时”
- 周期性:按固定时间间隔记录(适合趋势监控)
- 按需:通过脚本或事件触发记录(适合关键节点)
- 改变时:变量值变化时记录(适合状态量)
- 进入“周期”
- 可选T100ms、T250ms、T500ms、T1s等周期,MTP触摸屏不能低于500ms
2 在趋势中查看历史数据
2.1 趋势控件
将“趋势”控件拖入到界面里面
- 从工具箱中拖拽 "趋势" 控件到画面编辑区
- 调整控件大小和位置
2.2 趋势设置
设置趋势控件
- 趋势控件的属性
- 选择趋势区域
- 再选择趋势
- 从右侧的扩展属性中,点击蓝色的标签按钮,可选择“HMI_Tag”和“记录变量”,这里选择记录变量
再点击蓝色标签按钮左侧的”…”按钮,弹出记录标签选择窗口。选择要显示的标签(如 HMI_Tag_1:记录变量_1)。
说明:选择"记录变量"而非"HMI_Tag"是查看历史数据的关键。前者读取日志文件中的归档数据,后者仅显示实时值。
3 在JS中查询历史数据
3.1 配置Trace Viewer调试工具
在运行期间,RTIL 跟踪查看器显示可组态 TraceCatalog 中列出的所有报警。同时使用 RTIL 跟踪查看器和 HMIRuntime.Trace() 功能进行脚本诊断。作为外部应用程序集成 RTIL Trace Viewer
- 通过“工具 > 设置”(Tools > Settings) 打开设置。
- 打开“外部应用程序”(External applications) 类别。
- 双击第一个空白行。
- 将打开外部应用程序的输入掩码。
- 在“名称”(Name) 字段中,为应用程序分配一个描述性名称,例如“RTIL Trace Viewer”。
- 在“命令”(Command) 下插入以下路径:%ProgramFiles%\Siemens\Automation\WinCCUnified\bin\RTILtraceViewer.exe
- 将字段“参数”(Arguments) 和“起始位置”(Start in) 字段保留为空。
- 单击“添加”(Add),然后关闭“设置”(Settings) 对话框。
3.2 编写JS查询代码
在画面中插入一个按钮,通过单击事件触发历史数据查询:
- 选中按钮
- 进入按钮的“事件”
- 选择“单击鼠标左键”,在JS编辑器中添加JS代码。
代码如下:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
export async function 按钮_1_OnTapped(item, x, y, modifiers, trigger) { let logTagSet = HMIRuntime.TagLogging.CreateLoggedTagSet(["HMI_Tag_1:记录变量_1","HMI_Tag_2:记录变量_1","HMI_Tag_3:记录变量_1"]); let end = new Date(); // now let duration = 1000*60*60; // 1h in ms let begin = new Date(end - duration); let loggedTagMap = await logTagSet.Read(begin, end, false); for(let loggedTag of loggedTagMap) { HMIRuntime.Trace("Name:" + loggedTag.Name); for(let loggedTagValue of loggedTag.Values) { HMIRuntime.Trace("Value:" + loggedTagValue.Value + " Quality:" + loggedTagValue.Quality + " TS:" + loggedTagValue.TimeStamp + " Flags:" + loggedTagValue.Flags); } } } |
CreateLoggedTagSet() 中的变量名格式必须严格为 (["HMI_Tag_1:记录变量_1","HMI_Tag_2:记录变量_1","HMI_Tag_3:记录变量_1"])冒号分隔,且与趋势控件中选择的记录变量名称完全一致。
3.3 Trace Viewer查看输出
- 启动RTIL Trace Viewer(通过之前配置的外部工具菜单)
- 运行WinCC Unified项目
- 点击画面中的按钮
- 在Trace Viewer窗口中查看输出的变量名称、历史值、时间戳等信息
3.4 代码示例功能
TIA Portal的JS编辑器内置了丰富的官方示例:
- 在JS编辑器空白处点击 右键
- 选择 "片段"
- 浏览并插入与 TagLogging、数据记录、趋势查询 相关的示例代码
- 根据实际需求修改参数
开发建议:官方示例涵盖了读取日志、写入日志、删除日志等完整操作,建议在正式编码前先浏览相关示例,避免重复造轮子。