STEP7——ANY指针详解
STEP7——POINTER指针详解
参数类型POINTER的格式下图给出了存储在每个字节中的数据类型。
参数类型POINTER存储下列信息:•DB编号(或0,如果数据没有存储在DB中)•CPU中的存储区域(下表给出了参数类型POINTER存储器区的十六进制代码)十六进制代码存储区描述b#16#81I输入区域b#16#82Q输出区域b#16#83M位存储区域b#16#84DB数据块b#16#85DI背景数据块b#16#86L本地的数据(L堆栈)b#16#87V先前的本地数据•数据的地址(格式为字节.位)STEP 7提供指针格式:p#memory_area byte.bit_address.(如果形式参数被声明为参数类型POINTER,只需要指出存储区域和地址。
STEP 7将自动地重定输入指针的格式。
) 下面的实例说明如何为以M50.0开始的数据输入参数类型POINTER:•P#M50.0•M50.0 (如果形式参数声明为POINTER)。
使用参数类型POINTER指针用于指向地址。
这种寻址方式的优点是可以在程序处理期间动态地修改语句的地址。
存储器间接寻址的指针使用存储器间接寻址的程序语句由指令、地址标识符和偏移量组成(偏移量必须在方括号内给出)。
双字格式指针的实例:区域内部和区域交叉寻址的指针使用这些寻址方式的程序语句包含指令和下列部分:地址标识符、地址寄存器标识符、偏移量。
地址寄存器(AR1/2)和偏移量必须在方括号内一起指定。
区域内部寻址的实例指针不包含存储器区的指示:偏移量0.0没有影响。
输出10.0由8.7 (AR1)加上偏移量1.1计算出来。
结果是10.0而不是9.8,参见指针格式。
区域交叉寻址的实例在区域交叉寻址中,存储区域在指针中指出(在实例I和Q中)。
偏移量0.0没有影响。
输出10.0由8.7 (AR2)加上偏移量1.1计算出来。
结果是10.0而不是9.8,参见指针格式。
STEP 7 指针编程
A&D CS2 FA 崔坚
SIMATIC Technical Consulting 2007 8月
Page 14
A&D AS CS2 FA Systems Support
寻址方式
直接寻址
存储区地址指针
寄存器间接寻址
POINTER数据 类型指针
ANY数据类型 指针
FB块形参的 编程
32位内部区域指针使用示例
SIMATIC Technical Consulting 2007 8月
Page 13
A&D AS CS2 FA Systems Support
寻址方式
直接寻址
存储区地址指针
寄存器间接寻址
POINTER数据 类型指针
ANY数据类型 指针
FB块形参的 编程
32位内部区域指针
32位内部区域指针地址寻址表示格式为:地址存储器标识符 [地址寄存器,地址偏移常量],例如装载M存储器一个字节表 示为:
JC m1
A&D CS2 FA 崔坚
SIMATIC Technical Consulting 2007 8月
Page 9
A&D AS CS2 FA Systems Support
寻址方式
直接寻址
存存储储区区地地址址指指针针
寄存器间接寻址
POINTER数据 类型指针
ANY数据类型 指针
FB块形参的 编程
的倍数,,如果对相邻 两个双字操作,指针转换为整数值最小必须为32(指针为P#4.0)的
倍数,对字与双字指针 的要求主要防治数据间的冲突,例如DBW[MD2],MD2为16的倍数 时,按照DBW2、DBW4、DBW6寻址,如果为8的倍数,按照DBW1、 DBW2、DBW3寻址,地址间数据冲突。
S7-300400PLC-ANY指针使用详解
S7-300400PLC-ANY指针使用详解ANY 指针讲解STEP 7以10个字节存储参数类型ANY。
当构造类型为ANY的参数时,必须确保所有10个字节都被占用,因为调用块估计参数整个内容的值。
例如,如果以字节4指定DB编号,也必须以字节6明确地指定存储器区。
STEP 7管理基本和复杂数据类型的数据与参数类型的数据不同。
数据类型的ANY格式对于基本和复杂数据类型,STEP 7存储下列数据:∙数据类型∙重复因子∙DB编号∙信息存储的存储区域∙数据的起始地址重复因子识别由参数类型ANY传送的指示数据类型的数量。
这意味着可以指定数据区,也可以和参数类型ANY结合使用数组和结构。
STEP 7将数组和结构识别为数据类型的编号(借助重复因数)。
例如,如果要传送10个字,必须为重复因子输入数值10,并且必须为数据类型输入数值04。
地址以格式Byte.Bit存储,此处字节寻址存储在字节7的位0 - 2,节字8的位0 - 7,节字9的位3 - 7。
位地址存储在字节9的位0 - 2。
对于类型NIL的空指针,所有来自字节1的字节设置为0。
下表给出参数类型ANY的数据类型或存储区域的编码。
b#16#04WORD字(16位)b#16#05INT整数(16位)B#16#06DWORD字(32位)b#16#07DINT双整数(32位)b#16#08REAL浮点数(32位)b#16#09DATE日期b#16#0A TIME_OF_DAY (TOD)时间b#16#0B TIME时间b#16#0C S5TIME数据类型S5TIME b#16#0E DATE_AND_TIME (DT)日期和时间(64位) b#16#13STRING字符串存储器区的编码十六进制代码区域描述b#16#80P I/O区域b#16#81I输入区域b#16#82Q输出区域b#16#83M位存储区域b#16#84DB数据块下表为参数类型显示参数类型ANY的数据类型编码。
STEP7 指针编程(崔坚(36))
32位交叉区域指针使用示例
使用交叉区域指针表示方法(例如装载M存储器一个字节)为:
寄存器间接寻址
LAR1 P#M 20.0
//将指针P#M20.0 装载到地址寄存器1中。
A [AR1,P#1.1] //M21.1“与”操作。
= Q 1.2
//如果M21.1为1,输出1.2为1。
L P#I 40.0
32位地址指针
地址寻址表示格式为: 地址存储器标识符[32位地址指针],例如指针存储于LD20中, 装载M存储器一个字节表示
存储区地址指针
32位地址指针也可以使用常数表示,例如装载32位指针常 数 L P# 40.3 (P=指针,字节地址=40,位地址=3)。32位地址 指针数据与双整数可以相互转换,由于指针指到一个位地 址上,每一个位地址加1,相应转换的整数值加1的倍数, 例如P#0.0转换双整数为L#0,P#0.1转换双整数为L#1,每一 个字节地址加1,相应转换的整数值加8的倍数,例如P#3.1 转换双整数为L#25.
//指针指向P#2.4,相当于L DBB2.4,CPU无法识别,将停机。
如果对相邻两个字节操作,指针转换为整数值最小必须为8(指针为 P#1.0)的倍数,如果对 相邻两个字操作,指针转换为整数值最小必须为16(指针为P#2.0)的 倍数,,如果对相邻
两个双字操作,指针转换为整数值最小必须为32(指针为P#4.0)的倍 数,对字与双字指针
寄存器间接寻址
地址寄存器AR1、AR2的限制
寄存器间接寻址
避免方法:
L #ARR_TEST[1]
//装载形参变量ARR_TEST[1 1
//打开OB1
LAR1 P#20.0
//将P#20.0装载到地址寄存器AR1
将ANY指针用到S7-SCL中功能的参数上
将 ANY 指针用到 S7-SCL 中功能的参数上问题: 在 S7-SCL 中可以编程 ANY 指针吗?使用该指针可以在指向的数据区设置任何位。
解答: 可以。
下面的条目讲述了如何在 S7-SCL 中编程或设定一个 ANY 指针: 如何使用 AT 函数在 S7-SCL 中构造一个 ANY 指针?-条目号:21946854 当调用 SFC14/15 时,在 SCL 中支持 ANY 参数-条目号:10625180关于 ANY 指针格式的更多信息和 ANY 数据类型,可从 STEP 7 和 S7-SCL 的在线帮助中找到: “参数类型 ANY 的格式”(在 STEP 7 的在线帮助中) “数据类型 ANY”和“数据类型 ANY 实例” (在 S7-SCL 的在线帮助中)。
该条目包含带有“SetBit”功能的 S7-SCL 程序。
使用该“SetBit”功能,可以在数据区中将由 ANY 指针标记的 位设置为“1”> e >>,该数据区中的其它位都设置为“0”。
可以在 OB1 中调用“SetBit”,该 OB1 也是用 S7-SCL 语言编写的。
然而,用户也可以在 LAD、F BD 或 STL 编程语言中使用该功能。
图 1:在梯形图编程中调用“SetBit”功能(FC1)的实例 在“SetBit”功能中声明了下列输入变量,使用这些变量在定义的数据区中设置位: 名称 值 数据类型 整数 说明 在数据区中要设置的位的数目。
在本例中:位 12 起始位和范围 ANY 指针 指向数据区的已定义好的 ANY 指针。
在本例中: 在 DB 1 中, 数据区 DBX2.2 到 DBX5.1 (23 个位) 表 1:“SetBit”功能(FC1)的输入变量 功能说明: 定义 ANY 指针的第一步是在 S7-SCL 程序中创建 UDT1 (符号:AnyPoint),该 S7-SCL 程序包含要为 ANY 指针定义的数据类型。
ANY格式
数据类型的ANY格式对于基本和复杂数据类型,STEP 7存储下列数据:数据类型重复因子DB编号信息存储的存储区域数据的起始地址重复因子识别由参数类型ANY传送的指示数据类型的数量。
这意味着可以指定数据区,也可以和参数类型ANY结合使用数组和结构。
STEP 7将数组和结构识别为数据类型的编号(借助重复因数)。
例如,如果要传送10个字,必须为重复因子输入数值10,并且必须为数据类型输入数值04。
地址以格式Byte.Bit存储,此处字节寻址存储在字节7的位0 - 2,节字8的位0 - 7,节字9的位3 - 7。
位地址存储在字节9的位0 - 2。
对于类型NIL的空指针,所有来自字节1的字节设置为0。
下表给出参数类型ANY的数据类型或存储区域的编码。
数据类型的编码十六进制代码数据类型描述b#16#00 NIL 空指针b#16#01 BOOL 位b#16#02 BYTE 字节(8位)b#16#03 CHAR 字符(8位)b#16#04 WORD 字(16位)b#16#05 INT 整数(16位)B#16#06 DWORD 字(32位)b#16#07 DINT 双整数(32位)b#16#08 REAL 浮点数(32位)b#16#09 DATE 日期b#16#0A TIME_OF_DAY (TOD) 时间b#16#0B TIME 时间b#16#0C S5TIME 数据类型S5TIMEb#16#0E DATE_AND_TIME (DT) 日期和时间(64位)b#16#13 STRING 字符串存储器区的编码十六进制代码区域描述b#16#80 P I/O区域b#16#81 I 输入区域b#16#82 Q 输出区域b#16#83 M 位存储区域b#16#84 DB 数据块b#16#85 DI 背景数据块b#16#86 L 本地的数据(L堆栈)b#16#87 V 先前的本地数据参数类型的ANY格式对于参数类型,STEP 7存储数据类型和参数的地址。
如何使用AT函数在S7-SCL中构造一个ANY指针.docx
如何使用AT函数在S7-SCL中构造一个ANY指针?说明在S7-SCL中可以使用AT命令来定义其它声明变量的视图。
下面的两个例子描述了如何为ANY指针声明组件,创建ANY指针以及确定用于从DB6复制数据到DB7的SFC20 (BLKMOV)的参数。
下表描述了如何在函数中定义一个ANY指针。
No. 步骤1 STEP 7将参数类型ANY的数据保存在10个字节中。
为此必须定义一个结构变量,它包含如“datatype", “repeatfactor", “DB number"的参数类型, 还有构造ANY指针的字节和位地址。
图01显示了在FC中两个结构变量“Testi”和“Test”的样例声明。
FUNCTION FC1: VOIDVARTesti: STRUCT //ANY Struktur 1 anlegenANY_id: BYTE; //Define ANY structure 1 Source_DataType: BYTE;Source_Lenght: WOPL;Source_DB_Nuioiaer: WORD;Source_Byte_Pointer: DWORD;ENB_STRUCT;_Test2: STRUCT //ANY Struktur 2 anlegenANY_id: BYTE; //Define ANY structure 2 Destin_DataType: BYTE;Destin_Lenght: WOPL;Destin_DB_Nuioiaer: WORD;Destin_Byte_Pointer: DWORD;ENB_STRUCT;_//Deklarat-ion AI«JY Pointer fur Quell-DB//Declaring ANY pointer of source DB pAny_source AT Testi: ANY;//Deklaration ANY Pointer fur Ziel-DB//Declaring ANY pointer o f target DB pAny_destin AT Test2: ANY;erg: INT; //Ruckgabewert / Return valueEND VARTesti. ANY_id: = 16#10; //Vor be 丄egen der Que 11-AI«IY-Point er VariablenTesti・ Sourue_DsLtLaTyp&: = 16#Z; //Assign values for source pointer Testi・ Source_Lenght:= 16#0a;Testi・ Source_DB_Nuioiaer: = 16#06;Testi・ Source_Byte_Pointer:= dw#16#84000000;Test2 . ANY_id: = JL6#JL0; //Vor belegen der Zi el-ANY-Point er VariablenTest2.Destin_DataType:= 16#Z; //Assign values for destination pointer Test2.D e st in_L enght:= 16#0a;Test2 . Destin_DB_Nuioiaer: = 16#07;Test2.Destin_Byte_Pointer:= dw#16#84000000;//Auf ruf SFC20 und Paraiaetrierung der AI«IY-Point er-Variablen //Calling SFCZO and prograiaming o f ANY pointer variables erg:= SFC20(srcblk:= pAny_s our c e dstblk:= pAny_de st in);END_FUNCTION图012使用S7-SCL指令AT通过结构变量Testi”或“Test2"创建一个模板,并且给为此而定义的变量声明"ANY"类型,例如"pAny.source'o这样使用指令•n pAny_source AT Testi: ANY;"|已经定义了一个ANY指针3现在必须如图01所示通过结构说明预置ANY指针。
Step7-数据类型详细说明总结汇总
Step7-数据类型详细说明总结汇总Step7-数据类型详细说明总结汇总STEP7中的基本数据类型⑴位(BOOL)位数据的数据类型为BOOL(布尔)型,在软件编程中BOOL 变量的值1和0常⽤英语词TURE(真)和FALSE(假)来表⽰,对应⼆进制数中的“1”和“0”,常⽤于开关量的逻辑运算,存储空间为1位。
⑵字节(BYTE)字节数据长度为8位,数据格式为B#16#,B代表BYTE,表⽰数据长度为⼀个字节(8位),#16#表⽰⼗六进制,取值范围为B#16#0~B#16#FF。
⑶字(WORD)字数据长度为16位,这种数据可采⽤4种⽅法进⾏描述。
⼆进制:⼆进制的格式为2#,如2#101,取值范围为2#0~2#1111_1111_1111_1111,书写时每4位可⽤下划线隔开,也可直接表⽰为2#111111111111。
⼗六进制:⼗六进制的格式为W#16#,W代表WORD,表⽰数据长度为16位,#16#表⽰⼗六进制,数据取值范围为W #16#0~W#16#FFFF。
BCD码:BCD码的格式为C#,取值范围为C#0~C#999。
BCD码是⽤4位⼆进制表⽰1位⼗进制数,4位⼆进制中的0000~1001组合分别表⽰⼗进制中的0~9,4位⼆进制中的1010~1111组合放弃不⽤。
BCD码的最⾼4位⽤来表⽰符号,⼗六位BCD码的取值范围为-999~+999。
在STEP7的数据格式中,BCD码的取值只取正值,与最⾼4位的符号⽆关。
⽆符号⼗进制数:⽆符号⼗进制数的格式为B#(×,×),取值范围为B#(0,0)~B#(255,255),⽆符号⼗进制数是⽤⼗进制的0~255对应⼆进制数中的0000_0000~1111_1111(8位),16位⼆进制数就需要两个0~255的数来表⽰,例如:B#(12,254)=2#0000_1100_1111_111012 254上⾯4种数据都是描述⼀个长度位16位的⼆进制数,⽆论你使⽤哪种⽅式都可以。
step7的使用方法
异步错误组织块
OB80~OB87:异步错误中断。异步错误 是PLC的功能性错误。它们与程序执行时 不同步地出现,不能跟踪到程序中的某个 具体位置。 在运行模式下检测到一个故障 后,如果已经编写了相关的组织块,则调 用并执行该组织块中的程序。如果,发生 故障时,相应的故障组织块不存在,则 CPU将进入STOP模式。
中间输出单元 信号流反向指令 复位线圈 置位线圈 复位置位触发器和置位复位触发器
位逻辑指令
程序实例
对应时序图如下所示:
位逻辑指令
时序图
位逻辑指令 正跳沿(上升沿)检测指令
位逻辑指令 负跳沿(下降沿)检测指令
位逻辑指令
地址正跳沿检测 地址负跳沿检测
SAVE指令
位逻辑指令 地址上升沿检测指令示例
1. FC和FB的变量声明表的差别
2.FC和FB参数赋值不同
FC没有自己的背景数据块 FB有自己的背景数据块 FC的参数必须指定实参 FB的参数可根据需要决定是否指定实参
3.1.3系统功能SFC和系统功能块SFB
SFC和SFB是预先编好的可供用户调用的 程序块,它们已经固化在S7PLC的CPU中, 其功能和参数已经确定。一台PLC具有哪 些SFC和SFB功能,是由CPU型号决定的。 具体信息可查阅CPU的相关技术手册。通 常SFC和SFB提供一些系统级的功能调用, 如通讯功能、高速处理功能等。注意:在 调用SFB时,需要用户指定其背景数据块 (CPU中不包含其背景数据块),并确定 将背景数据块下载到PLC中。
lad参数数据类型存储区说明地址timer地址表示要起动的计时器号时间值s5time定时时间值s5time格式4保持型开通延时定时器ss上图中的程序对应的时序图如图所示4保持型开通延时定时器sslad参数数据类型说明存储区地址timer要启动的计时器号如t0bool启动输入端tvs5time定时时间s5time格bool复位输入端bool定时器的状态biword当前时间整数格式bcdword当前时间bcd码格关断延时定时器sf相当于继电器控制系统中的断电延时时间继电器
西门子STEP7指针编程研究与应用
刘 强 ( 三一重工股份有限公司, 湖南 长沙 4 1 0 0 0 0 )
【 摘 要 】 本文首先简要阐述了西门子 S T E P 7中常见 的间接寻址 方式 , 包括存储器间接寻址、 寄存器间接寻址、 P O I N T E R指针和 A N Y指针寻址
B y t e 7 ~ B y t e 9 : 被寻址的字节及位地址。
1 . 2 寄 存 器 间接 寻址
寄存 器 间接 寻 址使 用 P L C 内部 集成 的 两 个 3 2位 寄 存 器
A R1 和 A R 2 。 地 址 寄 存 器 的 内容加 上 偏 移 量 形 成 地 址 指 针 , 该 指 针 指 向数 值 所在 的存 储 单 元 .从 而 可 以 实现 对各 存 储 区存
等: 同时, 结 含 工 程 实 例 对 AN Y 类 型指 针 编 程 进 行 了详 细 分析 与说 明 , 为i  ̄f - 3 子 S T E P 7指 针 编 程 的 推 广 应 用起 到抛 砖 引玉 的作 用。
【 关键词 】 S T E P 7 ; 指针 ; 寻址 方式 ; 存储器 ; 寄存器 【 中图分类号 】 T M 5 7 l 【 文献标识码 】 A 【 文章编号 】 1 0 0 6 — 4 2 2 2 ( 2 0 1 5 ) 1 0 — 0 2 5 1 — 0 2
存 器 间接 寻 址 、 P OI NT ER指 针 和 AN Y 指 针 寻 址【 2 1 。 下 面 分 别 进 行 简要 阐述 :
块 F B传 递 复 合 数 据 类 型 ( 如 A R R A Y、 S T R U C T及 D T等 ) 的实
参. 在 被 调 用 的 函数 F C及 函数 块 F B 内部 可 以 间接 访 问 实 参
STE ——ANY指针详解
参数类型ANY的格式STEP 7以10个字节存储参数类型ANY。
当构造类型为ANY的参数时,必须确保所有10个字节都被占用,因为调用块估计参数整个内容的值。
例如,如果以字节4指定DB编号,也必须以字节6明确地指定存储器区。
STEP 7管理基本和复杂数据类型的数据与参数类型的数据不同。
数据类型的ANY格式对于基本和复杂数据类型,STEP 7存储下列数据:•数据类型•重复因子•DB编号•信息存储的存储区域•数据的起始地址重复因子识别由参数类型ANY传送的指示数据类型的数量。
这意味着可以指定数据区,也可以和参数类型ANY结合使用数组和结构。
STEP 7将数组和结构识别为数据类型的编号(借助重复因数)。
例如,如果要传送10个字,必须为重复因子输入数值10,并且必须为数据类型输入数值04。
地址以格式Byte.Bit存储,此处字节寻址存储在字节7的位0 - 2,节字8的位0 - 7,节字9的位3 - 7。
位地址存储在字节9的位0 - 2。
对于类型NIL的空指针,所有来自字节1的字节设置为0。
下表给出参数类型ANY的数据类型或存储区域的编码。
参数类型的ANY格式对于参数类型,STEP 7存储数据类型和参数的地址。
重复因子始终是1。
字节4、5和7始终是0。
字节8和9指示定时器、计数器或块的编号。
下表为参数类型显示参数类型ANY的数据类型编码。
使用参数类型ANY可以为适合于任何数据类型的实际参数的块定义形式参数。
当调用块是未知或可以改变时(和当允许任何数据类型时),已提供了实际参数的数据类型时,这尤其有用。
在块的变量声明中,可以声明参数为数据类型ANY。
然后可以在STEP 7中分配任何数据类型的实际参数。
STEP 7为ANY数据类型的变量分配存储器的80个位。
如果分配实际参数给此形式参数,STEP 7在80个位中编码起始地址、数据类型和实际参数的长度。
调用块为ANY 参数分析保存数据的80个位,并获取进一步处理所需的信息。
STEP7——ANY指针详解
精心整理参数类型ANY的格式STEP 7以10个字节存储参数类型ANY。
当构造类型为ANY的参数时,必须确保所有10个字节都被占用,因为调用块估计参数整个内容的值。
例如,如果以字节4指定DB编号,也必须以字节6明确地指定存储器区。
地址以格式Byte.Bit存储,此处字节寻址存储在字节7的位0 - 2,节字8的位0 - 7,节字9的位3 - 7。
位地址存储在字节9的位0 - 2。
对于类型NIL的空指针,所有来自字节1的字节设置为0。
下表给出参数类型ANY的数据类型或存储区域的编码。
对于参数类型,STEP 7存储数据类型和参数的地址。
重复因子始终是1。
字节4、5和7始终是0。
字节8和9指示定时器、计数器或块的编号。
下表为参数类型显示参数类型ANY的数据类型编码。
使用参数类型ANY∙基本数据类型:指定实际参数的绝对地址或符号名称。
∙复杂数据类型:指定复杂数据类型的数据符号名称(例如,数组和结构)。
∙定时器、计数器和块:指定编号(例如,T1、C20或FB6)。
∙下图说明数据如何传送到具有ANY数据类型参数的FC。
在此实例中,FC100具有三个参数(in_par1、in_par2和in_par3),声明为ANY 数据类型。
∙当FB10调用FC100时,FB10传送一个整数(静态变量speed)、一个字(MW100)和一个双字到DB10 (DB10.DBD40)。
∙当FB11调用FC100时,FB11传送一个实数数组(临时变量"Thermo")、一个布尔值(M1.3)和一个定时器(T2)。
为ANY参数指定数据区不仅可以分配各个地址(例如,MW100)给ANY参数,而且可以指定数据区。
如使用参数类型ANY的实例下列实例给出了如何使用参数类型ANY和系统功能SFC20 BLKMOV复制10个字节的存储区域。
分析一段Step 7的指针程序
LAR1 把地址8.0装载到AR1
L P#Q8.7 把指针值和地址标识符装载到累加器1
LAR2 把存储区域Q和地址8.7装载到AR2
A I[AR1,P#0.0] 查询输入位I8.0的信号状态
= [AR2,P#1.1]
给输出位Q10.0赋值
用途:
指针适合大批量数据处理,赋值等,比如:
有兴趣自己研究下:
LAR1 把存储区域I 和地址8.7装载到AR1
L P#Q8.7 把指针值和地址标识符装载到累加器1
LAR2 把存储区域Q和地址8.7装载到AR2
A [AR1,P#0.0] 查询输入位I8.7的信号状态
= [AR2,P#1.1]
给输出位Q10.0赋值
指针用法3: L 8 把指针值及存储区域标识装载到累加器1 SLD 3 转换为指针值
//数值比较 //置位标志位Comp_NOK
L #Count L1 +D T #Count
//指向DAT_DB_*.DBB [#PointerAdr*+1] 的值
L #Count_Byte <D JC beg
//与一个固定值比较,是否该DB快内数据都已经比较完毕。 //没有比较完,跳转回去继续。
为什么要SLW 3 呢 看看下图
本段程序的原理图如下,有兴趣自己编程试试:
基础知识:
指针用法1: L P#8.7 LAR1 A I[AR1,P#0.0] = Q[AR1,P#1.1]
把指针值装载到累加器1 把指针从累加器1装载到AR1 查询I8.7的信号状态 给输出位Q10.0赋值
指针用法2:
L P#I8.7 把指针值及存储区域标识装载到累加器1
分析一段Step 7的指针程序
ANY类型讲解
STEP 7以10个字节存储参数类型ANY。
当构造类型为ANY的参数时,必须确保所有10个字节都被占用,因为调用块估计参数整个内容的值。
例如,如果以字节4指定DB编号,也必须以字节6明确地指定存储器区。
STEP 7管理基本和复杂数据类型的数据及参数类型的数据不同。
数据类型的ANY格式对于基本和复杂数据类型,STEP 7存储下列数据:•数据类型•重复因子•DB编号•信息存储的存储区域•数据的起始地址重复因子识别由参数类型ANY传送的指示数据类型的数量。
这意味着可以指定数据区,也可以和参数类型ANY结合使用数组和结构。
STEP 7将数组和结构识别为数据类型的编号(借助重复因数)。
例如,如果要传送10个字,必须为重复因子输入数值10,并且必须为数据类型输入数值04。
地址以格式Byte.Bit存储,此处字节寻址存储在字节7的位0 - 2,节字8的位0 - 7,节字9的位3 - 7。
位地址存储在字节9的位0 - 2。
对于类型NIL的空指针,所有来自字节1的字节设置为0。
下表给出参数类型ANY的数据类型或存储区域的编码。
参数类型的ANY格式对于参数类型,STEP 7存储数据类型和参数的地址。
重复因子始终是1。
字节4、5和7始终是0。
字节8和9指示定时器、计数器或块的编号。
下表为参数类型显示参数类型ANY的数据类型编码。
使用参数类型ANY可以为适合于任何数据类型的实际参数的块定义形式参数。
当调用块是未知或可以改变时(和当允许任何数据类型时),已提供了实际参数的数据类型时,这尤其有用。
在块的变量声明中,可以声明参数为数据类型ANY。
然后可以在STEP 7中分配任何数据类型的实际参数。
STEP 7为ANY数据类型的变量分配存储器的80个位。
如果分配实际参数给此形式参数,STEP 7在80个位中编码起始地址、数据类型和实际参数的长度。
调用块为ANY参数分析保存数据的80个位,并获取进一步处理所需的信息。
分配实际参数给ANY参数如果为参数声明数据类型ANY,可以分配任何数据类型的实际参数给形式参数。
STEP ANY指针详解
参数类型ANY的格式STEP 7以10个字节存储参数类型ANY。
当构造类型为ANY的参数时,必须确保所有10个字节都被占用,因为调用块估计参数整个内容的值。
例如,如果以字节4指定DB 编号,也必须以字节6明确地指定存储器区。
STEP 7管理基本和复杂数据类型的数据与参数类型的数据不同。
数据类型的ANY格式对于基本和复杂数据类型,STEP 7存储下列数据:•数据类型•重复因子•DB编号•信息存储的存储区域•数据的起始地址重复因子识别由参数类型ANY传送的指示数据类型的数量。
这意味着可以指定数据区,也可以和参数类型ANY结合使用数组和结构。
STEP 7将数组和结构识别为数据类型的编号(借助重复因数)。
例如,如果要传送10个字,必须为重复因子输入数值10,并且必须为数据类型输入数值04。
地址以格式存储,此处字节寻址存储在字节7的位0 - 2,节字8的位0 - 7,节字9的位3 - 7。
位地址存储在字节9的位0 - 2。
对于类型NIL的空指针,所有来自字节1的字节设置为0。
下表给出参数类型ANY的数据类型或存储区域的编码。
参数类型的ANY格式对于参数类型,STEP 7存储数据类型和参数的地址。
重复因子始终是1。
字节4、5和7始终是0。
字节8和9指示定时器、计数器或块的编号。
下表为参数类型显示参数类型ANY的数据类型编码。
使用参数类型ANY可以为适合于任何数据类型的实际参数的块定义形式参数。
当调用块是未知或可以改变时(和当允许任何数据类型时),已提供了实际参数的数据类型时,这尤其有用。
在块的变量声明中,可以声明参数为数据类型ANY。
然后可以在STEP 7中分配任何数据类型的实际参数。
STEP 7为ANY数据类型的变量分配存储器的80个位。
如果分配实际参数给此形式参数,STEP 7在80个位中编码起始地址、数据类型和实际参数的长度。
调用块为ANY 参数分析保存数据的80个位,并获取进一步处理所需的信息。
分配实际参数给ANY参数如果为参数声明数据类型ANY,可以分配任何数据类型的实际参数给形式参数。
STEP ANY指针详解
参数类型ANY的格式STEP 7以10个字节存储参数类型ANY。
当构造类型为ANY的参数时,必须确保所有10个字节都被占用,因为调用块估计参数整个内容的值。
例如,如果以字节4指定DB 编号,也必须以字节6明确地指定存储器区。
STEP 7管理基本和复杂数据类型的数据与参数类型的数据不同。
数据类型的ANY格式对于基本和复杂数据类型,STEP 7存储下列数据:•数据类型•重复因子•DB编号•信息存储的存储区域•数据的起始地址重复因子识别由参数类型ANY传送的指示数据类型的数量。
这意味着可以指定数据区,也可以和参数类型ANY结合使用数组和结构。
STEP 7将数组和结构识别为数据类型的编号(借助重复因数)。
例如,如果要传送10个字,必须为重复因子输入数值10,并且必须为数据类型输入数值04。
地址以格式Byte.Bit存储,此处字节寻址存储在字节7的位0 - 2,节字8的位0 - 7,节字9的位3 - 7。
位地址存储在字节9的位0 - 2。
对于类型NIL的空指针,所有来自字节1的字节设置为0。
下表给出参数类型ANY的数据类型或存储区域的编码。
参数类型的ANY格式对于参数类型,STEP 7存储数据类型和参数的地址。
重复因子始终是1。
字节4、5和7始终是0。
字节8和9指示定时器、计数器或块的编号。
下表为参数类型显示参数类型ANY的数据类型编码。
使用参数类型ANY可以为适合于任何数据类型的实际参数的块定义形式参数。
当调用块是未知或可以改变时(和当允许任何数据类型时),已提供了实际参数的数据类型时,这尤其有用。
在块的变量声明中,可以声明参数为数据类型ANY。
然后可以在STEP 7中分配任何数据类型的实际参数。
STEP 7为ANY数据类型的变量分配存储器的80个位。
如果分配实际参数给此形式参数,STEP 7在80个位中编码起始地址、数据类型和实际参数的长度。
调用块为ANY 参数分析保存数据的80个位,并获取进一步处理所需的信息。
step7 数据类型
2021/7/1
16
3.2STEP7的程序结构和编程语言
STEP7的程序结构可分为以下三类: 1.线性程序结构 2.分块程序结构 3.结构化程序结构 编程语言 (三种基本编程语言) 1.梯形图LAD 2.语句表STL 3.功能图FBD
2021/7/1
17
3.3数据类型
数据是程序处理和控制的对象,在程序运行 过程中,CPU处理的一串二进制符号所代 表的意义是由数据类型决定的,数据类型 决定了数据的属性,例如数据长度,取值 范围等。
2021/7/1
12
1. FC和FB的变量声明表的差别
2021/7/1
13
2.FC和FB参数赋值不同
FC没有自己的背景数据块 FB有自己的背景数据块 FC的参数必须指定实参 FB的参数可根据需要决定是否指定实参
2021/7/1
14
3.1.3系统功能SFC和系统功能块SFB
SFC和SFB是预先编好的可供用户调用的 程序块,它们已经固化在S7PLC的CPU中, 其功能和参数已经确定。一台PLC具有哪 些SFC和SFB功能,是由CPU型号决定的。 具体信息可查阅CPU的相关技术手册。通 常SFC和SFB提供一些系统级的功能调用, 如通讯功能、高速处理功能等。注意:在 调用SFB时,需要用户指定其背景数据块 (CPU中不包含其背景数据块),并确定 将背景数据块下载到PLC中。
2021/7/1
24
3.4.2绝对地址寻址
位寻址 字节寻址 字寻址 双字寻址
2021/7/1
25
位寻址
位寻址是最小存储单元的寻址方式。寻址时, 采用以下结构:
存储区关键字+字节地址+位地址:
例如: Q 10.3
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
参数类型ANY的格式
STEP 7以10个字节存储参数类型ANY。
当构造类型为ANY的参数时,必须确保所有10个字节都被占用,因为调用块估计参数整个内容的值。
例如,如果以字节4指定DB编号,也必须以字节6明确地指定存储器区。
STEP 7管理基本和复杂数据类型的数据与参数类型的数据不同。
数据类型的ANY格式
对于基本和复杂数据类型,STEP 7存储下列数据:
∙数据类型
∙重复因子
∙DB编号
∙信息存储的存储区域
∙数据的起始地址
重复因子识别由参数类型ANY传送的指示数据类型的数量。
这意味着可以指定数据区,也可以和参数类型ANY结合使用数组和结构。
STEP 7将数组和结构识别为数据类型的编号(借助重复因数)。
例如,如果要传送10个字,必须为重复因子输入数值10,并且必须为数据类型输入数值04。
地址以格式Byte.Bit存储,此处字节寻址存储在字节7的位0 - 2,节字8的位0 - 7,节字9的位3 - 7。
位地址存储在字节9的位0 - 2。
对于类型NIL的空指针,所有来自字节1的字节设置为0。
下表给出参数类型ANY的数据类型或存储区域的编码。
参数类型的ANY格式
对于参数类型,STEP 7存储数据类型和参数的地址。
重复因子始终是1。
字节4、5和7始终是0。
字节8和9指示定时器、计数器或块的编号。
下表为参数类型显示参数类型ANY的数据类型编码。
使用参数类型ANY
可以为适合于任何数据类型的实际参数的块定义形式参数。
当调用块是未知或可以改变时(和当允许任何数据类型时),已提供了实际参数的数据类型时,这尤其有用。
在块的变量声明中,可以声明参数为数据类型ANY。
然后可以在STEP 7中分配任何数据类型的实际参数。
STEP 7为ANY数据类型的变量分配存储器的80个位。
如果分配实际参数给此形式参数,STEP 7在80个位中编码起始地址、数据类型和实际参数的长度。
调用块为ANY参数分析保存数据的80个位,并获取进一步处理所需的信息。
分配实际参数给ANY参数
如果为参数声明数据类型ANY,可以分配任何数据类型的实际参数给形式参数。
在STEP 7中,可以指定下列数据类型为实际参数:
∙基本数据类型:指定实际参数的绝对地址或符号名称。
∙复杂数据类型:指定复杂数据类型的数据符号名称(例如,数组和结构)。
∙定时器、计数器和块:指定编号(例如,T1、C20或FB6)。
∙下图说明数据如何传送到具有ANY数据类型参数的FC。
在此实例中,FC100具有三个参数(in_par1、in_par2和in_par3),声明为ANY 数据类型。
∙当FB10调用FC100时,FB10传送一个整数(静态变量speed)、一个字(MW100)和一个双字到DB10 (DB10.DBD40)。
∙当FB11调用FC100时,FB11传送一个实数数组(临时变量"Thermo")、一个布尔值(M
1.3)和一个定时器(T2)。
为ANY参数指定数据区
不仅可以分配各个地址(例如,MW100)给ANY参数,而且可以指定数据区。
如果希望指定数据区为实际参数,使用下列常数格式指定要传送的数据总量:
p# 区域标识符Byte.Bit 数据类型重复因数
对于数据类型元素,可以为常数指定所有基本数据类型和数据类型
DATE_AND_TIME的格式。
如果数据类型不是BOOL,必须指定位地址0 (x.0)。
下表为指定要传送的存储区域给ANY参数的格式的实例。
使用参数类型ANY的实例
下列实例给出了如何使用参数类型ANY和系统功能SFC20 BLKMOV复制10个字节的存储区域。