楼主最近还看过
不能直接在信捷PLC中使用C函数,可以使用PLC的逻辑指令和比较指令来实现类似的功能:
数组定义:在PLC的内存中定义一个数组,用于存储你要比较的数据。这通常是通过分配一段连续的内存地址来实现的。
比较值定义:定义你想要与数组元素进行比较的多个值。这些值可以是常量,也可以是存储在PLC内存中的变量。
循环结构:使用PLC提供的循环结构(如FOR循环或WHILE循环)来遍历数组中的每个元素。
数组元素访问:在循环的每次迭代中,通过索引访问数组中的当前元素。
比较指令:在循环内部,使用比较指令(如等于、不等于、大于、小于等)将当前数组元素与每个比较值进行比较。
条件判断:根据比较的结果,使用条件判断指令(如IF-THEN-ELSE)来执行相应的操作。
结果存储:你可以设置一个标志位或计数器来记录比较的结果。例如,你可以使用一个标志位来表示是否找到了匹配的值,或者使用一个计数器来记录匹配值的数量。
输出操作:根据比较的结果,你可以触发PLC的输出,如控制某个设备的开关状态或发送信号到上位机。
循环结束:当数组中的所有元素都被比较后,结束循环。
资源清理:确保释放或重置在比较过程中使用的任何临时变量或标志位。
建议用memcmp函数。https://blog.csdn.net/2302_80198073/article/details/135797431
肯定比循环要好,不过可能在比较前需要先各自排序
这个不用函数的程序试下 #include <stdio.h>int main() { int A[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int B[10] = {11, 12, 13, 14, 15, 16, 17, 18, 19, 20}; int C[10] = {21, 22, 23, 24, 25, 26, 27, 28, 29, 30}; int D[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; bool equalFound = false; for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { if (A[i] == B[j]) { equalFound = true; break; } } if (equalFound) break; } if (!equalFound) { for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { if (A[i] == C[j]) { equalFound = true; break; } } if (equalFound) break; } } if (!equalFound) { for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { if (A[i] == D[j]) { equalFound = true; break; } } if (equalFound) break; } } if (!equalFound) { for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { if (B[i] == C[j]) { equalFound = true; break; } } if (equalFound) break; } } if (!equalFound) { for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { if (B[i] == D[j]) { equalFound = true; break; } } if (equalFound) break; } } if (!equalFound) { for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { if (C[i] == D[j]) { equalFound = true; break; } } if (equalFound) break; } } if (equalFound) { printf("There are equal arrays.\n"); } else { printf("There are no equal arrays.\n"); } return 0;}
回复本条