我们开发了一个Java应用程序,该应用程序使用TwinCat ADS库(DLL)从Beckhoff PLC(CX5120)读取,写入和处理事件。我们已经成功地在多台机器上运行了该程序,但是不幸的是,当前遇到了一个事件处理突然停止的问题。这是我们经历的确切场景:
使用另一台带有Java应用程序的PC进行测试,同样的问题。因此,PLC中的某些内容似乎冻结/停止工作。
这是我们设置事件处理的方式:
// Implementation of the CallbackListenerAdsState interface
public class ADSEventController implements CallbackListenerAdsState {
......
// Register itself as listener for the ADS events (in constructor)
callObject = new AdsCallbackObject();
callObject.addListenerCallbackAdsState(this);
....
// Event handling
public void onEvent(AmsAddr addr, AdsNotificationHeader notification, long user) {
log.info("Got ADS event for handle[{}] and with raw data[{}]", user, notification.getData());
......
// Registering notification handles for PLC variables
// If we already assigned a notification, delete …Run Code Online (Sandbox Code Playgroud) 我正在使用 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]是变量句柄, …
我目前在 Hyper V 虚拟机上运行 Twincat 3.1..4022.16。我能够正确构建我的项目,但是当激活配置时,我遇到实时启动隔离 cpu 故障。
附件是我的实时设置和错误。
任何解决方案的线索都将受到高度赞赏。
我想使用 TwinCat 3 制作一个自动图形喷泉来控制阀门,并使用 Visual Studio C# 来处理要在喷泉上显示的图像。
图像处理程序的最终形式是一个二进制数组图像(附): Image Processing Result 1; 图像处理结果2;
我想使用图像处理的最终形式来控制机器上的阀门(阀门在为 1 时打开,阀门在为 0 时关闭)。我对 TwinCat 3 非常新,尤其是使用 ADS图书馆。
infosys beckhoff 的样本对我没有帮助,有人可以帮我吗?
谢谢你
我需要通过以太网从Twincat 3向Twincat 2发送一个变量.这可能吗?我怎么能这样做?