You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过IHUAPI的ihuTagAdd接口为GE/Proficy Historian添加标签?

在GE Proficy Historian中使用IHUAPI添加标签的正确方法

你找到的ihuTagAdd@4函数签名是不完整的——GE Proficy Historian的IHUAPI标准标签添加接口需要结合标签属性结构体来使用,仅传入服务器句柄的版本无法完成标签创建,大概率是代码片段遗漏了关键参数。

核心问题说明

ihuTagAdd@4的后缀@4表示该函数仅接收4字节参数(单个int类型的serverhandle),这并不是用于创建标签的完整接口。标准的ihuTagAdd需要两个参数:服务器连接句柄,以及一个包含标签所有属性的ihuTagProperties结构体指针。

正确实现步骤

  1. 定义匹配IHUAPI的结构体和枚举
    首先在C#中定义与非托管IHUAPI一致的ihuTagProperties结构体和数据类型枚举,确保内存布局匹配:

    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
    public struct ihuTagProperties
    {
        [MarshalAs(UnmanagedType.LPStr)]
        public string Tagname;
        public ihuDataType DataType;
        [MarshalAs(UnmanagedType.LPStr)]
        public string EngineeringUnits;
        public float HiEngineeringUnits;
        public float LoEngineeringUnits;
        // 可根据需求添加更多属性,比如描述、采集频率等,需参考官方IHUAPI文档
    }
    
    public enum ihuDataType
    {
        IHU_DATA_TYPE_FLOAT = 0,
        IHU_DATA_TYPE_STRING = 1,
        IHU_DATA_TYPE_INT32 = 2,
        IHU_DATA_TYPE_BOOL = 3
        // 其他数据类型请参考官方枚举定义
    }
    
    public enum ihuErrorCode
    {
        IHU_SUCCESS = 0,
        // 其他错误码参考官方定义
    }
    
  2. 修正DllImport函数签名
    替换你之前的导入代码,使用完整的ihuTagAdd接口:

    private const string DLLNAME = "ihuapi.dll"; // 确保路径正确
    
    [DllImport(DLLNAME, CallingConvention = CallingConvention.StdCall, EntryPoint = "ihuTagAdd")]
    public static extern ihuErrorCode ihuTagAdd(int serverhandle, ref ihuTagProperties tagProps);
    
  3. 填充属性并调用接口
    先通过ihuConnect获取有效的服务器句柄,然后填充标签属性,最后调用接口创建标签:

    // 假设已完成服务器连接,获得有效的serverhandle
    ihuTagProperties newTag = new ihuTagProperties();
    newTag.Tagname = "Production_Pressure_01";
    newTag.DataType = ihuDataType.IHU_DATA_TYPE_FLOAT;
    newTag.EngineeringUnits = "Bar";
    newTag.HiEngineeringUnits = 10.0f;
    newTag.LoEngineeringUnits = 0.0f;
    
    ihuErrorCode result = ihuTagAdd(serverhandle, ref newTag);
    if (result == ihuErrorCode.IHU_SUCCESS)
    {
        // 标签创建成功
    }
    else
    {
        // 根据错误码排查问题,比如标签名重复、权限不足等
    }
    

额外注意事项

  • 确保使用的ihuapi.dll版本与你的Historian服务器版本匹配,不同版本的结构体字段可能存在差异。
  • 操作前需确认连接用户具备创建标签的权限。
  • 若需要批量创建标签,可使用ihuTagAddMultiple接口提升效率。

内容的提问来源于stack exchange,提问作者Andrew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 15:03:18