西门子PLC模块自动化代理商西门子PLC模块自动化代理商
西门子AI模块6ES7531-7KF00-0AB0西门子AI/AO模块6ES7534-7QE00-0AB0
西门子扩展模块6ES7532-5HF00-0AB0西门子扩展模块6ES7532-5NB00-0AB0
西门子S7-1200系列PLC的间接寻址的功能,S7-1200系列的PLC间接寻址功能不同于S7-200系列PLC的间接寻址功能,S7-1200系列PLC的间接寻址功能主要是对DB块中所建立的数组进行寻址,根据对数组下标值的访问和修改来实现对数组中元素值的读取或写入。
在S7-1200PLC中,若需要根据数组下标值来对数组中元素的访问有两种方式可以实现,一是通过大家熟悉的梯形图来编写程序实现,二是可以通过SCL的编程方式来编写这样的程序实现。这里通过一个简单的例子为例,分别通过这两种方式如何实现通过索引数组的下标值来实现对数组中元素的访问。
例子说明:
假设需要从一组数据中找出一个大值,并记录这个大值是这组数据中的第几个数据。
先以大家相对来讲比较熟悉的梯形图的方式来实现此功能。这里我们需要用到通过读取域或写入域的指令,该指令根据索引的下标值来读取数值中相对应元素的值或写入数到数组中相对应的元素里。此例子中只需要用到读指令,指令位于移动操作指令中的“原有”文件加中。
读取数组中元素值的指令格式如下:
名称 | 数据类型 | 功能描述 |
INDEX | DINT | 数组的下标值 |
MEMBER | 取决数组中所建立元素的数据类型 | 数组中的个元素 |
VALUE | 取决数组中所建立元素的数据类型 | 存放根据下标值读取出来的数组元素中的值 |
举例:
表示把数据中的data这个数组中的data[5]这个元素的值读取出来放入到MW100这个变量中。
写入数组中元素值的指令格式如下:
名称 | 数据类型 | 功能描述 |
INDEX | DINT | 数组的下标值 |
VALUE | 取决数组中所建立元素的数据类型 | 把该值写入到通过下表指定的对应的数组元素中 |
MEMBER | 取决数组中所建立元素的数据类型 | 数组中的个元素 |
举例:
表示把数据20写入到数据块1中的变量名为data的数组中的data[3]元素的存储器中。
在本例中,我们只需要用到个指令,设计一个如例题中所要求的梯形图程序。
程序编写思路:
本例题要去找出大值,并把大值所处的位置记录下来,编程思路:假设变量MAX_DATA作为大值的存储器,根据下标值(INDEX)的多少去读取相应数值中对用的元素的值放于TEMP_DATA变量中,与MAX_DATA做比较,若MAX_DATA的值要小,则进行交换,记录INDEX值。INDEX加1,可以指向数组中的下一个元素。
西门子PLC模块自动化代理商西门子PLC模块自动化代理商西门子CPU模块代理商西门子变频器代理商西门子电源模块代理商西门子DP电缆代理商西门子软件代理商西门子储存卡代理商西门子CPU模块代理商西门子触摸屏代理商西门子模块代理商
西门子PLC扩展模块6ES7531-7NF10-0AB0
西门子PLC扩展模块6ES7531-7QD00-0AB0
西门子PLC扩展模块6ES7531-7KF00-0AB0
西门子PLC扩展模块6ES7534-7QE00-0AB0
西门子S7-1500存储卡6ES7954-8LC02-0AA0
西门子S7-1500存储卡6ES7954-8LE02-0AA0
西门子S7-1500存储卡6ES7954-8LF02-0AA0
西门子S7-1500存储卡6ES7954-8LL02-0AA0