我正在使用 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
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)
我正在用下面的代码编写,其中handles[0]是变量句柄, …
我一直在用 C#.NET 开发一个应用程序,它可以通过 OPC 服务器与 PLC 通信。我已经搜索了基于 C#.NET 的 OPC\n客户端库,并找到了以下库。由于我从未使用过这些库,所以我不知道哪个是首选。价格在这里并不重要。如果你们用过其中任何一个或其他任何一个,请告诉我。
\n\nhttp://www.opclabs.com/products/quickopc
\n\nhttp://advosol.com/pc-54-3-easyua-client-sdk.aspx
\n\nhttps://www.plccom.net/products/opc/opc-ua-toolkit.html
\n\nhttps://technosoftware.com/opc-ua-client-sdk-net/
\n\n\n\nhttps://www.unified-automation.com/products/client-sdk/net-ua-client-sdk.html
\n