agh*_*ghd 3 plc real-time instantiation codesys iec61131-3
我使用 CODESYS 制作了一个功能块来执行电能计量。该功能块的输入是电流和电压,输出是能量。现在,我们需要有 1000 个该功能块的实例来运行我们拥有的 1000 米的代码。编写(可能还有复制和粘贴)这些实例似乎并不是最有趣的工作。想知道是否有人有更聪明的方法来进行如此众多的实例化。
例如,以下是 2 个实例的代码(在 CODESYS 中)的样子:
meter_instance1(CURRENT:=I1, VOTAGE:=V2);
Energy1:= meter_instance1.ENERGY;
meter_instance2(CURRENT:=I2, VOTAGE:=V2);
Energy2:= meter_instance2.ENERGY;
Run Code Online (Sandbox Code Playgroud)
我们希望有 1000 个实例。任何想法都会受到高度赞赏。
小智 5
只需创建一个功能块数组:
aEnergyMeter : array [0..999] of FB_EnergyMeter;
Run Code Online (Sandbox Code Playgroud)
还制作电压和电流的数组:
aVoltage : array [0..999] of INT; //if you use INT as type
aCurrent : array [0..999] of INT;
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样使用它:
aEnergyMeter[0](CURRENT:= aCurrent[0], VOLTAGE := aVoltage[0]);
Run Code Online (Sandbox Code Playgroud)
当您使用具有相同大小的不同数组时,我更愿意定义一些全局常量:
VAR GLOBAL CONSTANT
firstDevice : UINT := 0;
lastDevice : UINT := 999;
END_VAR
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样定义数组:
aEnergyMeter : array [firstDevice..lastDevice] of FB_EnergyMeter;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1765 次 |
| 最近记录: |