问题标签 [twincat]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2317 浏览

pointers - TwinCAT 和 CoDeSys 中的指针和在线更改

在 TwinCAT 2.10 和 CoDeSys 2.3 中,指针对于在线更改运行中的 PLC 程序是否安全,第一个是基于第一个的?如果内存块作为在线程序更改的一部分被重新分配并且有指向该内存块的指针会发生什么?

0 投票
3 回答
5833 浏览

c# - C# Backgroundworker 和 Twincat,如何在工作线程中触发 Notification 事件

我对混合事件和线程知之甚少。场景是在 PC 上运行 C# 程序,在 PLC 上运行 Twincat。我们需要访问 C# 程序中的 PLC 变量(已经在没有后台工作线程的情况下完成并且工作正常。),现在我们需要将这些处理移动到一个线程(最好是后台工作线程)。这是不工作的代码。(表单包含一个 START 按钮,它将启动 BGWorker,一个 STOP 按钮将取消 BGWorker,以及一个 UPDATE 按钮,它将值从 PLC 更新到文本框。),但现在 tcClient_OnNotification没有被调用!请指出我遗漏的地方,任何帮助将不胜感激。

提前致谢。阿比拉什。

0 投票
1 回答
1299 浏览

c++ - 如何将字符串从 Twincat PLC OPC UA 服务器发送到统一自动化 OPC UA C++ 客户端程序

如何将字符串(温度、压力、设定点)值发送到 OPC UA C++ CLIENT 程序意味着客户端可以访问它可以读取或写入的服务器中的值

0 投票
3 回答
6220 浏览

plc - TwinCAT 3,将方法用于内部 FB 功能还是仅用于接口?

我是 Beckhoff 技术的老用户,尤其是 TwinCAT。目前,由于 TwinCAT 3(面向对象)带来的新功能,我们的 PLC 架构正在经历转型

目前,我们正在开发新的 PLC 架构,并且我们对如何前进有几个担忧。目前引起我们注意的一个很好的例子是新方法以及与动作的整体差异。

从我自己的角度来看,创建方法不仅是为了定义和实现接口,也是为了简化 FunctionBlock 及其内部状态机。例如,如果我有一个内部有自己的状态机的 FB_Conveyor,我可以选择为传送带创建内部方法 (M_INIT),它将检查传送带以检查传送带处于 INIT 状态时是否有任何产品,检查方法输出值。Method 将包含其赢得的状态机,并且在其输出返回 TRUE 值之前不会准备好。

第一个问题出现在这里,因为我们的一些实时程序员认为方法并没有为此完成,在这种情况下,我们应该实现从 FB_CONVEYOR 调用的 FB_INIT 并且它包含自己的变量,因此两者都有 REF 到 FB_MOTOR .

主要论点是 METHODS 是一种用于创建接口和控制 FB 的工具,例如,我自己的 FB_CONVEYOR 可以从具有方法 M_TakeIn 的 I_Conveyor 扩展,但不用于实现内部功能作为初始化它。

一个论点是方法使用自己的堆栈变量,因此方法的所有数据都是临时的,并且仅在执行期间有效。这意味着,如果实现它的方法太大,我们将无法确保实时的正确延迟。然后根据我自己的经验,TC 总是会占用尽可能多的处理器资源来确保正确的循环时间,所以使用内部堆栈变量实际上并不是一个架构错误,但它是可以和可取的,因为实际上 TC 确保实时操作但不需要被实现为一个总实时(基于 C 的实时)过程。

讨论一直在进行,对于是否应该将方法用作内部操作或者我们是否应该真正遵循 TC2 Motion FB 的架构(其中不同的功能块控制不同功能和每个共享一个对某些轴的引用(FB_MOVE、FB_HOME 等)

在任何文档中都没有找到任何真正的答案,在定义接口的情况下几乎总是提到方法,但在编程内部 FB 功能的情况下却从未提及。

那么,是否可以将方法用于内部功能,这将有助于将来在接口中转换孔 FB 时,根据情况需要重新实现方法 init。

对于也具有方法和接口的新版本 CodeSyS,这个问题几乎相同。

0 投票
3 回答
1898 浏览

.net - TwinCAT 2.11:使用 Win32-Application 设置 Config/Freerun-Mode

我在 Windows XP SP2 上使用 TwinCAT I/O 2.11。使用 .NET 库“TwinCAT.ADS”,我已经设法读取和写入输入/输出(来自 EtherCAT 总线上设备的映射对象)。但当然,这仅在 TwinCAT 处于 Freerun 或 Realtime 模式时才有效。

我现在的问题是:我可以手动设置 TwinCAT 模式。但是如何使用 Win32 程序设置 TwinCat 模式(Freerun、Realtime、...)?我没有在 TwinCAT.ADS 中找到合适的函数。有没有这样的功能?

0 投票
2 回答
1273 浏览

controller - twincat/beckhoff plc 中关于 NT_GetTime 的解释

我能解释一下这个功能块及其参数吗(超时:它是做什么的,忙:什么时候是真假)?

0 投票
4 回答
7466 浏览

plc - Beckhoff TwinCAT:使用 C++ 代替结构化文本的缺点

我想专注于进入 Beckhoff/TwinCAT PLC 编程。

因为我比较习惯 C/C++,所以这将是一个很好的起点。与学习结构化文本相比有什么缺点吗?

0 投票
1 回答
1566 浏览

c# - 倍福:AddDeviceNotification

我对 Beckhoff ADS 有疑问。我创建了一个简单的项目:

所以,当 MAIN.SyncPLCtoHMI 发生变化时,我应该会收到一个通知,但是这个 MAIN.SyncPLCtoHMI 每 20 毫秒发生一次变化(这是正确的,我想要这次)但是 Windows 有时会阻止这个通知......

我该怎么办?,有另一种设置 Windows 或 ADS 的模式吗?

0 投票
1 回答
1052 浏览

time-frequency - Beckhoff TwinCAT3.1 中的频率计算

我正在尝试确定脉冲输入的频率,即泵的转速反馈。我试图创建两个计时器,每个计时器为一秒,并且每次出现上升沿时计数。根据一秒钟内上升沿的数量,我可以计算出频率。遗憾的是我找不到功能或功能块。任何关于生成函数的帮助都会很棒!

我还附上了我尝试使用但似乎不起作用的代码 - 我认为一些新鲜的眼睛可能能够发现我错过的东西。

0 投票
2 回答
3958 浏览

c++ - 使用 C++ 在 Twincat 3 上进行 PLC 编程

我正在尝试为望远镜的圆顶创建一个控制模块。我将使用 Beckhoff PLC。我不确定如何进行整个过程。我有 C++ 知识,但我不确定使用 TwinCAT 对 PLC 进行编程。

在 TwinCAT 中为 PLC 编程是否与编写任何其他控制程序相同?另外,我应该选择状态机模块吗?然而,由于我缺乏编程知识,我不确定我是否能够应付对状态机的编程。