【发布时间】:2019-01-21 07:54:36
【问题描述】:
是否有将现有结构化文本PLC代码转换为功能块图的已知方法? (甚至是 Beckhoff 的 CFC)
我知道这很困难,因为这些语言所基于的流程不同。
也许只是部分或至少一些结构与正确的变量连接到功能块?
我必须根据 FBD 的外观在 Visio 中创建一个逻辑代码概述,并且至少有一些结构来作为我的绘图的基础,而不必从基础上绘制所有内容,这将是一个很大的帮助ST码。
一个小的示例代码将是这个在 ST 中完成的“BrakeControl”FB,但我需要映射更大的 FB:
IF stSettings.bExists THEN
IF stSettings.eMode = E_OPMode.eOPModeOpen OR stSettings.eMode = E_OPMode.eOPModeClose THEN
// close brake manual - only possible if below max braking rpm and hydraulic closed
bCloseBrake := stSettings.eMode = E_OPMode.eOPModeClose AND stIO.stGenerator.IstGen_Speed.fPercent < stSettings.fStartRev AND itfHydCtrl.IsClosed;
ELSE
IF stIOs.IbBrake_Auto AND stIOs.IbBrake_Worn AND
(itfTurbCtrl.State = E_TurbState.eTurbStateFault OR
itfTurbCtrl.State = E_TurbState.eTurbStateStop OR
itfTurbCtrl.State = E_TurbState.eTurbStateReady )
THEN
IF stIO.stGenerator.IstGen_Speed.fPercent < stSettings.fStartRev AND itfHydCtrl.IsClosed THEN
bCloseBrake := TRUE;
END_IF
END_IF
IF stIOs.IbBrake_Auto AND NOT stIOs.IbBrake_Worn AND itfTurbCtrl.ManualMode THEN
IF stIO.stGenerator.IstGen_Speed.fPercent < stSettings.fStartRev AND stIO.stPenstock.IbBypass_Closed
AND stIO.stPenstock.IbMIV_Closed AND itfHydCtrl.IsClosed THEN
bCloseBrake := TRUE;
END_IF
END_IF
END_IF
IF bBrakeRelease THEN
bCloseBrake := FALSE;
END_IF
stIOs.QbBrake_On := bCloseBrake;
【问题讨论】:
-
为什么?因为你更了解 CFC?这部分漂亮且非常清晰的代码在 CFC 中会显得非常难看,
-
不幸的是,我们的一位客户需要它......如果我找不到任何软件来至少部分转换代码,我必须直接从 ST 代码中手动绘制它,就像在这个示例:i.stack.imgur.com/MHUee.png 目前我正在尝试使用 Visio 并从 Excel 工作表中绑定数据,至少能够更好地管理 IO 和变量名称
-
基本上这个问题与 “软件推荐” 上的另一个问题非常相关:link
-
我同意 Mark Lazz,你不需要绘制每个块逻辑。只需在图表上添加此块,而不是块如何工作的图表。
标签: plc structured-text