我正在使用 TwinCAT.Ads (TwinCAT 3) 通过 c# 应用程序进行 Beckhoff plc 通信。应用程序正在读取和写入一些 PLC 变量。我收到一个错误:
“无法编组对象。参数名称:值”
在编写结构变量数组时。但是应用程序正在读取它而没有任何错误。任何帮助将不胜感激。下面是我的代码示例。
Plc中的结构
TYPE Station :
STRUCT
ClusterID : STRING[10];
Tech_Type : USINT;
Status : BOOL;
Reject : BOOL;
Rej_Detail : STRING[50];
Rej_Catagory : USINT;
END_STRUCT
END_TYPE
c#中的类
[StructLayout(LayoutKind.Sequential, Pack = 0)]
public class Station
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
public string ClusterID;
public byte Tech_Type;
[MarshalAs(UnmanagedType.I1)]
public bool Status;
[MarshalAs(UnmanagedType.I1)]
public bool Reject;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 51)]
public string Rej_Detail;
public byte Rej_Catagory;
}
我正在使用下面的代码编写,其中句柄 [0]是变量句柄,而站是长度为 5 的类数组。
adsClient.WriteAny(handles[0], stations, new int[] { 5 });