为您的设备或工具添加 SECS/GEM

本文将介绍如何使用 Visual C# 将 SecsToHost.Net 集成到设备应用软件中。.

在设备控制器中添加 SECS/GEM 功能并不复杂。通过 SecsToHost.Net, 简单地说,只需 3 个简单的步骤(最少的编码),不到一个小时就能完成!

步骤 #1 - 动态配置

使用模型生成器(包含在 SDK 中)添加或定义设备参数(如状态变量、离散变量或设备常量/设置)、事件、警报、远程/主机命令等。.

您可以添加任意多的 GEM 数据项,这些配置将保存到 EquipmentTemplate.xml 文件中。(文件名可以更改)

要完成本文中的示例,需要定义这些 GEM 数据项:

1.

状态变量: 添加 "压力 "和 "温度"

2.

CEID:添加 "SensorDataChanged"

3.

警报:添加 "警报 1"

所有 GEM 数据项 ID 将自动生成

步骤 #2 - 将 SecsToHost.Net 动态链接库整合到您的应用程序中

在步骤 1 中定义了所有所需的 GEM 数据项后,将这些 DLL 添加到项目参考中。.

使用步骤 1 中生成的 EquipmentTemplate.xml 初始化 GEMController 对象。.

				
					private GEMController gemController;

私有 void InitializeSecsToHost() {
    gemController = new GEMController();
    
    try {
        // 订阅通信状态转换事件
        gemController.CommunicationStateChanged += OnCommunicationStateChanged;
        
        // 订阅 GEM 控制状态转换事件
        gemController.ControlStateChanged += OnControlStateChanged;
        
        // 订阅主机发送的 GEM 远程命令 (S2F21, S2F41, S2F49)
        gemController.RemoteCommandIn += OnRemoteCommandIn;
        
        // 订阅 GEM 食谱下载查询 (S7F1)
        gemController.RecipeDownloadInquired += OnRecipeDownloadInquired;
        
        // 订阅主机发送的GEM食谱下载(S7F3)
        gemController.RecipeDownloadReceived += OnRecipeDownloadReceived;
        
        // 订阅 GEM 食谱上传请求 (S7F5)
        gemController.RecipeUploadRequested += OnRecipeUploadRequested;
        
        // 订阅主机发送的 GEM 终端消息(S10F3)。
        gemController.TerminalMessageReceived += OnTerminalMessageReceived;
        
        // 初始化 GEM 控制器
        gemController.Initialize("EquipmentTemplate.xml", @"C:\Temp");
    }
    catch (Exception ex) {
        Logger("Error: Failed to initialize SecsToHost.Net");
    }
}
				
			

上述 gemController.Initialize 方法的代码会接收 EquipmentTemplate.xml 文件,以便在运行时加载 GEM 数据项。.

每当设备的参数值发生变化时,就会调用 gemController.SetAttribute 方法来更新其值。.
例如,更新参数 “压力 ”和 “温度”:

				
					// 更新 SVID:压力
gemController.SetAttribute("Pressure", AttributeType.SV, "89");

// 更新 SVID:温度
gemController.SetAttribute("温度",AttributeType.SV,"122.8");//更新 SVID:温度
				
			
向主机发送事件通知:
				
					// 向主机发出 CEID: SensorDataChanged 事件通知
gemController.SendCollectionEvent("SensorDataChanged");
				
			

向主机发出警报或清除警报通知:

				
					// 引发 ALID:Alarm1:向主机发送警报设置通知
gemController.SetAlarm("Alarm1");

// 清除 ALID:Alarm1:向主机发送警报清除通知
gemController.ClearAlarm("Alarm1");
				
			
要从主机接收食谱下载,首先要订阅 RecipeDownloadReceived 回调:
				
					// 订阅主机发送的 GEM 食谱下载 (S7F3)
gemController.RecipeDownloadReceived += OnRecipeDownloadReceived;
				
			

在 OnRecipeDownloadReceived 事件处理程序中读取 recipeId 和 recipeBody 参数:

				
					private void OnRecipeDownloadReceived(object sender, RecipeEventArgs e) {
    string recipeId = e.RecipeId;
    byte[] binPPBody = e.GetRecipeBody();
    
    // 向主机发送 S7F4 ACK。
    e.SetReply(ACKC7.Accepted);
}
				
			

步骤 #3 - 使用 SWIFT 模拟器测试 GEM 应用程序

SWIFT 模拟器是 SDK 附带的另一个工具,可用于模拟 HOST。.

以主机身份运行 SWIFT 模拟器,测试新创建的 GEM 应用程序:

一旦您的 GEM 应用程序调用了这些代码:

				
					// 更新 SVID:压力
gemController.SetAttribute("Pressure", AttributeType.SV, "89");

// 更新 SVID:温度
gemController.SetAttribute("温度",AttributeType.SV,"122.8");//更新 SVID:温度
				
			

在 SWIFT 模拟器中,发送 S1F3 以查询 “压力(SVID:1016)”和 “温度(SVID:1017)”的值,GEMController 将无缝回复 S1F4。.

类别
社交活动

不可思议
现代
设计

专为技术和软件开发公司网站打造的现代主题。Deon,WP 设计的新时代。.