PLC矩阵旋转

西门子PLC S7-1200 二维矩阵旋转

BO1

请添加图片描述

FC

请添加图片描述

DB块

请添加图片描述

FC中的SCL代码

  1. row,col是初始矩阵的行和列;
  2. 矩阵标号顺序,左起第一列,由上往下1,2,3…row,再到左起第二列,有上往下;
  3. 顺时针旋转,增量90度;
  4. 判断2D数组中的元素不为0则为有产品;
  5. 判断2D数组中的元素的数值则为产品编号(即原始矩阵的顺序编号)。

#i := 0; //行
#j := 0; //列
#n := 0; //标号
#"0MT" := #MT;
#"90MT" := #MT;
#"180MT" := #MT;
#"270MT" := #MT;

REGION 0MT
    // Statement section REGION
    FOR #j := 1 TO #Col DO
        // 控制列
        // 
        FOR #i := 1 TO #Row DO
            // 控制行
            // 
            #n := #n + 1;
            #"0MT"[#i, #j] := #n;
            IF #n >= #Total THEN
                // RETURN;
                // 
                //GTO XZ;
                //
                EXIT;
                
            END_IF;
        END_FOR;
        ;
    END_FOR;
END_REGION

//XZ:  //旋转

    
    REGION 90MT
        // Statement section REGION
        //顺时针旋转90 
        
        FOR #i := 1 TO #Col DO
            FOR #j := 1 TO #Row DO
                #"90MT"[#i, #j] := #"0MT"[#Row - #j + 1, #i];
            END_FOR;
        END_FOR;
    END_REGION
    
    
    REGION 180MT
        // Statement section REGION
        //顺时针旋转180 
        
        FOR #i := 1 TO #Row  DO
            FOR #j := 1 TO #Col DO
                #"180MT"[#i, #j] := #"0MT"[#Row - #i + 1, #Col - #j + 1];
            END_FOR;
        END_FOR;
    END_REGION
    
    REGION 270MT
        // Statement section REGION
        //顺时针旋转270
        
        FOR #i := 1 TO #Col  DO
            FOR #j := 1 TO #Row DO
                #"270MT"[#i, #j] := #"0MT"[#j, #Col - #i + 1];
            END_FOR;
        END_FOR;
    END_REGION
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Qi0759

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

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

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

打赏作者

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

抵扣说明:

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

余额充值