【发布时间】:2022-07-06 21:02:49
【问题描述】:
所有 TwinCAT 开发人员您好,
我目前正在使用 TwinCAT 开发 block_function。 我正在尝试找到一种“标准”方式与块外部进行交互。 Beckhoff 示例总是有一个 bExec 信号来在上升沿启动状态机。
fbRisingEdge(CLK := bExec);
IF fbRisingEdge.Q THEN
nStep := 1;
END_IF
CASE nStep OF
1:
nStep := nStep + 1;
2:
nStep := nStep + 1;
END_CASE
我发现这个原理使用起来很繁重,需要更多的代码来创建上升沿:
fbFileOpen(sPathName := sPathName, bExecute := FALSE);
fbFileOpen(sPathName := sPathName, bExecute := TRUE);
有人会使用另一种替代方法在 FB 中启动状态机吗?
谢谢你,新年快乐!
【问题讨论】:
-
您可以将您的操作实现为一个方法,而不是在您的功能块的主体中,但这只是转移了问题,因为您需要确定何时调用此方法。我所做的一切都是结构化文本,我无意将我的功能块用于视觉语言,所以我的功能块通过指针/相互引用并发出方法调用或直接访问变量来相互通信,基本上只是就像我会用任何面向对象的语言一样。您打算如何使用功能块将影响其设计。
-
感谢您的回答。我也尝试以 OOP 方式编程。您知道 Beckhoff 的 OOP 示例吗?你是这样编程的吗? infosys.beckhoff.com/english.php?content=../content/1033/…
-
OO 建模/编程这个话题太广泛了,无法在这里回答。 OO 与是否使用上升沿关系不大。如果你想发展 OO 技能,我不会向 Beckhoff 寻求指导。尽管他们的工具支持一些典型的 OO 语言结构,但在教授如何最好地使用它时,我不希望它们成为智慧的源泉。
-
@Fred Structured Text,也称为 ST,是 IEC 61131-3 的一部分,IEC 61131-3 是一个国际标准,而不是 Beckhoff 发明的东西。 ST 是一种静态类型的面向对象语言,旨在编写复杂的机器软件。
-
@Aurel 如果您对如何以面向对象的方式编程机器感兴趣,我建议您阅读 PLCOPEN 指南:plcopen.org/system/files/downloads/…
标签: twincat