用户界面互连
- 更新时间2025-05-20
- 阅读时长5分钟
有些RT终端包含一个嵌入式用户界面,可以用来查看和控制RT终端VI的前面板。然而,LabVIEW Real-Time模块支持的其他RT终端则没有用户界面设计,只有基本的输出显示。对于不支持嵌入式用户界面的RT终端,为LabVIEW Real-Time模块应用程序创建图形化用户界面(GUI)需要使用分布式计算方法。如实时应用程序需要用户界面且无法使用嵌入式UI,可在通用操作系统上显示图形化用户界面,并使用远程通信协议在RT终端和GUI设备间传输数据。
避免前面板对象、方法和事件
开发RT VI用于不支持嵌入式UI的终端时,可通过前面板输入控件和显示控件调试。但是在最终生成的独立RT应用程序中不能使用RT VI的前面板作为用户界面。将VI部署为独立的实时应用程序时,LabVIEW将移除VI的前面板,包括全部对象、属性、方法和关联事件。即使事件驱动的编程对于多数LabVIEW VI来说是强有力的用户界面设计模式,但是不能在RT终端上运行的VI中使用典型LabVIEW事件驱动UI设计模式。但可使用事件驱动设计模式创建运行在主机上的用户界面VI,主控计算机使用网络协议与RT终端VI通信。
使用正确的网络设备
用户通常倾向于使用现成的或较廉价的网络设备。但是,各种商用网络设备大相径庭,需根据应用程序选择相应的网络设备。对于一些应用程序,一般的网络设备即够用。对于某些依赖于网络吞吐率、延时或可靠性的应用,需要使用较高级的网络设备。
使用正确的网络协议
下表总结了在RT终端和GUI设备间传输数据的通信协议的优劣比较和适用范围:
| 使用场景 | 协议 | 优点 | 缺点 |
|---|---|---|---|
| 监控最新值 | 网络发布共享变量 | 易于编程,一次发布至多台计算机,启用实时FIFO后可在确定性循环中使用,集成工业协议 | CPU开销大,专有,需共享变量引擎 |
| 在RT终端和主机之间以数据流方式传输数据,发送命令至RT终端 | 网络流 | 高吞吐量,无损耗,自动连接管理,LabVIEW数据类型支持 | 读取方和写入方一一对应,单向数据传输,非确定性,专有 |
| STM等自定义协议的起点,见ni.com | TCP或UDP | 高效的CPU和内存使用,便于互操作的协议,灵活,标准 | 较难编程,仅限于字符串数组,无内置方法识别数据 |
| RT VI的动态控件 | VI服务器 | VI和其他LabVIEW构造体的本地和远程控制 | 低速,专有 |
| 基于Web的用户界面,与标准Web技术兼容 | Web服务 | Web标准,客户端连接无需LabVIEW | 开销大,编程难,需要用其他编程语言创建一个轻量的客户端 |
下表显示了最常见的RT GUI使用场景的推荐网络协议:
| 使用场景 | 范例 | 推荐协议 |
|---|---|---|
| 命令(一对一) | 将用户界面值改动从主机发送到RT终端 | 网络流函数 |
| 命令(一对多) | 将用户界面值改动从主机发送到多个RT终端 | 网络发布共享变量 |
| 命令(多对一) | 将用户界面值改动从多个Web客户端发送到一个RT终端 | Web服务VI或网络发布的共享变量 |
| 监视器(一对一) | 使用主机监视RT终端发布的最新值 | 网络发布共享变量或STM |
| 监视器(一对多) | 使用多个网络客户端监视RT终端发布的最新值 | Web服务VI或网络发布的共享变量 |
| 监视器(多对一) | 使用主机监视多个RT终端发布的最新值 | 网络发布共享变量 |
| 数据流(一对一) | 将连续的数据流从RT终端发送到记录数据的主机 | 网络流函数 |
| 数据流(一对多) | Web广播服务器 | TCP或UDP |
| 数据流(多对一) | Web广播客户端 | TCP或UDP |
创建专用界面
对于需要单个专用用户界面接线端的应用程序,可使用网络流函数连续流式传输数据和发送命令。使用网络发布共享变量或ni.com上的Simple Messaging Reference Library (STM),监测每个变量的最新值。使用STM库发送命令到RT终端
创建SCADA界面
监视控制和数据采集用户界面通常包括与多个嵌入式控制器交互的一个或多个用户界面。对于SCADA应用程序,使用网络发布共享变量发送命令和监视最近值。要尽可能提高大型应用程序的可扩展性,可以编程方式查找、读取和写入共享变量。
关于使用共享变量发布用户界面数据的范例,见labview\examples\Real-Time Module\RT Communication\RT FIFO Variables目录下的RT FIFO Variables - networked.lvproj。
使用正确的载荷
载荷大小就是通过网络一次性发送数据的大小。载荷越大,程序的吞吐量和CPU效率就越高。等待数据积累到某一特定的值,然后发送数据,网络发送数据的时间可能会稍有增加。通过数据流传输数据时,总是希望速度越快越好。相比之下,在发送命令时,延迟越少越好。
连续数据流
下列建议有助于提高网络传输的速度。
- 使用高效的网络协议(例如,UDP、TCP)或网络流。
- 通过网络发送数据前,先累积数据。以1 KB(1024字节)或若干字节为单位发送数据,速度快且CPU系统开销少,对于大多数应用程序能保证较小的延迟。但是,使用数据流传输数据时,如要减小延迟,建议使用较小的载荷。
- 考虑切换为以太网数据包检测的轮询模式。RT终端的数据包检测设置位于NI Measurement & Automation Explorer更多设置下拉菜单中的网络设置选项卡下。注: 轮询模式的抖动小于中断模式。但是,轮询模式的CPU占用量大,会影响应用程序的整体速度。并非所有实时终端都支持轮询模式。
发送命令
下列建议有助于最小化延时:
- 使用高效的网络协议(例如,UDP、TCP)或网络流。
- 尽快地发送各条命令。例如,可使用刷新流函数,编写命令后通过网络立即发送命令。