我正在开发一个console应该在WinCE 6.0和下运行的应用程序WinCE 7.0.我正在使用C#,Compact Framework 2.0出于不同的兼容性原因.
我的应用程序由一个名为TwinCAT(来自Beckhoff)的外部运行时启动.在这个应用程序中,我的队友使用了一个名为nt_startProcess(此处的文档)的功能块,负责根据需要启动我的应用程序.
我的问题 - 两种不同的行为取决于操作系统:
从cmd线路手动启动(不使用TwinCAT)时:
我的应用程序在两个系统上都表现正常.这意味着,应用程序启动,显示"Hello World"然后返回到该cmd行.
从TwinCAT开始时:
a)开WinCE 6.0,我可以看到一个cmd线开口,显示"Hello World"并立即关闭.对我来说是完美的行为
b)开WinCE 7.0,我可以看到一个cmd线开口,显示"Hello World",但它永远保持打开状态.这是我的问题!
代码段:
using System;
using System.Collections.Generic;
using System.Text;
namespace MyBasicExample
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World");
}
}
}
Run Code Online (Sandbox Code Playgroud)
编译信息
在Visual Studio 2008中,在项目编译的属性中:
附加说明:
请注意,运行WinCE 6.0的计算机使用的是i486处理器,而运行WinCE 7.0的计算机使用的是Freescale ArmCortex进程.
WinCE 6.0:

WinCE …
有两个默认任务总是添加到新创建的 TwinCAT 项目中:I/O 空闲任务和 PlcAux 任务。我想知道这些任务的作用和职责是什么?例如,当我改变它们各自的循环时间时,会产生什么影响。
\nBeckhoff 的 InfoSys 上没有关于这些任务的信息。我也向 Beckhoff 寻求支持,但只得到了以下简短的答复:
\n\n\n\n
\n- I/O 空闲任务:在创建 EtherCAT 主站时创建。与 CoE 读/写、文件下载等节点的异步通信。IO 空闲管理 EtherCAT 状态机(进入 PreOp、SafeOp、Op)。它不直接更新 IO。
\n- PlcAuxTask:具有非常低的优先级。任何类型的 ADS 通信。
\n
在互联网的其余部分,我只找到了德语的解释:
\n\nIO-Idle Task ist ua zust\xc3\xa4ndig f\xc3\xbcr die StateMaschine des EtherCATs...\nF\xc3\xbcr die IOs selber(也称为 EtherCAT 触发和数据传输) ist sie nicht zust\xc3\xa4ndig。 \nAllgemein w\xc3\xbcrde ich mal sagen: Die Standard-Konfig ist eigentlich OK, viel langsamer als die 1msec w\xc3\xbcrde ich sie nicht machen da du …
我遇到了堆栈溢出问题,我可以清楚地看到它是在引入一些新数组时发生的。我找不到增加机器上运行的软 PLC (Twincat) 堆栈大小的选项。
任何帮助表示赞赏
我们开发了一个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]是变量句柄, …
当我尝试激活 TC3 时,我遇到了 TwinCAT3(Win10 64 位)问题。
错误信息是:
严重性代码描述项目文件行抑制状态错误 2019 年 1 月 19 日上午 11:42:34 545 毫秒 | 'TwinCAT System' (10000): Sending ams command >> Init4\RTime: Start Interrupt: Ticker started >> AdsWarning: 4115 (0x1013, RTIME: system clock setup failed. 提示: 在 Windows8 系统及以上系统上,在 TwinCAT 中执行 win8settick.bat \3.1\系统作为管理员并重新启动。)<<失败!
我也尝试运行“win8settick.bat”并重新启动 TC,但它不起作用!
有什么建议可以解决这个问题吗?非常感谢!
我目前在 Hyper V 虚拟机上运行 Twincat 3.1..4022.16。我能够正确构建我的项目,但是当激活配置时,我遇到实时启动隔离 cpu 故障。
附件是我的实时设置和错误。
任何解决方案的线索都将受到高度赞赏。
调用功能块的方法时,是否可以使某些输入变量可选?如果我在没有对所有输入变量进行赋值的情况下调用 fbA.methA(),TwinCAT 会抛出错误:“函数 methA 需要精确的 'x' 个输入。” 有时某些输入是不必要或不相关的,但到目前为止,我必须为这些输入分配虚拟值才能编译代码。
我想测量结构化文本(ST)程序的执行时间。与程序关联的任务运行时间为 10 毫秒。
如何衡量执行时间?
据我了解,定义的主要目标enumerators是将变量分配给一些数字及其相等的字符串。
我们可以将 var 定义a为our或enum中的任何地方,如下所示:initializing sectionProgramFunction Block
a:(start,stop,operate);
Run Code Online (Sandbox Code Playgroud)
很难,我不知道为什么我们看不到这一点,tabular view但有一个大问题:
将枚举器定义为 DUT 有什么好处?
twincat ×10
twincat-ads ×3
c# ×2
plc ×2
.net ×1
c#-2.0 ×1
codesys ×1
java ×1
st ×1
windows-ce ×1