基于HTML5的Web SCADA工控移动应用

简介: 在电力、油田燃气、供水管网等工业自动化领域Web SCADA的概念已经提出了多年,早先年的Web SCADA前端技术大部分还是基于Flex、Silverlight甚至Applet这样的重客户端方案,在HTML5流行前VML和SVG算是真正纯种Web方案也是有不少应用,近些年随着HTML5的流行,加上移动终端对HTML5支持的普及,越来越多新项目开始采用真正纯HTML5的方案,更具体的说大数据量应用性能高于SVG的Canvas方案,已经逐渐成为当今Web SCADA前端技术的首选标配方案。

在电力、油田燃气、供水管网等工业自动化领域Web SCADA的概念已经提出了多年,早先年的Web SCADA前端技术大部分还是基于Flex、Silverlight甚至Applet这样的重客户端方案,在HTML5流行前VML和SVG算是真正纯种Web方案也是有不少应用,近些年随着HTML5的流行,加上移动终端对HTML5支持的普及,越来越多新项目开始采用真正纯HTML5的方案,更具体的说大数据量应用性能高于SVG的Canvas方案,已经逐渐成为当今Web SCADA前端技术的首选标配方案。

http://www.hightopo.com/demo/2deditor_20151010/HT-2D-Editor.html

IMG_2126

Screen Shot 2015-03-18 at 11.12.32 PM

最近客户采用HT for Web图形界面组件,实现了油田燃气管网和供水管网等工控SCADA的HMI人机界面,并将系统运行在平板和手机等Android和iOS移动终端,在此我们在技术支持过程中的一些知识点进行些梳理和分享,希望对有志于Web SCADA领域的伙伴们提供些帮助。

技术选项阶段用户提出过SVG的技术路线,毕竟在早期电力领域SVG还是有一定的标准和应用,但SVG在比较老的Android终端上支持并不好,而且SVG组件的方式导致图元过多时性能差的问题,最终决定采用HT for Web提供的矢量技术方案,HT的矢量技术方案在《HT全矢量化的图形组件设计》和《HT图形组件设计之道(二)》有详细介绍可参考之,而且采用HT的矢量方案不仅得到了缩放不失真的有点,还具备的动态数据绑定的强大功能,这对于工控领域需要根据实时数据驱动如风扇旋转、管道流动、开关开闭等控制功能尤其方便。

Screen-Shot-2014-07-28-at-8.53.42-PM Screen-Shot-2014-08-12-at-9.14.50-PM

对于SCADA的HMI人机界面管网拓扑图网络加载的问题,用户采用了我们建议的Web客户端缓存方案,很好的解决了较多网络拓扑图切换打开网络加载慢的问题,可参考《HTML5 Web 客户端五种离线存储方式汇总》的文章,根据自己的具体项目情况选择合适你的本地存储方案,其实Web本地存储方案已经出现了众多领域的千奇百怪应用黑魔法,有人应用LocalStorage存储Web Font,游戏领域利用Web客户端存储游戏资源等等,Web客户端存储还远未被完全挖掘发挥起来。

移动终端呈现方面,HMI界面布局应用和游戏领域有类似的问题,一般对横版或者竖版会有更好的布局效果,例如有些游戏只支持横版的玩法,这对于采用Native的App应用来说不成问题,可将App配置成只能横向或者纵向布局,但对于移动终端浏览器就有点尴尬,目前大部分终端你是不能限制用户旋转平面导致布局变化。为此我们给用户提供了HTML5游戏领域常规的解决方案,通过window.addEventListener(‘orientationchange’简单手机方向变化,当处于你不支持的方向时,全屏显示一张提示用户旋转屏幕后再进行正常操作的图片,该方案看似简单,但整个用户体验比起毫无提示旋转出布局一塌糊涂的界面体验好了很多,这个简单方案减少了很多无聊的客服工作,再也没客户责怪界面不能用,但界面方向不对时,提示图片让人自然而然就知道旋转屏幕就可以。

纯HTML5方案默认方案肯定会弱于Native方案,但HTML5浏览器标准也一直在完善,最近提出的screen.orientation.lock(‘landscape’) or screen.orientation.lock(‘portrait’)函数已经得到了Android上的Chrome浏览器支持,可参考http://caniuse.com/#feat=screen-orientation 正好我们的用户使用的就是Android平板,安装上较新的Chrome浏览器后就能前置要求浏览器锁定布局方向。

对于部分HTML5的应用页面,用户需要嵌入Native App的WebView和Native应用界面做集成,以前这种方案特别是在Android端总会让我发毛,老的Android的WebView组件集成的奇烂的Chromium老版本,还无法控制其升级,甚至曾经一度采用过自打包Chromium新版本到App的方案,结果搞得整个App加大了好几十m的问题,不过如今随着Android4.*的发展一切有了质变,Google终于放开了Android WebView的Chromium版本,默认如今都已经是足够搞的30以上的版本了,将来还能自动升级,更具体的可参考这篇文章 http://www.quirksmode.org/blog/archives/2015/02/android_webview.html

Before Android 4.4 all devices run Android WebKit as their WebView. (Is this the same Android WebKit as their default browser? Don’t know yet.)
From Android 4.4 the WebView is Chromium 30.
From Android 4.4.3 the WebView is Chromium 33.
From Android 5 the WebView is Chromium 37. In addition, the promise is that the Android 5 WebView will be updated to newer versions app-wise, i.e. without a firmware update. I will keep an eye on that.

在iOS也不是没有坑,我们发现由于HT for Web为支持视网膜精度,会根据设备window.devicePixelRatio参数控制拓扑图Canvas的内存画布大小,常遇到用户未设置meta的viewport上的width参数,或者该参数设置过大导致iOS终端浏览器无法显示拓扑图内容的情况,这种情况也不会报错但就是没内容,遇到这样的情况简单的方案就是先让用户<meta name=”viewport” content=”user-scalable=no, width=600″>设置上一定的width参数进行试验定位是否是该问题导致,或者强制设置ht.Default.devicePixelRatio的HT参数,例如将其设置为1,当然这样就损失了视网膜设备下的精细效果,所以一般还是建议调小viewport的width参数,毕竟界面缩小太多操作控制按钮太小也是无法正常操作。

HTML5应用的渗透力在去年基于HTML5的神经猫游戏,在微信中的病毒式快速传播已被业界真正认识到其力量,如今微信已经成为游戏、广告等各行各业应用的重要入口,同样基于HT for Web的Web SCADA工控移动应用也可在微信中传播使用,以下附上几张基于HT for Web客户项目的应用抓图,是的基于HTML5,监控可以如此简单,真正做到在你掌控之内:

http://www.hightopo.com/demo/2deditor_20151010/HT-2D-Editor.html

Screen Shot 2015-03-18 at 11.16.12 PM Screen Shot 2015-03-18 at 11.17.14 PMIMG_2127

目录
相关文章
|
2月前
|
存储 Web App开发 移动开发
HTML5 Web 存储详解
HTML5 Web存储提供了两种客户端数据存储机制:**Local Storage**和**Session Storage**。Local Storage用于长期存储数据,即使关闭浏览器数据也依然存在,适用于保存用户偏好设置等信息。Session Storage则在标签或窗口关闭时清除数据,适合存储临时信息。两者均提供了简单的API进行数据的存取操作,但需要注意的是,Web存储并非加密存储,不应存放敏感信息。现代浏览器普遍支持Web存储,合理利用这两种存储方式可提升Web应用的用户体验。
|
2月前
|
存储 移动开发 大数据
HTML5 Web IndexedDB 数据库详解
IndexedDB 是一种高效的浏览器存储方案,允许在本地存储大量结构化数据,支持索引和事务,适用于需要离线和大数据处理的应用。它由数据库、对象仓库等组成,通过键值对存储数据,确保数据一致性和完整性。本介绍展示了如何创建、读取、更新和删除数据,以及事务和错误处理的最佳实践。
|
2月前
|
存储 移动开发 数据库
HTML5 Web IndexedDB 数据库常用数据存储类型
IndexedDB 支持多种数据存储类型,满足复杂数据结构的存储需求。它包括基本数据类型(如 Number、String、Boolean、Date)、对象(简单和嵌套对象)、数组、Blob(用于二进制数据如图像和视频)、ArrayBuffer 和 Typed Arrays(处理二进制数据)、结构化克隆(支持 Map 和 Set 等复杂对象),以及 JSON 数据。尽管不直接支持非序列化数据(如函数和 DOM 节点),但可以通过转换实现存储。开发者应根据具体需求选择合适的数据类型,以优化性能和使用体验。
|
2月前
|
移动开发 JavaScript 前端开发
HTML5 Web Workers详解
HTML5 Web Workers 允许在后台线程中运行 JavaScript,实现复杂计算而不影响用户界面,提升应用性能。其主要特性包括并行处理、异步通信、独立作用域及多数据类型支持。通过创建和使用 Worker 文件,如 `worker.js`,可执行后台任务,并与主线程通过消息传递机制通信。适用于数据处理、图像处理、复杂计算及网络请求并行等场景。需要注意的是,Web Workers 在浏览器兼容性、安全性限制、调试及资源消耗方面需特别关注。合理利用 Web Workers 可显著增强 Web 应用的流畅度和响应速度。
|
2月前
|
SQL 存储 移动开发
HTML5 Web SQL 数据库详解
Web SQL 数据库是 HTML5 中的一种本地存储技术,允许在浏览器中使用 SQL 语言操作本地数据,支持离线访问和事务处理,适用于缓存数据和小型应用。然而,其存储容量有限且仅部分现代浏览器支持,标准已不再积极维护,未来可能被 IndexedDB 和 localStorage 等技术取代。使用时需谨慎考虑兼容性和发展前景。
|
2月前
|
存储 移动开发 缓存
HTML5 Web 存储详解
HTML5 Web 存储包括 `localStorage` 和 `sessionStorage`,前者提供持久存储且无过期时间,后者仅在会话期间有效。两者均支持键值对形式存储数据,容量约为 5-10 MB。`localStorage` 适用于用户偏好设置、登录状态保持及离线应用缓存;`sessionStorage` 则用于临时数据如表单输入。数据以字符串形式存储,可通过 `JSON` 方法处理对象。由于数据存储于本地,不适合存放敏感信息。示例代码展示了如何使用按钮将输入框内容保存至 `localStorage` 并进行清除操作。
|
2月前
|
移动开发 前端开发 JavaScript
HTML与现代Web开发的不同技术
【10月更文挑战第11天】HTML与现代Web开发的不同技术
25 0
html,web页面朗读文字,朗读中文,朗读英文
html,web页面朗读文字,朗读中文,朗读英文
|
2月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
113 3
|
26天前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
130 45