您好,欢迎访问三七文档
A&DASCS2FASystemsSupportA&DCS2FA崔坚SIMATICTechnicalConsultingPage120078月寻址方式直接寻址存储区地址指针寄存器间接寻址POINTER数据类型指针ANY数据类型指针FB块形参的编程寻址方式A&DASCS2FASystemsSupportA&DCS2FA崔坚SIMATICTechnicalConsultingPage220078月寻址方式直接寻址存储区地址指针寄存器间接寻址POINTER数据类型指针ANY数据类型指针FB块形参的编程直接寻址AM1.1ANDB1.DBX12.0=Q1.2A&DASCS2FASystemsSupportA&DCS2FA崔坚SIMATICTechnicalConsultingPage320078月寻址方式直接寻址存储区地址指针寄存器间接寻址POINTER数据类型指针ANY数据类型指针FB块形参的编程存储区地址指针16位地址指针16位地址指针用于定时器、计数器、程序块(DB、FC、FB)的寻址,16位指针被看作一个无符号整数(0~65535),它表示定时器(T)、计数器(C)、数据块(DB、DI)或程序块(FB、FC)的号,16位指针的格式如下:A&DASCS2FASystemsSupportA&DCS2FA崔坚SIMATICTechnicalConsultingPage420078月寻址方式直接寻址存储区地址指针寄存器间接寻址POINTER数据类型指针ANY数据类型指针FB块形参的编程存储区地址指针16位地址指针地址寻址表示格式为:区域标识符[16位地址指针],例如打开一个DB块表示为:A&DASCS2FASystemsSupportA&DCS2FA崔坚SIMATICTechnicalConsultingPage520078月寻址方式直接寻址存储区地址指针寄存器间接寻址POINTER数据类型指针ANY数据类型指针FB块形参的编程存储区地址指针16位地址指针使用示例L12TLW20UCFC[LW20]//无条件调用FC12L13TMW20AI2.3CCFB[MW20]//如果I2.3为1,调用FB13。FC12和FB13不能带有形参,这是有CC和UC调用指令决定的。/////////////////////////////////////////////////////////////////////////////////////////////////////A&DASCS2FASystemsSupportA&DCS2FA崔坚SIMATICTechnicalConsultingPage620078月寻址方式直接寻址存储区地址指针寄存器间接寻址POINTER数据类型指针ANY数据类型指针FB块形参的编程存储区地址指针32位地址指针32位地址指针32位地址指针用于I、Q、M、L、数据块等存储器中位、字节、字及双字的寻址,32位的地址指针可以使用一个双字表示,第0位~第2位作为寻址操作的位地址,第3位~第18位作为寻址操作的字节地址,第19位~第31位没有定义,32位指针的格式如下:A&DASCS2FASystemsSupportA&DCS2FA崔坚SIMATICTechnicalConsultingPage720078月寻址方式直接寻址存储区地址指针寄存器间接寻址POINTER数据类型指针ANY数据类型指针FB块形参的编程存储区地址指针32位地址指针地址寻址表示格式为:地址存储器标识符[32位地址指针],例如指针存储于LD20中,装载M存储器一个字节表示32位地址指针也可以使用常数表示,例如装载32位指针常数LP#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.A&DASCS2FASystemsSupportA&DCS2FA崔坚SIMATICTechnicalConsultingPage820078月寻址方式直接寻址存储区地址指针寄存器间接寻址POINTER数据类型指针ANY数据类型指针FB块形参的编程存储区地址指针32位地址指针使用示例1OPNDB1//打开DB1。OPNDI3//打开DB3,最多可以同时打开两个DB块。L4//装载4到累加器1中。SLD3//累加器1中数值左移3位。TMD20//将逻辑操作结果传送到MD20中,MD20包含地址指针为P#4.0。LP#20.0//将地址指针P#20.0装载到MD24中。TMD24L320//320转换指针为P#40.0并装载到MD28中。TMD28LDBW[MD20]//装载DB1.DBW4。LDBW[MD24]//装载DB1.DBW20。+I//相加LDIW[MD28]//装载DB3.DBW40。-I//相减。TDIW2//将运算结果传送到DB3.DBW2中。JCm1A&DASCS2FASystemsSupportA&DCS2FA崔坚SIMATICTechnicalConsultingPage920078月寻址方式直接寻址存储区地址指针寄存器间接寻址POINTER数据类型指针ANY数据类型指针FB块形参的编程存储区地址指针32位地址指针使用示例2使用LOOP指令与32位地址指针可以进行循环操作,假设一个编程应用:一个字变量(MW2)与一个数组(假设存储于DB1中,包含100个元素为字的数组)存储的值相比较,如果数值相同,指出第一个相同数值存储在DB块中的位置(数组中的位置)。L0//初始化MW100和MD4。TMW100TMD4OPNDB1//打开DB1。L100//循环操作的次数,100次。next:TMW100//将循环100次装载到MW100中,固定格式。LMW2//进行比较的数值存储于MW2。LDBW[MD4]//与DB块中存储的值进行比较,开始地址为DBW0。==I//如果数值相等跳到m1。JCm1A&DASCS2FASystemsSupportA&DCS2FA崔坚SIMATICTechnicalConsultingPage1020078月寻址方式直接寻址存储区地址指针寄存器间接寻址POINTER数据类型指针ANY数据类型指针FB块形参的编程存储区地址指针32位地址指针使用示例2LMD4//将地址指针加2(每个相邻的字地址相差2)。LP#2.0+DTMD4LMW100//次数减1,跳回next,如果MW100等于0,跳出循环操作LOOP指令,LOOP指令固定格式。LOOPnextm1:FPM10.0//如果数值相当,记录MD4指针的数据,将转换为数组的位置((地址值/P#2.0)+1)值存储于MD8中。JCNm2LMD4LP#2.0/D+1TMD8m2:NOP0A&DASCS2FASystemsSupportA&DCS2FA崔坚SIMATICTechnicalConsultingPage1120078月寻址方式直接寻址存储区地址指针寄存器间接寻址POINTER数据类型指针ANY数据类型指针FB块形参的编程存储区地址指针32位地址指针注意事项OPNDB1L20TMD20//MD20装载的地址指针为P#2.4。L11TDBB[MD20]//指针指向P#2.4,相当于LDBB2.4,CPU无法识别,将停机。使用32位地址指针的注意事项:如果对相邻两个字节操作,指针转换为整数值最小必须为8(指针为P#1.0)的倍数,如果对相邻两个字操作,指针转换为整数值最小必须为16(指针为P#2.0)的倍数,,如果对相邻两个双字操作,指针转换为整数值最小必须为32(指针为P#4.0)的倍数,对字与双字指针的要求主要防治数据间的冲突,例如DBW[MD2],MD2为16的倍数时,按照DBW2、DBW4、DBW6寻址,如果为8的倍数,按照DBW1、DBW2、DBW3寻址,地址间数据冲突。A&DASCS2FASystemsSupportA&DCS2FA崔坚SIMATICTechnicalConsultingPage1220078月寻址方式直接寻址存储区地址指针寄存器间接寻址POINTER数据类型指针ANY数据类型指针FB块形参的编程寄存器间接寻址使用的指令寄存器间接寻址寄存器间接寻址使用CPU内部集成的两个32位寄存器AR1和AR2LAR1:将ACCU1存储的地址指针写入AR1。LAR1D:将指明的地址指针写入AR1,例如LAR1P#20.0或LAR1MD20LAR1AR2:将AR2的内容写入AR1。LAR2:将ACCU1存储的地址指针写入AR2。LAR2D:将指明的地址指针写入AR2,与LAR1D方式相同。TAR1:将AR1存储的地址指针传输给ACCU1。TAR1D:将AR1存储的地址指针传输给指明的变量中。TAR1AR2:将AR1存储的地址指针传输给ACCU2。TAR2:将AR2存储的地址指针传输给ACCU1。TAR2D:将AR1存储的地址指针传输给指明的变量中。CAR:交换AR1和AR2的内容。A&DASCS2FASystemsSupportA&DCS2FA崔坚SIMATICTechnicalConsultingPage1320078月寻址方式直接寻址存储区地址指针寄存器间接寻址POINTER数据类型指针ANY数据类型指针FB块形参的编程32位内部区域指针寄存器间接寻址32位内部区域指针地址寻址表示格式为:地址存储器标识符[地址寄存器,地址偏移常量],例如装载M存储器一个字节表示为:A&DASCS2FASystemsSupportA&DCS2FA崔坚SIMATICTechnicalConsultingPage1420078月寻址方式直接寻址存储区地址指针寄存器间接寻址POINTER数据类型指针ANY数据类型指针FB块形参的编程32位内部区域指针使用示例寄存器间接寻址OPNDB1//打开DB1。LAR1P#10.0//将指针P#10.0装载到地址寄存器1中。LDBW[AR1,P#12.0]//将DBW22装载到累加器1中。LAR1MD20//将存储于MD20中的指针装载到地址寄存器1中。LDBW[AR1,P#0.0]//将DBW装载到累加器1中,地址存储于MD20中。+ILAR2P#40.0//将指针P#40.0装载到地址寄存器2中。TDBW[AR2,P#0.0]//运算结果传送到DBW40中。A&DASCS2FASystemsSupportA&DCS2FA崔坚SIMATICTechnicalConsultingPage1520078月寻址方式直接寻址存储区地址指针寄存器间接寻址POINTER数据类型指针ANY数据类型指针FB块形参的编程32位交叉区域指针寄存器间接寻址000表示没有地址区,例如P#12.0;001表示输入地址区I,例如P#I12.0;010表示输出地址区Q,例如P#Q12.0;011表示标志位地址区M,例如P#M12.0;100表示数据块(DB)中的数据,例如P#DB1.DBX12.0101表示数据块(DI)中的数据,例如P#DI1.DIX12.0110表示区域地址区L,例如P#L12.0;111表示调用程序块的区域地址区V,例如P#V12.0;A&DASCS2FASystemsSupportA&DCS2FA崔坚SIMATICTechnicalConsultingPage1620078月寻址方式直接寻址存储区地址指针寄存器间接寻址POINTER数据类型指针ANY数据类型指针FB块形参的编程32位交叉区域指针使用示例寄存器间接寻址使用交叉区域指针表示方法(例如装载M存储器一个字节)为:LAR1P#M20.0//将指针P#M20.0装载到地址寄存器1中。A[AR1,P#1.1]//M21.1“与”操作。=Q1.2//如果M21.1为1,输出1.2为1。LP#I40.0//将指针P#I40.0装
本文标题:PLC指针编程
链接地址:https://www.777doc.com/doc-1813395 .html