一起创业网-为互联网创业者服务

累计流量程序怎么写

编写流量累计值程序的方法取决于你使用的PLC品牌和型号,以及你的具体需求。以下是针对西门子PLC编写流量累计值程序的一些步骤和示例:

使用西门子流量累积库指令(Totalizer)

步骤

1. 在PLC中添加一个循环中断程序OB30,设置中断时间为100ms,以便定期读取流量计的瞬时流量。

2. 在循环中断程序中,调用流量累积库指令(Totalizer)。

3. 填写Totalizer指令的参数:

`Value`:输入模拟量转换出来的实际流量值。

`Interval`:输入流量的时间单位,如米每秒(T1s)、立方米每分钟(T1M)、公里每小时(T1h)等。

`Cycle`:输入中断循环时间。

`Reset`:输入复位累积流量的信号。

示例

```pascal

// 假设瞬时流量变量名为AI1,时间单位变量名为TI1,循环时间变量名为TI2,复位信号变量名为TR1

Totalizer(

Value := AI1,

Interval := TI1,

Cycle := TI2,

Reset := TR1

);

```

使用FB1子程序

步骤

1. 在FB1中编写子程序,包括瞬时流量取整、取小数部分、累加计算等。

2. 在循环中断程序OB30中调用FB1子程序。

示例

```pascal

// FB1子程序

PROGRAM FB1

VAR

InstantFlowInteger: INT;

InstantFlowFractional: REAL;

AccumulatedFlowInteger: INT;

AccumulatedFlowFractional: REAL;

PreviousAccumulatedFlow: REAL;

BEGIN

// 取整和取小数部分

InstantFlowInteger := INT(AI1);

InstantFlowFractional := AI1 - InstantFlowInteger;

// 累加计算

AccumulatedFlowInteger := AccumulatedFlowInteger + InstantFlowInteger;

AccumulatedFlowFractional := AccumulatedFlowFractional + InstantFlowFractional;

// 防止溢出

IF AccumulatedFlowFractional >= 1 THEN

AccumulatedFlowInteger := AccumulatedFlowInteger + 1;

AccumulatedFlowFractional := AccumulatedFlowFractional - 1;

END_IF;

// 存储结果

Output(AccumulatedFlowInteger);

Output(AccumulatedFlowFractional);

// 累加上一次的结果

PreviousAccumulatedFlow := AccumulatedFlowInteger + AccumulatedFlowFractional;

END_PROGRAM

```

使用博途软件

步骤

1. 在博途软件中创建一个FB块,并定义相关变量。

2. 编写流量累积计算程序,包括时间转换和累积计算。

3. 在FC和OB30中断块中调用该功能块实现流量累加功能。

示例

```pascal

// FB块程序

PROGRAM Totalizer

VAR

TimeUnitReal: REAL;

ScanTimeReal: REAL;

InstantFlow: REAL;

AccumulatedFlow: REAL;

Reset: BOOL;

BEGIN

// 输入变量

TimeUnitReal := TimeUnit;

ScanTimeReal := ScanTime;

InstantFlow := InstantFlowValue;

Reset := ResetSignal;

// 计算累积流量

AccumulatedFlow := AccumulatedFlow + (InstantFlow * ScanTimeReal) / TimeUnitReal;

// 复位累积流量

IF Reset THEN

AccumulatedFlow := 0;

END_IF;

// 输出结果

Output(AccumulatedFlow);

END_PROGRAM

```

根据你的具体需求和PLC型号,可以选择合适的方法进行流量累计值的编写。建议在实际应用中进行充分的测试和验证,以确保程序的准确性和可靠性。