【求助】信捷PLC用C函数数组如何比较 点击:377 | 回复:4



nanfei002

    
  • 精华:0帖
  • 求助:40帖
  • 帖子:40帖 | 44回
  • 年度积分:10
  • 历史总积分:1396
  • 注册:2019年6月26日
发表于:2024-04-08 16:39:16
楼主
求助帖30分-已结帖

       想请教各位大神,信捷PLC如何用C函数 实现单数组与 多个进行比较




条件达成后

      数组   A[10] 同时与数组  B[10] ,  C[10],  D[10], D[10] ,,,,进行比较 是否有相同的数组 


       







楼主最近还看过

空不异色

  • [版主]
  • 精华:0帖
  • 求助:0帖
  • 帖子:22帖 | 563回
  • 年度积分:1
  • 历史总积分:25259
  • 注册:2020年3月27日
发表于:2024-04-09 08:45:39
1楼

不能直接在信捷PLC中使用C函数,可以使用PLC的逻辑指令和比较指令来实现类似的功能:

步骤 1: 定义数组和比较值

  1. 数组定义:在PLC的内存中定义一个数组,用于存储你要比较的数据。这通常是通过分配一段连续的内存地址来实现的。

  2. 比较值定义:定义你想要与数组元素进行比较的多个值。这些值可以是常量,也可以是存储在PLC内存中的变量。

步骤 2: 遍历数组

  1. 循环结构:使用PLC提供的循环结构(如FOR循环或WHILE循环)来遍历数组中的每个元素。

  2. 数组元素访问:在循环的每次迭代中,通过索引访问数组中的当前元素。

步骤 3: 进行比较操作

  1. 比较指令:在循环内部,使用比较指令(如等于、不等于、大于、小于等)将当前数组元素与每个比较值进行比较。

  2. 条件判断:根据比较的结果,使用条件判断指令(如IF-THEN-ELSE)来执行相应的操作。

步骤 4: 处理比较结果

  1. 结果存储:你可以设置一个标志位或计数器来记录比较的结果。例如,你可以使用一个标志位来表示是否找到了匹配的值,或者使用一个计数器来记录匹配值的数量。

  2. 输出操作:根据比较的结果,你可以触发PLC的输出,如控制某个设备的开关状态或发送信号到上位机。

步骤 5: 结束循环和清理

  1. 循环结束:当数组中的所有元素都被比较后,结束循环。

  2. 资源清理:确保释放或重置在比较过程中使用的任何临时变量或标志位。



太月星辰

  • 精华:0帖
  • 求助:1帖
  • 帖子:5帖 | 382回
  • 年度积分:414
  • 历史总积分:3824
  • 注册:2011年11月02日
发表于:2024-04-09 10:42:13
2楼

"空不异色" 的回复,发表在1楼
        对内容: 【不能直接在信捷PLC中使用C函数,可以使用PLC的逻辑指令和比较指令来实现类似的功能:步骤 1: 定义数组和比较值数组定义:在PLC的内存中定义一个数组,用于存储你要比较的数据。这通常是通过分配一段连...】进行回复:

        -----------------------------------------------------------------


应用ai生成的具有误导的内容建议删除!

phoenixyqc

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 127回
  • 年度积分:79
  • 历史总积分:704
  • 注册:2009年2月23日
发表于:2024-04-09 13:59:41
3楼

建议用memcmp函数。https://blog.csdn.net/2302_80198073/article/details/135797431

肯定比循环要好,不过可能在比较前需要先各自排序

olove83

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 445回
  • 年度积分:437
  • 历史总积分:2473
  • 注册:2008年6月17日
发表于:2024-09-06 19:56:17
4楼
这个不用函数的程序试下
#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;}


回复本条

    

热门招聘
相关主题

官方公众号

智造工程师