下面小编为大家介绍西门子plc s7-1200的直接和间接寻址功能读取和写入数组中元素值的指令,字段读取和字段写入。同时,简要分析了该程序的设计。接下来,使用Field Read来实现此功能。在程序设计过程中,您可能需要使用循环跳转指令。 示例:假设您需要从一组数据中找到最大值,并记录最大值是该数据集中的第一个数据。
步骤1:添加一个全局DB块,并在DB块中创建一个名为data 1的变量。数据类型是一个变量数组,用于存储要查找的最大数据。同时,创建一些相应的变量,如下所示。
步骤2:初始化相应的内存,并将存储的最大值的内存值设置为最小,这些程序如下:
步骤3:写入判断数据的比较是否完成。当执行次数等于设定次数时,表示完成,并且可以跳过最大值搜索的程序,让程序跳转到上一次执行,该程序如下所示:
介绍了读取和写入数组中元素值的指令,字段读取和字段写入。同时,简要分析了该程序的设计。接下来,使用Field Read来实现此功能。在程序设计过程中,您可能需要使用循环跳转指令。
例子说明:假设您需要从一组数据中找到最大值,并记录此最大值是此数据集中的第一个数据。
步骤1:添加一个全局DB块,并在DB块中创建一个名为data_1#的变量,该数据类型是一个变量数组,用于存储需要找到的最大数据, 如下所示 。
该程序仅供参考,我希望将来每个人都可以使用此功能。
在上一节中,我使用梯形图编写了一个取最大值的程序。但是,在s7-1200西门子plc中,也支持SCL编程。使用SCL编程将为一些复杂的数据处理带来极大的便利。仍然使用前面的示例作为示例来说明如何使用SCL编写程序实现。举例说明: 假设您需要从一组数据中找到最大值,并记录此最大值是此数据集中的第一个数据。 使用SCL编程来完成这个例子,这里我们需要使用两个语句 (1)有条件判断的陈述 IF(条件)THEN(执行声明) 万一; 解析:如果满足条件,则执行THEN之后的语句。 示例:IF“DATA_A”< 100 HEN “DATA_A”:=“DATA_A”+1; 万一; 如果DATA_A的值小于100,则DATA_A的值等于其自身加1。 (2)循环执行声明 FOR(执行变量):=(起始值)TO(结束值)BY(自增量)DO(后面要执行的语句); END_FOR; 解析:从执行循环到执行,每个循环一次,“执行变量”的值根据“自增量”改变,直到执行“结束值”,循环执行停止。 示例:FOR“count”:=0 TO 4 BY 1 DO “数据[COUNT]”=10; END_FOR; 将值10填入值Data中Data [0]到Data [4]的五个元素中,在第一个循环中填入10到Data [0],在第二个循环中填入10。数据[1],反过来。 在理解了这两个语句之后,我们可以设计一个程序,在这里我们可以将它构建为功能块(FB)以供将来使用。
步骤1:添加全局db块并在全局db块中创建称为数据的数组。您可以根据需要设置元素的数量,如下图所示,数组的数目设置为5。
步骤2:添加FB块并选择编程语言作为SCL编程语言。然后在FB接口中定义相应的变量如下:
步骤4:在OB1中调用功能块。由于使用了FB,因此需要在调用时分配相应的后台DB,如下图所示:
总结:以上内容就是小编为大家介绍的西门子plc s7-1200的直接和间接寻址功能,如果您有这方面的任何需求,欢迎大家咨询容感电气,我们将给您最真诚的服务。