在 S7-1500 中,统一了所有编程语言的间接寻址选项,因此在移植过程中将部分转换 S7-300/400 中支持的间接寻址。 下表简要列出了转换的选项。下面详细介绍了各种语言结构的移植。 'BLOCK_DB' 数据类型到 'DB_ANY' 的移植 'BLOCK_DB' 数据类型在 S7-1500 中不可用。这种数据类型的变量将通过移植转换为 'DB_ANY' 数据类型。 'BLOCK_DB_TO_WORD' 和 'WORD_TO_BLOCK_DB' 转换函数将通过移植转换为 'UINT_TO_WORD(DB_ANY_TO_UINT)' 和 'UINT_TO_DB_ANY(WORD_TO_UINT)'。 以下举例说明如何移植 'BLOCK_DB' 数据类型。 在第一个表中,为移植前的三个程序段: SCL #myBlock //数据类型 BLOCK_DB; //... #myWord :=BLOCK_DB_TO_WORD(#myBlock); //... #myBlockDB := WORD_TO_BLOCK_DB(#myWord); 在第二个表中,为移植后的三个程序段: SCL #myBlock //Datentyp DB_Any; //... #myWord := UINT_TO_WORD(DB_ANY_TO_UINT(#my‐ Block)); //... #myDBANY:= UINT_TO_DB_ANY(WORD_TO_UINT(#my‐ Word)); 移植 DB 变量的间接寻址 在 S7-1500 中,通过“PEEK”/“POKE”指令间接指定数据块或 DB 变量。在移植过程中将自动转换为间接 寻址。 以下举例说明了如何移植 DB 变量的间接寻址。 在第一个表中,为移植前的程序段: SCL #myWord := %DB1.DW(IDX :=#myInt); //... #myBool:=%DB1.DX(IDX :=#myByteOffset,Bit:=#myBitOffset); //... %DB1.DW(IDX := #myInt) := 12; //... 在第二个表中,为移植后的程序段: SCL #myWord:=PEEK_WORD(area:=16#84,dbNumber:=1, byteOffset:=#myInt); //... #myBool:=PEEK_BOOL(area:=16#84,dbNumber:=1, byteOffset:=#myByteOffset, bitOffset:=#myBitOffset); //... POKE(area:=16#84,dbNumber:=1,byteOffset:=#myInt,value:=12); //... 移植 PLC 变量的间接寻址 在 S7-1500 中,通过“PEEK”/“POKE”指令间接指定 PLC 变量。在移植过程中将自动转换为间接寻址。 以下举例说明了如何移植 DB 变量的间接寻址。 在第一个表中,为移植前的程序段: SCL #myWord := MW(IDX := #myInt); 在第二个表中,为移植后的程序段: SCL 在 SCL 中间接寻址 (S7-1500) #myWord:= PEEK(area:=16#83,dbNumber:=0,byteOffset:=# myInt); POKE:写入存储地址 (S7-1200, S7-1500) POKE_BOOL:写入存储位 (S7-1200, S7-1500) PEEK:读取存储地址 (S7-1200, S7-1500) PEEK_BOOL:读取存储位 (S7-1200, S7-1500) POKE_BLK:写入存储区 (S7-1200, S7-1500) End 文章来源:西门子官方资料库,本文系网络转载,版权归原作者所有。但因转载众多,无法确认真正原始作者,故仅标明转载来源。本文所用视频、图片、文字如涉及作品版权问题,请第一时间告知,我们将根据您提供的证明材料确认版权并按国家标准支付稿酬或立即删除内容!本文内容为原作者观点,并不代表本公众号赞同其观点和对其真实性负责。 |
|
来自: 金玉满堂jjnla8 > 《SCL》