资源预览内容
第1页 / 共14页
第2页 / 共14页
第3页 / 共14页
第4页 / 共14页
第5页 / 共14页
第6页 / 共14页
第7页 / 共14页
第8页 / 共14页
第9页 / 共14页
第10页 / 共14页
亲,该文档总共14页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
S7-1200 PLC数组和间接寻址访问S7-1200 PLC ARRAY data type and indirect field accessesSingle FAQ 2014-03摘 要 本文提供一个S7-1200 通过数组和间接寻址方式,以实现程序动态修改程序变量的地址和内容。而有效的提升程序的灵活性和适用范围;但S7-1200 PLC在实际的使用过程中,没有POINTER、ANY指针的数据类型,而通过数组和间接寻址方式替代指针的一般应用。 关键词 S7-1200 数组 间接寻址访问Key Words S7-1200 ARRAY data indirect field accesses目 录1概述42S7-1200间接寻址42.1 TIA PROTAL V12 为S7-1200 提供以下标准编程语言52.2 LAD/FBD编程S7-1200的间接寻址52.3 SCL编程S7-1200的间接寻址63S7-1200数组数据类型的间接访问83.1一维数组类型的间接访问93.2多维数组类型的间接访问104S7-1200数组应用实例121概述 SIMATIC S7-1200 是 SIMATIC S7 可编程控制器系列中的新型模块化微型 PLC。由于其紧凑型模块化设计及高性能,SIMATIC S7-1200 适用于大量自动化应用,而且成本非常合算;其大量的指令集使得 SIMATIC S7-1200 可解决小到中型自动化应用。 但在其使用的过程中用户提出其该系列PLC不支持POINTER、ANY指针的应用。其实应该问的是既然有了数组,指针的应用可以用数组替换吗?我们知道执行指针是危险的,执行指针很容易就会现在指针越界问题,如果是赋值操作将会对系统造成很大的危险,相信每一个程序员都会用指针取数时取过不属于自已定义的内存单元。并且数组有它自已的优点: 1、数组定义的是一组连续的内存空间,可以说每个单元都有自已的变量名(数组名+下标),这样如果执行越界操作时,程序将会报错; 2、数组更好管理和直观一些!如果程序里有使用很多指针,我们知道执行指针是危险的,多一个针指操作就多一分危险,你能保证,程序编写一次就能正常运行,你这么多的针指就不会指向一些重要的系统或用户数组去操作? 而S7-1200 PLC能通过数组和间接寻址方式替代指针的一般应用。2S7-1200间接寻址2.1、TIA PROTAL V12 为S7-1200 提供以下标准编程语言 LAD(梯形图逻辑)是一种图形编程语言。 它使用基于电路图的表示法。 FBD(功能块图)是基于布尔代数中使用的图形逻辑符号的编程语言。 SCL(结构化控制语言)是一种基于文本的高级编程语言。创建代码块时,应选择该块要使用的编程语言。2.2、LAD/FBD编程S7-1200的间接寻址 LAD/FBD编程S7-1200的间接寻址:FieldRead(读取域)、FieldWrite(写入域)。 FieldRead(读取域): 以下示例说明了该指令的工作原理: 下表将通过具体的操作数值对该指令的工作原理进行说明:参 数变 量值INDEXa_index4MEMBERDB_1.Main_Field-10数据块“DB_1”中域“Main_Field-10.10 of REAL”的第一个元素VALUEa_real域“Main_Field-10.10 of REAL”中下标为 4 的元素 该指令是从域“Main_Field-10.10 of REAL”读取下标为 4 的域元素,并将其写入“a_real”变量。 待读取域的元素由输入 INDEX 中的值指定。 FieldWrite(写入域): 以下示例说明了该指令的工作原理: 下表将通过具体的操作数值对该指令的工作原理进行说明:参 数变 量值INDEXa_index4VALUEa_real10.54MEMBERDB_1.Main_Field-10数据块“DB_1”中域“Main_Field-10.10 of REAL”的第一个元素 该指令是变量“a_real”的值“10.54”,将写入域“Main_Field-10.10 of REAL”中下标为 4 的域元素。 通过 INDEX 输入中的值,指定要传送变量“a_real”内容的域元素的下标。2.3、SCL编程S7-1200的间接寻址 SCL编程S7-1200的间接寻址:POKE、POKE_BOOL、PEEK、PEEK_BOOL、POKE_BLK指令。其中AREA可以选择以下区域: 16#81: Input 16#82: Output 16#83: 位存储区 16#84: DB 16#2: 外设输出(仅 S7-1500) POKE(写入存储器地址): 以下示例说明了该指令的工作原理:POKE(AREA := Tag_Area, DBNUMBER := Tag_DBNumber, BYTEOFFSET := Tag_Byte, VALUE := Tag_Value); 下表将通过具体的操作数值对该指令的工作原理进行说明:参 数操作数值AREATag_Area16#84DBNUMBERTag_DBNumber5BYTEOFFSETTag_Byte20VALUETag_Value16#11 该指令使用值“16#11”覆盖数据块“5”中的存储地址“20”。 POKE_BOOL(写入存储器位): 以下示例说明了该指令的工作原理:POKE(AREA := Tag_Area, DBNUMBER := Tag_DBNumber, BYTEOFFSET := Tag_Byte, BITOFFSET := Tag_Bit, VALUE := Tag_Value); 下表将通过具体的操作数值对该指令的工作原理进行说明:参 数操作数值AREATag_Area16#84DBNUMBERTag_DBNumber5BYTEOFFSETTag_Byte20BITOFFSETTag_Bit3VALUETag_ValueM0.0 该指令使用值“M0.0”覆盖数据块“5”中字节“20”的存储器位“3”。 PEEK(读取存储器地址): 以下示例说明了该指令的工作原理:Tag_Result1 := PEEK(AREA := Tag_Area, DBNUMBER := Tag_DBNumber, BYTEOFFSET := Tag_Byte);Tag_Result2 := PEEK_WORD(AREA := Tag_Area, DBNUMBER := Tag_DBNumber, BYTEOFFSET := Tag_Byte); 下表将通过具体的操作数值对该指令的工作原理进行说明:参 数操作数值AREATag_Area16#84DBNUMBERTag_DBNumber5BYTEOFFSETTag_Byte20函数值Tag_Result1字节值20函数值Tag_Result2字值20 该指令从数据块“5”中的“Tag_Byte”操作数内读取地址值“20”,并将结果作为“Tag_Result”操作数的函数值返回。 PEEK_BOOL(读取存储器位): 以下示例说明了该指令的工作原理:Tag_Result := POKE_BOOL(AREA := Tag_Area, DBNUMBER := Tag_DBNumber, BYTEOFFSET := Tag_Byte, BITOFFSET := Tag_Bit); 下表将通过具体的操作数值对该指令的工作原理进行说明:参 数操作数值AREATag_Area16#84DBNUMBERTag_DBNumber5BYTEOFFSETTag_Byte20BITOFFSETTag_Bit3函数值Tag_ResultTag_Bit的状态 该指令从数据块“5”中字节“20”的“Tag_Bit”操作数内读取存储器位值“状态”,并将结果作为函数值在“Tag_Result”操作数中返回。 POKE_BLK(写入存储区): 以下示例说明了该指令的工作原理:POKE_BLK(AREA_SRC := Tag_Source_Area, DBNUMBER_SRC := Tag_Source_DBNumber, BYTEOFFSET_SRC := Tag_Source_Byte), AREA_DEST := Tag_Destination_Area, DBNUMBER_DEST := Tag_Destination_DBNumber, BYTEOFFSET_DEST := Tag_Destination_Byte, COUNT := Tag_Count); 下表将通过具体的操作数值对该指令的工作原理进行说明:参 数操作数值AREA_SRCTag_Source_Area16#84DBNUMBER_SRCTag_Source_DBNumber5BYTEOFFSET_SRCTag_Source_Byte20AREA_DESTTag_Destination_Area16#83DBNUMBER_DESTTag_Destination_DBNumber0BYTEOFFSET_DESTTag_Destination_Byte30COUNTTag_Count100 该指令将数据块“5”中从地址“20”开始的 100 个字节写入位存储区中从地址“30”开始的存储区内。3S7-1200数组数据类型的间接访问 S7-1200动态访问数据可
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号