STEP7的SCL编程9*9乘法表

本文介绍如何使用FUNCTION_BLOCKFB2实现一个功能,计算并显示9*9的乘法表,并累计乘积总和。通过实例演示如何在OB1中调用该函数,以及DB2的数据变化过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

FUNCTION_BLOCK FB2


TITLE = 'mul9_9'
//
// Block Comment...
//
VERSION: '1.0'
AUTHOR: wxl
NAME: Name
FAMILY: Family
(*

输出9*9乘法表及所有乘法的和

*)
// Block Parameters
VAR_INPUT
    // Input Parameters输入参数定义
Start :BOOL;
Stop:BOOL;
Rst :BOOL;
END_VAR

VAR_IN_OUT
    // I/O Parameters
END_VAR

VAR_OUTPUT
    // Output Parameters输出变量定义
Qresult :INT;
END_VAR

VAR_TEMP
    // Temporary Variables

END_VAR
VAR
    // Static Variables
i:INT;
j:INT;
k:INT;
Result:INT;
Runstate:BOOL;
ResultStruct:ARRAY[0..99] OF TwoNoMult;

//定义了100个数据,每个数据都是TwoNoMult数据类型,TwoNoMult中包含3个数据Frist,Second

//和Result,调用格式ResultStruct[x].Frist,ResultStruct[x].Second,ResultStruct[x].Result。定义

//见下面说明部分。

END_VAR

    // 复位数据
    IF Rst=1 THEN
        i:=0;
        j:=0;
        k:=0;
        Result:=0;
        Qresult:=0;
        Runstate:=0;
        
    END_IF;

 // 计算数据
    IF Start=1 AND Stop=0 AND NOT Runstate THEN
        FOR i:=1 TO 9 DO
            FOR j:=i TO 9 DO
                Result:=i*j;
                 Qresult:=Result+Qresult;//计算99乘法表说有乘积的和。
                 ResultStruct[k].Frist:=i;
                 ResultStruct[k].Second:=j;
                 ResultStruct[k].Result:=Result;
                 k:=k+1;
                 IF j=9 THEN
                    Runstate:=1;//运行到最后一步,值为标志位,此后循环中将不再进行计算
                    END_IF;

            END_FOR;
        END_FOR;
    END_IF;
       
    ;
END_FUNCTION_BLOCK

 

说明:

这里TwoNoMult是一个UDT数据类型,定义如下

其中Frist是第一个被乘数;Second是乘数,Result是乘积。


1.在OB1中调用源程序生成的FB2,背景数据块为DB2

2.运行后数块中的数据如下

Start=0,时DB2

Start=1,时DB2

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王小蓝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值