使用VB调用OPC UA FileSystem方法时遇类型不匹配错误求助
问题分析与解决方案
核心问题
你遇到的类型不匹配错误,本质是OPC UA FileSystem的Delete方法输入参数要求字符串类型的文件名,而非NodeId类型。
OPC UA标准定义的FileSystemType中,Delete方法的输入参数是名为fileName的String类型,用于指定要删除的文件名称(或相对路径),而非目标文件的NodeId。你当前传入的OpcNodeId对象和方法预期的数据类型不匹配,因此触发了类型错误。
修正后的代码
Dim FileFolderObjectId As String = "ns=2;s=Sinumerik/FileSystem/Part Program" Dim methodDeleteNodeId As String = "ns=2;s=Sinumerik/FileSystem/Part Program.Delete" Dim SourcePartProgramId As New OpcArgumentCollection() ' 直接传入文件名字符串,而非NodeId对象 Dim Argument1 As New OpcArgument("fileName", "T_5M.MPF", False) SourcePartProgramId.Add(Argument1) client.Connect() ' 删除指定文件 client.CallMethod(FileFolderObjectId, methodDeleteNodeId, SourcePartProgramId)
额外验证建议
可以使用UA客户端工具(如UaExpert)连接到目标OPC UA服务器,查看Part Program.Delete方法的输入参数定义:
- 确认参数的名称(比如是否为
fileName而非你写的InputArgument) - 确认参数的数据类型(必须为String类型)
- 确保参数的方向性(输入参数需设置为False,和你当前的设置一致)
内容的提问来源于stack exchange,提问作者Steve Wei
相关产品推荐
相关产品推荐

