本文利用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
阅读全文
245