自定义控件

VisualControls.FS2EasyControls 模块是 FreeSCADA 2 系统中用于提供可视化控件的核心组件库,旨在为用户提供更丰富、便捷的图形化界面元素,用于直观地展示和操作工业自动化过程中的各类数据。这些控件涵盖了从基本的数据显示(如数值、文本)、状态指示(如指示灯、报警器),到复杂的交互式图表(如趋势图、棒图)等多种类型,是实现系统人机交互界面(HMI)的关键。

IVisualControlsPlug 接口在 FS2EasyControls 中的实现

接口方法实现

数据源绑定

BindDataSource 方法:这是实现控件与数据源关联的核心方法。它接收数据源标识符(如标签名称)和数据绑定规则(如数据类型转换、数据更新频率等)作为参数。FS2EasyControls 模块中的每个可视化控件都通过这个方法与 FreeSCADA 2 系统中的特定数据(如从 OPC 服务器、ModBus 设备等采集的数据)建立联系。

例如,对于一个用于显示温度的数字显示屏控件,通过 BindDataSource 方法将其与表示温度传感器数据的标签 “Temperature.Sensor1” 绑定。在绑定过程中,可以指定数据类型为浮点数,更新频率为每秒一次等规则。这样,控件就能够实时获取该温度数据的变化,并在界面上进行相应更新。

数据更新与刷新

UpdateData 方法:用于将最新的数据从数据源拉取到控件,并触发控件的刷新操作。当系统中的数据(如通过 Communication 模块从设备采集到的新数据)发生变化时,FS2EasyControls 模块会调用控件的 UpdateData 方法。该方法内部会根据控件的类型和绑定规则,对数据进行适当的处理(如数值修约、单位转换等),然后更新控件的显示内容。

比如,在一个模拟压力表控件中,当 UpdateData 方法被调用并接收到新的压力值数据时,它会根据压力值计算指针的旋转角度,重新绘制压力表的图形界面,使指针指向对应的压力刻度位置,从而直观地反映当前压力的变化情况。

用户交互响应

OnUserInteraction 方法:用于处理用户与控件之间的交互操作,如点击按钮、调整滑块、输入文本等。当用户对可视化控件进行操作时,FS2EasyControls 模块会捕捉到这些操作事件,并通过 OnUserInteraction 方法进行相应处理。

例如,在一个用于控制电机启停的按钮控件中,当用户点击启动按钮时,OnUserInteraction 方法会识别这个点击事件,然后根据预先定义的控制逻辑(如向 PLC 发送电机启动命令),通过 FreeSCADA 2 系统的通信模块将控制指令发送到相应的设备。同时,它还可以更新按钮本身的显示状态(如改变按钮颜色为绿色表示电机已启动)。

数据封装与传递

数据封装

在 FS2EasyControls 模块中,数据从数据源传递到控件时,会按照 FreeSCADA 2 系统统一的数据模型(如 Common 模块中的 Tag 类)进行封装。控件接收到的数据包含数据值、质量(如好、坏、可疑等)、时间戳等关键信息。例如,从 OPC 服务器获取的流量数据 “FlowMeter1” 会封装为一个 Tag 对象,其 Value 属性为当前流量值(如 120m³/h),Quality 属性为数据质量(假设为 “Good”),TimeStamp 属性为数据更新时间。

数据传递流程

当系统中的数据源(如通过 OPCPlug 模块连接的 OPC 服务器)有数据更新时,数据首先会按照 ICommunicationDriver 的规范传递到 FreeSCADA 2 的数据处理层。然后,数据处理层根据可视化界面的配置(如哪个控件绑定了该数据源),调用 FS2EasyControls 模块中相应控件的 UpdateData 方法。控件接收到数据后,根据自身类型和绑定规则进行处理,并更新显示内容。同时,控件在处理数据过程中,也可以将一些状态信息(如数据是否在正常范围内、是否触发报警等)反馈给系统,以便系统进行进一步的处理(如生成报警信息推送等)。