【问题标题】:How to trigg a Function_Block如何触发功能块
【发布时间】: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


【解决方案1】:

我使用在我的功能块中定义的方法来触发一个动作。我还从该方法返回一个布尔值,指示该操作是否可以执行的天气,具体取决于当前状态。

METHOD M_Open : BOOL
VAR_IN
    sPath : STRING;
END_VAR
VAR_OUTPUT
    bExecutionAllowed : BOOL;
END_VAR
bExecutionAllowed := _ ;    // Calculate depending on the current state

    sPathName := sPath;

IF bExecutionAllowed THEN
    nStep := 1;
END_IF

然后在某处调用该方法一次

fbFileHandler.M_Open("Path/To/File");

和循环的功能块

fbFileHandler();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-04
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    • 1970-01-01
    • 2011-12-08
    • 1970-01-01
    • 2014-02-26
    相关资源
    最近更新 更多