西门子STL间接寻址常问问题集_第1页
西门子STL间接寻址常问问题集_第2页
西门子STL间接寻址常问问题集_第3页
西门子STL间接寻址常问问题集_第4页
西门子STL间接寻址常问问题集_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

。西门子STL间接寻址常见问题集文学相关产品1.1如何获得关于指针或间接寻址的信息?指针的类型包括16位指针、32位指针、指针(6字节)和任意(10字节)。16位指针用于寻址定时器、计数器和程序块。32位指针用于寻址存储器中的位、字节、字和双字,如输入/输出/输出/数据块,其中位0-2表示位地址(0-7),位3-18表示字节地址,其余位未定义;指针和任意通常用于传输复杂的数据类型(如日期和时间/数组/字符串等)。)之间。任何都可以看作指针的扩展,因为由10字节组成的任何中的字节4 字节9是指针。理解指针的格式非常重要。要正确使用指针,您应该阅读以下内容:1.第27.3.4章参数类型2.文件:1008用于S7-300和S7-400的STL编程3.文件:F0215、S7-300和S7-400寻址1.2为什么函数中的语句LAR1P # # Pointrinput无效,然而,同一语句在函数块(FB)中有效?当调用函数时,复杂的数据类型(如指针)被复制到调用方的临时变量区域。编译器规则不接受将此V区直接寻址到FC内的地址寄存器AR1或AR2(导致MC7寄存器信息太长),也就是说,FC内通过P#的地址寄存器地址只能支持临时临时变量。因此,如果需要在光纤通道中操作复杂的输入和输出变量地址(如指针),则需要使用累加器进行传输。考虑到程序的一致性,符合STL手册中的编译器规则LAR1指令,建议用户使用以下指令:损益# #指针输入LAR11.3步骤7中的哪些操作将覆盖数据库/数据接口寄存器或地址寄存器AR1/AR2的内容?下面描述一些可能导致数据库/数据接口寄存器或地址寄存器AR1/AR2的内容改变的操作:数据库寄存器和AR1影响操作1.如果完整的数据库路径(例如,L DB20。当调用光纤通道/光纤通道时,数据库寄存器的内容被覆盖。例如,在OB1中调用FC1后,数据库寄存器变为20。OPNDB1呼叫FC1输入(位):DB20。DBX0.2因此,在编程期间,OPN指示打开数据块并通过DBX x.y访问其内容。然而,如果在数据块被打开之后数据库寄存器的内容被修改,则DBX x.y .访问变量将访问错误的地址。这可以通过使用符号寻址或全路径编程来避免,但是也可以重用OPN指令。2.调用光纤通道时使用字符串、数组、结构、UDT作为其形式参数,调用光纤通道时使用字符串、数组、结构或UDT作为其输出形式参数。如果在光纤通道/光纤通道程序中访问这些地址,AR1寄存器的内容将被覆盖,因此在使用AR1进行间接寻址时,应注意AR1内容的正确性。在FB中,AR2地址寄存器和DI寄存器用作参数和静态变量的基址地址。如果修改AR2和DI,将影响FB的参数访问。如果您想在FB中使用DI寄存器或地址寄存器AR2,您必须提前保存它们的内容,并在使用后恢复它们,例如:TAR2 # AR2 _ SAVE/AR2寄存器状态保存到#AR2_SAVEL DINOT # DB2 _ SAVE/DI注册状态保存到#DB2_SAVE用户程序LAR2 # AR2 _ SAVE/AR2寄存器返回使用前状态OPN DI# DB2 _ SAVE;/DI寄存器返回到使用前状态1.4如何获得背景数据库中多个背景FB中变量的绝对偏移量?您可以使用以下方法:获取后台数据库中多个后台FB的偏移地址内存区域标识屏蔽,参考32位指针格式变量(获取多背景下变量的地址)(将多背景FB的偏移地址和多背景FB中变量的地址相加,得到实际的绝对偏移)LAR1上述语句是为了获得变量在后台数据库中的绝对偏移量,以便后续程序进行处理。1.5如何在程序中使用任意指针?简要解释如下:输入/指向存储地址指针输入的第一个地址/此参数是任意类型。输入指向参数输入值的地址,它是指针的指针LAR1 /被载入地址寄存器AR1。Lw ar1,p # 4.0/打开数据库块/存储在任何类型的字节4和字节5中的数据块号从任何类型的结构中都是已知的。测试#块_否如果是数据库块,打开指定的数据库块。判断任意指针的数据长度/任何类型的字节2和字节3都是重复系数,如DB1后的字节8。DBX0.0字节8_001:T #DATA_LEN /通常在这里进行循环!查找要计算的数据区的起始地址/任何类型的字节6 字节9都是32位区域地址理解指针和任意类型的数据结构对正确使用指针有很大帮助。要正确使用指针,您应该仔细阅读以下内容:第27.3.4章参数类型下面的程序实现了SFC20的一些功能,可以作为任何。功能FC 1 :无效标题=版本: 0.1风险值_输入SRCBLK : ANY期末_风险值无功输出RETVAL : INTDSTBLK : ANY期末_风险值VAR_TEMP循环: INT。块号数据库:字;块号:字;SRC_ADD :图纸;夏令时_加:德国标准偏差;期末_风险值开始网络标题=L P # # SRCBLK/读取输入any的第一个地址LAR1/加载到ar1管道管线# #钻杆;/读取输出的第一个地址LAR2/加载到ar2左西AR1,第4.0页;/打开数据库块测试#块_否_数据库;左西AR2,第4.0页;/打开DI块测试#块_否_直接;OPN数据库#区块_无_数据库;/打开数据库块OPN直接投资#区块_否_直接;/打开DI块L D AR1,P # 6.0;T # SRC _ ADD/读取地址左旋AR2,第6.0页;测试#夏令时_加法;/读取地址左西AR1,第2.0页;/读取周期数_ 001:T # LOOP;l DBB# SRC _ ADD;测试点#夏令时_加;/分配/地址偏移1字节损益表# 1.0;L # SRC _ ADDd .T # SRC _ ADD损益表# 1.0;l #夏令时_加;d .测试#夏令时_加法;L #LOOP。/循环LOOP _001。结束功能1.6当功能块或功能块的输入参数类型为BLOCK_DB、定时器或计数器时,如何确定其数量?示例1: FB块FB1变量声明定义了“定时器”类型的变量“时间_1”。在FB2中调用FB1,将定时器“T5”传递给变量“Time_1”。图01所示的程序代码中的数值5表示“T5”。图01确定定时器数量当使用多个实例时,需要将以下代码添加到图01所示的程序中:TAR2 /多实例偏移地址LAR1P # #时间_1AR1 /向当前地址添加多个实例偏移量左下AR1,P#0.0T MW0示例2燃料电池“定时器”类型的变量“时间_1”在FC1的变量声明中定义。FC2调用FC1将计时器“T8”传递给变量“Time_1”。如图02所示,程序代码中的值8表示“T8”。图02确定光纤通道中的定时器数量当调用“块_数据库”类型参数时,不能将其直接传递给“功能块”。如果在调用函数时尝试使用此参数类型,将生成以下错误消息:“非法参数转移参数名”。“块_数据库”类型参数只能在调用(从块或功能块)时传输。当调用光纤通道时(从光纤通道或光纤通道),无法传输“块_数据库”类型参数。有关详细信息,请参考第7步在线帮助中的“合法传输参数类型”。然而,如果希望将BLOCK_DB参数类型传输到光纤通道,则可以通过基本数据类型(例如,字)来传输数据库块的数量。在以下示例中,FB100的输入参数类型为“块_数据库”。为了在调用时将参数传递给FC101,“块_数据库”中的数据库块号被传递给字临时变量(数据库_否)。当调用功能块时,块序列号将块_数据库参数类型替换为字参数类型。图03 FB确定块_数据库号如果光纤通道接口参数可以定义为传输数据库块号的字参数类型,则该参数可以在调用光纤通道时直接传输给光纤通道。图04中确定的数据库号1.7参数传递有哪些限制?将实际参数分配给形式参数时,可以指定绝对地址、符号名称或常数。步骤7限制不同参数的分配。例如,不能给输出和输入/输出参数分配常数值(因为输出或输入/输出参数的目的是改变它们的值)。这些限制尤其适用于具有复杂数据类型的参数,这些参数不能分配绝对地址或常数。下表显示了与分配给形式参数的实际参数数据类型相关的限制(-)和允许分配(用符号表示)。图05允许的参数转移详情请参考手册附录27.3.4.8部分:455311071.8如何将任何参数传递给其他程序块的参数?以下示例将说明如何为系统函数SFC 50“RD _ LGADR”(读取模块逻辑地址)参数化ANY指针。例如,对于功能块FB1,如下执行编程:1.将输入变量“test”和临时变量“test2”声明为ANY类型(图05)。2.例如,SFC50的参数“PEADDR”被传递给变量“test2”(图06)。3.通过判断任一指针“test”,临时变量“test2”的数据可以被传递。图06任何临时变量转移语句L P#test首先将地址加载到Accu1中,然后通过语句LAR1将地址加载到地址寄存器AR1中(可缩写为:LAR1 P#test)。每次读取地址寄存器AR1并且数据(例如,T LW0)被存储到临时变量“test2”(任何指针)中时。网络1中的语句将传输到

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论