扫码加入

  • 正文
  • 相关推荐
申请入驻 产业图谱

博途SCL-找出矩阵里最大数所在行号和列号

03/10 10:01
245
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

本文利用SCL 找出多维数组的最大值并且输出所在行号和列号。

符号表:

一、FC 块接口定义

变量区域 变量名称 数据类型 说明
Input in_RealMatrix Array[0..5, 0..4] of Real 输入的 6 行 5 列实数矩阵
Output out_MaxRowIndex Int 矩阵最大值对应的行索引
Output out_MaxColIndex Int 矩阵最大值对应的列索引
Temp temp_CurrentMax Real 临时缓存当前遍历的最大值
Temp temp_RowLoop Int 行循环计数器
Temp temp_ColLoop Int 列循环计数器

完整程序代码:

// 功能:遍历6行5列实数矩阵,查找矩阵中最大值对应的行号和列号// 适配TIA Portal V17,变量名已重命名,逻辑与原需求完全一致// 初始化:假设矩阵第一个元素[0,0]为初始最大值,同步初始化行列索引#temp_CurrentMax := #in_RealMatrix[0, 0];#out_MaxRowIndex := 0;#out_MaxColIndex := 0;// 外层循环:遍历矩阵所有行(0~5,共6行)FOR #temp_RowLoop := 0 TO 5 DO    // 内层循环:遍历当前行的所有列(0~4,共5列)    FOR #temp_ColLoop := 0 TO 4 DO        // 比较当前矩阵元素与缓存的最大值        IF #in_RealMatrix[#temp_RowLoop, #temp_ColLoop] > #temp_CurrentMax THEN            // 若当前元素更大,更新最大值与对应的行列索引            #temp_CurrentMax := #in_RealMatrix[#temp_RowLoop, #temp_ColLoop];            #out_MaxRowIndex := #temp_RowLoop;            #out_MaxColIndex := #temp_ColLoop;        END_IF;    END_FOR;END_FOR;

数据源:可以看到对应的行列是3和2

调用功能块输出行:3,列:2

相关推荐