西门子STL间接寻址常问问题集
2.1.4 间接寻址_PLC职业技能培训及视频精讲——西门子STEP 7_[共2页]
第2章 PLC
快速提高
189
图2.1.1 STEP 7管理界面
图2.1.2 全局符号表 图2.1.3 使用符号地址程序例 (2)局域符号
请参考本章功能和功能块相关内容。
2.1.4 间接寻址
1.存储器间接寻址
A I[MD10] //检测I 位的状态,I 的地址由MD10的值决定
= Q[MD10]
//驱动Q 位,Q 的地址由MD10的值决定 L QD[MD10] //装载QD 的数值到累加器1中,QD 的地址由MD10的值决定
上面程序中I[MD10]和Q[MD10],像这种使用存储器给定地址的寻址方式,称为存储器间接寻址。
I[MD10]和Q[MD10]中的MD10称为指针,其里面的数值代表地址,例如P#3.5。
能作为指针使用的存储器有MD 、LD 、DBD 和DID ,而且必须是双字。
存储器指针的格式如图2.1.4所示,其中0~2位是地址的位编号(0~7),3~18位是字节的编号(0~65535)。
例如在图2.1.5所示程序中,MD10 = 2#111011,0~2位的数值是3,3~18位的数值是7,所示MD10指针值是P#7.3。
使用存储器寻址,该存储器的值是操作数的地址,改变该储存器的值相当于改变了操作数的地址,在循环等程序中经常使用存储器间接寻址。
值得注意的是,如果操作数是字节、字或双字,使用存储器间接寻址时,需要确保指针代表位地址的值为零,否则会出现寻址错误。
西门子S系列PLC试题及答案
精选试题西门子S7-200PLC试题1一、填空题20分1.S7-200系列PLC的数据存储区分两大部分;是与..2.高速计数器HC的寻址格式是..3.S7-200型PLC的定时器包括ton 、tof 、tonr 三种类型.. 4.S7-200系列PLC的q0.0 与q0.1 两个输出端子;除正常使用外;还可利用PLC的高速输出功能产生PTO与PWM输出..5.定时器预设值PT采用的寻址方式为字寻址..6.在PLC运行的第一个扫描周期为ON的特殊存储器位是sm0.1 ..7.S7-200系列PLC共有 6 个高速计数器;其中只有1种工作模式的是hsc3和hsc5 ..8.定时器的两个变量是当前值和位值..9.PLC中输入接口电路的类型有直流和交流两种..10.I/O总点数是指输入信号和输出信号的数量..11.具有自己的CPU和系统的模块称为智能模块..12.EM231模拟量输入模块的输入类型为差分输入型..二、选择题40分1.下列那项属于双字寻址..A.QW1 B.V10 C.IB0 D.MD282.只能使用字寻址方式来存取信息的寄存器是..A.S B.I C.HC D.AI3.SM是哪个存储器的标识符..A.高速计数器B.累加器C.内部辅助寄存器D.特殊辅助寄存器4.CPU214型PLC本机I/O点数为 ..A.14/10 B.8/16 C.24/16 D.14/165.CPU214 型PLC有几个通讯端口..A.2个B.1个C.3个D.4个6.HSC1的控制寄存器是..A.SMW137 B.SMB57 C.SMB47 D.SMW1477.指令的脉宽值设定寄存器是..A.SMW80 B.SMW78 C.SMW68 D.SMW708.顺序控制段开始指令的操作码是..A.SCR B.SCRP C.SCRE D.SCRT9.S7-200系列PLC继电器输出时的每点电流值为..A.1A B.2A C.3A D.4A10.字传送指令的操作数IN和OUT可寻址的寄存器不包括下列那项 ..A.T B.M C.AQ D.AC11.PLC的系统程序不包括 ..A.管理程序B.供系统调用的标准程序模块C.用户指令解释程序D.开关量逻辑控制程序12.PID回路指令操作数TBL可寻址的寄存器为..A.I B.M C.V D.Q13.并行数据通信是指以为单位的数据传输方式A.位或双字B.位或字C.字或双字D.字节或字14.RS-232串行通信接口适合于数据传输速率在范围内的串行通信..A.0~20000bps B.0~2000bps C.0~30000bps D.0~3000bps15.当数据发送指令的使能端为时将执行该指令..A.为1 B.为0 C.由1变0 D.由0变116.对通讯协议进行设定的是..A.SMB30.7、6 B.SM30.4、3、2 C.SM30.0、1 D.SMB3.5、4 17.若波特率为1200;若每个字符有12位二进制数;则每秒钟传送的字符数为个.. A.120 B.100 C.1000 D.120018.EM231模拟量输入模块最多可连接个模拟量输入信号..A.4 B.5 C.6 D.319.若整数的加减法指令的执行结果发生溢出则影响位..A.SM1.0 B.SM1.1 C.SM1.2 D.SM1.320.字取反指令梯形图的操作码为..A.INV-B B.INV-W C.INV-D D.INV-X三、判断题20分1.PLC中的存储器是一些具有记忆功能的半导体电路..2.PLC可以向扩展模块提供24V直流电源..3.系统程序是由PLC生产厂家编写的;固化到RAM中..4.TONR的启动输入端IN由“1”变“0”时定时器复位..5.字整数比较指令比较两个字整数大小;若比较式为真;该触点断开..6.在执行查表指令的过程中;为了查找下一个符合条件的数据;在激活查表指令前;必须先对INDX减1..7.并行数据通信是指以字节或字为单位的数据传输方式..8.EM232模拟量输出模块是将模拟量输出寄存器AQW中的数字量转换为模拟量.. 9.RS-232串行通信接口使用的是负逻辑..10.PLC处于自由端口通讯模式时可以与可编程设备通讯..11.PLC的工作方式是等待扫描的工作方式..12.在数据通信的总线型结构中;当某一站点发生故障时;整个系统就会瘫痪..13.数据发送指令XMT的操作数PORT指定通讯端口;取值为0或1..14.两个PLC之间的自由口通信主要是通过设置控制字节SMB30来实现的..15.S7-200系列PLC的点对点通信网络使用PPI协议进行通讯..16.EM231模拟量输入模块的单极性数据格式为-32000~+32000..17.块传送指令的操作数N指定被传送数据块的长度;采用字寻址..18.CTUD计数器的当前值大于等于预置数PV时置位;停止计数..19.字节循环移位指令的最大移位位数为8位..20.PLC扫描周期主要取决于程序的长短..四、综合题1.已知某控制程序的语句表的形式;请将其转换为梯形图的形式..4分LD I0.0AN T37TON T37;1000LD T37LD Q0.0CTU C10;360LD C10O Q0.0= Q0.02.已知输入触点时序图;结合程序画出Q0.0的时序图..3分3.有电动机三台;希望能够同时启动同时停车..设Q0.0、Q0.1、Q0.2分别驱动电动机的接触器..I0.0为启动按钮;I0.1为停车按钮;试编写程序..5分4.组合机床的工作循环图及元件动作表如图示;试用置位复位指令编写程序..8分西门子S7-200PLC试题2一、填空题20分1.PLC的输出接口类型有、与..2.PLC的软件系统可分为和两大部分..3.S7-200型PLC的指令系统有、、三种形式.. 4.已知表格如图1所示..分析执行FIFO指令后;VW4中的数据是..5.高速计数器定义指令的操作码是..6.CPU214型PLC的晶体管输出组数为..7.正跳变指令的梯形图格式为 ..8.字节寻址的格式由、、组成..9.CPU214型PLC共有个计数器..10.EM231模拟量输入模块最多可连接_____ ___个模拟量输入信号..11.PLC的运算和控制中心是__ ___..12.S7-200系列PLC的串行通信口可以由用户程序来控制;这种由用户程序控制的通信方式称为____________..13. 数据发送指令XMT的操作数PORT指定通讯端口;取值为___________..二、选择题40分1.AC是哪个存储器的标识符..A 高速计数器B 累加器C 内部辅助寄存器D 特殊辅助寄存器2.在PLC运行时;总为ON的特殊存储器位是A SM1.0B SM0.1C SM0.0D SM1.13.CPU214型PLC数据存储器容量为4.定时器预设值PT采用的寻址方式为A.位寻址B.字寻址C.字节寻址D.双字寻址5.世界上第一台PLC生产于A.1968年德国B.1967年日本C.1969年美国D.1970年法国6.CPU214 型PLC有几个通讯端口..A 2个B 1个C 3个D 4个7.S7-200系列PLC有6个高速计数器;其中有12种工作模式的是..A HSC0、HSC1B HSC1、HSC2C HSC0、HSC4D HSC2、HSC48.下列那项属于字节寻址..A.VB10B.VW10C.ID0D. I0.29.字节传送指令的操作数IN和OUT可寻址的寄存器不包括下列那项A.VB.IC.QD.AI10.图示指令的脉宽值设定寄存器是 ..A SMW80B SMW78C SMW68D SMW7011. CPU 逐条执行程序;将执行结果放到..A输入映象寄存器B输出映象寄存器C 中间寄存器D辅助寄存器12. 用来累计比CPU扫描速率还要快的事件的是..A高速计数器 B 增计数器C 减计数器D 累加器13.图示程序中的累加器用的是那种寻址方式A.位寻址B.字节寻址C.字寻址D.双字寻址14. 顺序控制段转移指令的操作码是 ..A SCRB SCRPC SCRED SCRT15. 整数的加减法指令的操作数都采用寻址方式..A 字B双字 C 字节 D 位16. 高速计数器1的控制字节是..A SMB37B SMB47C SMB57D SMB13717. EM231模拟量输入模块的输入类型为..A.微分输入型B.晶体管输入型C.继电器输入型D.差分输入型18. PID回路指令操作数TBL可寻址的寄存器为..A.IB.MC.VD.Q19. PLC处于模式时;允许进行自由端口通讯..A.RUN模式B.PROGRAM模式C. 监控模式D.都可以20. 当数据接收指令RCV的使能端为时将执行该指令..A.为1B.为0C.由1变0D.由0变1三、判断20分1.PLC的输入电路均采用光电耦合隔离方式..2.CPU214型PLC本机I/O点数为14/10..3.CTD计数器的当前值等于0时置位;但会继续计数..4.S7-200系列PLC可进行间接寻址的存储器是I、Q、M、S、T及C. 5.字节移位指令的最大移位位数为8位..6. 在第一个扫描周期接通可用于初始化子程序的特殊存储器位是SM0.1..7. 梯形图程序指令助记符和操作数组成..8. 位寻址的格式由存储器标识符、字节地址及位号组成..9. 间接寻址是通过地址指针来存取存储器中的数据..10.执行逻辑弹出栈指令使堆栈深度减1..11. 正跳变指令每次检测到输入信号由0变1之后;使电路接通一个扫描周期..12.定时器定时时间长短取决于定时分辨率..13.CTD计数器的当前值等于0时置位;但会继续计数..14.I-D指令的功能是将把一个16位整数值数转换为一个32位的双字整数..15.EM231模拟量输入模块的数据格式有单极性和双极性两种..16.EM231模拟量输入模块的单极性数据格式为0~32000..17 RS-232串行通信的传输速率较高;可以远距离传输..18.数据通信的树型结构;可以直接在同级站点间进行数据传输;不必要通过上一级站点的转接来实现..19. PPI协议是一个主/从协议;支持一主机多从机连接和多主机多从机连接方式..20. 在触摸屏与PLC已联机的情况下;操作者就可以通过触摸屏对PLC进行各种操作..四、综合题1.已知给出某个控制程序的梯形图的形式;请将其转换为语句表的形式..4分2.已知输入触点时序图;结合程序画出Q0.0 和Q0.1的时序图..3分3.电机星-三角降压启动;Q0.0为电源接触器;Q0.1为星接输出线圈;Q0.2为角接输出线圈;I0.1为启动按钮;I0.0为停止按钮;星-角切换延时时间为5秒..试编写程序..6分4.采用一只按钮每隔3秒钟顺序启动三台电动机;试编写程序..7分西门子S7-200PLC试题3一、选择题20x2=40分1.PLC的工作方式是..A 等待工作方式B 中断工作方式C 扫描工作方式D 循环扫描工作方式2.在输出扫描阶段;将寄存器中的内容复制到输出接线端子上..A 输入映象B 输出映象C 变量存储器D 内部存储器3.JMP n 这条指令中;n的取值范围是..A 0-128B 1-64C 0-256D 0-2554.顺序控制段开始指令的操作码是..A SCRB SCRPC SCRED SCRT5 给出FOR指令的格式如右图所示..当EN条件允许时将FOR 与NEXT 指令之间的程序执行次..A 20B 1C VW10D 196 双字整数的加减法指令的操作数都采用寻址方式..A 字B双字 C 字节 D 位7 若整数的乘/除法指令的执行结果是零则影响位..A SM1.0B SM1.1C SM1.2D SM1.38 实数开方指令的梯形图操作码是..A EXPB LNC SQRTD TIN9 设VWl0中存有数据123.9;现执行以下指令;则指令的执行结果是 ..A 123.5B 124C 120 D12310 取整指令的梯形图指令的操作码是..A TRUNCB ROUNDC EXPD LN11 设累加器AC2中的低四位存有十进制数3;现执行以下指令;则指令的执行结果VW40的内容是A 0008HB 08HC 03HD 0003H12 已知表格如下..问当I0.0接通时执行填表指令;则指令的执行结果中VW202中的值是 ..A 0002B 0003C 0001D 000413高速计数器HSC0有种工作方式..A 8种B 1种C 12种D 9种14高速计数器2的控制字节是..A SMB37B SMB47C SMB57D SMB13715 定义高速计数器指令的操作码是..A HDEFB HSC C HSC0D MODE16 脉冲输出指令的操作码为..A PLUSB PLSC ATCHD DTCH17 中断分离指令的操作码是..A DISIB ENIC ATCHD DTCH18 以下不属于PLC的中断事件类型..A通讯口中断B I/O中断C时基中断D 编程中断19 EM231模拟量输入模块的输入类型为..A.微分输入型B.晶体管输入型C.继电器输入型D.差分输入型20 若波特率为1200;若每个字符有12位二进制数;则每秒钟传送的字符数为个..A 120B 100C 1000D 1200二、填空题每空1分;共20分1 S7-200系列PLC的指令系统有、、三种类型..2 PLC的软件系统可分为和两大部分..3 位寻址的格式由、、分隔符及四部分组成..4 定时器的三种类型分别是、和..5 字移位指令的最大移位位数为..6 顺序控制继电器指令包括、和三个指令..7 子程序可以嵌套;嵌套深度最多为层..8 通常把内部存储器又称为..9 PLC运行时总是ON的特殊存储器位是..10 用来累计比CPU扫描速率还要快的事件的是..11 通过通讯处理器;可以将S7-200系统连接到工业以太网IE中..三、判断题20X1=20分1栈装载或指令是将堆栈中的第一层和第二层的值进行逻辑或操作;结果存入栈顶..2正跳变指令每次检测到输入信号由0变1之后;使电路接通一个扫描周期..3TON的启动输入端IN由“1”变“0”时定时器并不复位而是保持原值..4块传送指令的操作数N指定被传送数据块的长度;采用双字寻址..5定时器类型不同但分辨率都相同..6 EM231热电阻模块是专门将热电阻信号转为数字信号的智能模块..7 RS-232串行通信接口使用的是正逻辑..8数据通信的树型结构;可以直接在同级站点间进行数据传输;不必要通过上一级站点的转接来实现..9暂停指令能够使PLC从RUN 到STOP;但不能立即终止主程序的执行..10使用顺序控制继电器指令时;不能在SCR段内使用FOR、NEXT或END指令.11整数的加减指令的功能是将两个8位的整数相加减;得到一个8位的整数结果..12TRUNC指令把32位实数转换成32位符号数;小数部分按照四舍五入原则处理..13 PTO为高速脉冲串输出;它可输出一定脉冲个数和一定周期的占空比为50%的方波脉冲..14 中断分离指令DTCH截断一个中断事件EVNT和所有中断程序的联系;但并不禁止该中断事件..15并行数据通信常用于远距离的数据传输场合..通常计算机内部各部件之间的数据交换都采用并行通讯..16系统管理程序的主要功能是管理程序的执行和存储空间分配管理..17 开关量逻辑控制程序是将PLC用于开关量逻辑控制软件;一般采用PLC生产厂家提供的如梯形图、语句表等编程语言编制..18 PLC是采用“并行”方式工作的..19存储器AI、AQ只能使用双字寻址方式来存取信息..20间接寻址是通过地址指针来存取存储器中的数据..四、编程题3题共20分1.某组合机床的工作循环图及元件动作表如下所示..现用顺序控制继电器指令编写控制程序..7分2.1049 采用一只按钮;每隔三秒钟顺序启动三台电动机;试编写程序..7分3.1020 将下面的梯形图程序转换成语句表指令形式..6分西门子S7-200PLC试题4一、选择题20x2=40分1 已知表格如下..问当I0.0接通时执行填表指令;则指令的执行结果中VW202中的值是..A 0004B 0002C 0001D 00032 HSC0的当前值设定寄存器是 ..A SMD38B SMD48C SMD58D SMD1383 在顺序控制继电器指令中的操作数n;它所能寻址的寄存器只能是 ..A SB MC SMD T4 无条件子程序返回指令是 ..A CALLB CRETC RETD SBR5 把一个BCD码转换为一个整数值的梯形图指令的操作码是..A B-IB I-BCDC BCD-ID I-R6 段译码指令的梯形图指令的操作码是 ..A DECOB ENCOC SEGD TRUNC7 设AC1中的低16位存有十六进制数16#8200;现执行以下指令;则指令的执行结果VB40中的内容是A 0009HB 09HC 08HD 04H8 填表指令的功能是向表中增加一个数值;表中第一个数是数..A 要填进表中的数B 最大填表数C 实际填表数D 表中已有的数值9 在查表指令中;若被查数据与参考数据之间的关系是不等于;则查表指令的语句表的操作码是..A FIFOB FILOC FIND=D FIND〈〉10 设VW10中的数据是6543H;VW20中的数据是0897H;则执行下列程序;VW20的内容是 ..A 4DD7HB 5489HC 0003HD 9ABCH11 中断程序标号指令的操作码是..A ENI BRET C INT D DSI12 下列不属于PLC硬件系统组成的是..A. 用户程序B.输入输出接口C. 中央处理单元D.通讯接口13 CPU214型PLC本机I/O点数为..A.14/10B.8/16C.24/16D.14/1614 CPU214型PLC共有个定时器..A.64B.255C. 128D. 25615可使用位寻址方式来存取信息的寄存器不包括..A. IB. QC. ACD. SM16 图示程序中的累加器用的是那种寻址方式A.位寻址B.字节寻址C.字寻址D.双字寻址17 EM231模拟量输入模块最多可连接个模拟量输入信号..A.4B.5C.6D.318 RS-232串行通信接口适合于数据传输速率在范围内的串行通信..A.0~20000bps B.0~2000bpsC.0~30000bpsD.0~3000bps19 对通讯所使用的数据位数进行设定的是..A.SMB30.54 D. SMB30.5、620 PLC的工作方式是..A 等待工作方式B 中断工作方式C 扫描工作方式D 循环扫描工作方式二、填空题每空1分;共20分1 在第一个扫描周期接通可用于初始化子程序的特殊存储器位是..2 定时器有三种类型;包括; 和..3 中断程序标号指令的语句表指令的格式INT;n;其中n指的是..4 I/O口中断事件包含中断、中断和中断三类..5 定时器中断由1ms延时定时器和产生..6 累加器寻址的统一格式为..7 子程序调用与子程序指令的操作数SBR_n中;n是;其取值范围是8 和两条指令间的所有指令构成一个循环体..9 把一个实数转换为一个双字整数值的ROUND指令;它的小数部分采用是原则处理..10 段译码指令的操作码是..它的源操作数的寻址方式是寻址;目的操作数的寻址方式是寻址..11 填表指令可以往表格里最多填充个数据..三、判断题20X1=20分1执行逻辑推入栈指令使堆栈深度减1..2提供一个周期是1秒钟;占空比是50%的特殊存储器位是SM0.4..3用来累计比CPU扫描速率还要快的事件的是高速计数器..4 7-200可以通过CP-243-1 IT通讯处理器的IT功能;非常容易的与其它计算机以及控制器系统交换文件;可以在全球范围内实现控制器和当今办公环境中所使用的普通计算机之间的连接..5在工程实践中;常把输出映象寄存器称为输出继电器..6 JMP指令的功能是使程序跳转到另一个程序的具体标号处..7 使用顺序控制继电器指令时;可以在SCR段内使用FOR、NEXT或END指令..8子程序可以嵌套;嵌套深度最多为8层..9位寻址的格式由存储器标识符、字节地址、分割符及位号组成..10定时器的寻址依赖所用指令;带位操作数的指令存取位值;带字操作数的指令存取当前值.. 11栈装载与指令是将堆栈中的第一层和第二层的值进行逻辑与操作;结果存入栈顶..12正跳变指令每次检测到输入信号由0变1之后;使电路接通一个扫描周期..13定时器定时时间长短取决于定时分辨率..14 TONR的启动输入端IN由“1”变“0”时定时器复位..15字节比较指令比较两个字节大小;若比较式为真;该触点断开..16双字循环移位指令的操作数N指移位位数;要通过字寻址方式来设置..17位移位寄存器指令每当EN端由0变1时;寄存器按要求移位一次..18有条件结束指令将根据前面的逻辑关系决定是否终止用户程序..19 EM231热电偶模块可以连接6种类型的热电偶..20 RS-232串行通信接口使用的是正逻辑..四、编程题3题共20分1 组合机床的工作循环图及元件动作表如图示;试用置位复位指令编写程序..7分2 简单的位置控制..控制要求:①用多齿凸轮与电动机联动;并用接近开关来检测多齿凸轮;产生的脉冲输入至PLC的计数器..②电动机转动至4900个脉冲时;使电动机减速;到5000个脉冲时;使电动机停止;同时剪切机动作将材料切断;并使脉冲计数复位..7分输入输出端子分配如下:3 通过调用子程序0来对HSC1进行编程;设置HSC1以方式11工作;其控制字SMB47设为16#F8;预设值SMD52为50..当计数值完成中断事件编号13时通过中断服务程序0写入新的当前值SMD5016#C8..6分西门子S7-200PLC试题1答案一.填空1.数据存储器数据目标2.HC+高速计数器号3.TON TOF TONR4.Q0.0 Q0.15.字寻址6.SM0.17.6 HSC3 和HSC58.当前值位值9.直流交流10.输入信号输出信号11.智能模块12.差分输入型二.选择1.D 2.D 3.D 4.A 5.A 6.C 7.D 8.A 9.C 10.D 11.D 12.C 13.D 14.A 15.A 16.C 17.B 18.A 19.B 20.B三.判断1.对2. 对3. 错4. 错5. 错6. 错7. 对8. 对9. 对10. 错11. 错12. 错13. 对14. 对15. 对16. 对17. 错18. 错19. 对20. 对四.综合题1.梯形图LAD2.34试题21.2.3.4.5.6.7.8.9.D 10.D 11.B 12.A 13.B 14.D 15.A1. 对2. 对3. 错4. 对5. 对6. 对7. 错8. 错9. 对10. 对11. 对12. 对13. 错14. 对15. 对16. 错17. 错18. 错19. 对20. 对四、综合题1. LD I0.2AN T31TON T31;1000LD T31LD Q0.1CTU C46;360LD C46O Q0.1 = Q0.1 2.3. LD I0.1O Q0.0 LPSAN I0.0 = Q0.0 LRDAN Q0.2 = Q0.1 LD Q0.1 TON T37;50 LD T37 O Q0.2 AN I0.0 = Q0.2 4.西门子S7-200PLC 试题3答案一、选择题20x 2=40分1 D2 B3 D 4A 5A 6 B 7A 8C 9B 10A 11A 12 B 13A 14C 15A16 B 17 D 18 D 19 D 20 B二、填空题每空1分;共20分1梯形图;语句表;功能块2用户程序;系统程序3存储器标识符;字节地址;位号4 TON;TOF;TONR5 166 SCR;SCRT;SCRE7 88中间存储器 9 SM0.0 10 高速计数器11 CP-243-1 IT三、判断题20X1=20分1对 2 对 3 错 4 错 5 错 6 对 7 错 8 错 9 错 10 对 11 错 12 错 13 对 14错 15Q0.0M0.0Q0.0I0.1 M0.0IN TONPT60T37 I0.0M0.0 M0.0I0.1T37 >=I 30Q0.1T37 Q0.2错 16 错 17 对 18 错 19 错 20 对四编程题3题共20分 123 LDN I0.0 LPS LD I0.1 O Q0.0 ALDAN I0.2 AN Q0.1 = Q0.0 LRDLD I0.2 O Q0.1M0.0IN TON PT60T37 I0.0M0.0 M0.0I0.1Q0.0 M0.0 Q0.0 I0.1T37 >=I 30 Q0.1 T37Q0.2 AAI0.0S0.0 S 1 S0.0 SCRSM0.0 Q0.0 I0.1S0.1 SCRT SCRE S0.1 SCR SM0.0 Q0.1 I0.2S0.2 SCRT SCREA S0.2 SCR SM0.0 Q0.2 I0.3S0.3 SCRTSCRE S0.3 SCR SM0.0Q0.0 R 3 SCREAALDAN I0.1AN Q0.0= Q0.1LPPLD I0.3O Q0.2ALD= Q0.2西门子S7-200PLC试题4答案一、选择题20x2=40分1 C2 A3 A 4C 5C 6 C 7B 8B 9D 10C 11C 12 A 13A 14C 15C 16C 17A 18A 19A 20D二填空题每空1分;共20分1 SM0.12 TON;TOF;TONR3中断服务程序的编号4上升/下降沿;高速计数器;高速脉冲串输出5 T32;T966 AC+累加器号7 子程序的标号;0-638 FOR;NEXT9四舍五入10 SEG ;字节;字节11 100三、判断题20X1=20分1错2 错3 对4 对5 对6 错7 错8 对9 对10 对11 对12 对13 对14错15 错16 错17 对18 对19 错20 错四、编程题3题共20分12I0.1R3Q0.0I0.3S1Q0.1R1Q0.2 I0.0S1Q0.0I0.2S1Q0.2R1Q0.0A3LD SM0.1 CALL 0 MEND SBR 0 LD SM0.0MOVB 16#F8;SMB47 HDEF 1;11MOVED 0;SMD48MOVED 50;SMD52 ATCH 0;13 HSC 1 RET INT 0LD SM0.0 MOVD 0;SMD48MOVB 16#C0;SMB47 HSC 1 RETILD I0.3 O Q0.2 ALD= Q0.2AI0.2 I0.0 Q0.0 EQ0.0 I0.1 Q0.1C20 < I 4900 CU CTU RPT5000C20I0.3C20 Q0.2 SM1.1Q0.1 M0.0 C20 Q0.0C20>= I 4900 I0.3C20 R 1A。
西门子STL间接寻址常问问题集
1.1如何获得指针或者间接寻址有关的信息?指针的类型包括16位指针、32位指针、Pointer(6Byte)和Any(10Byte)。
16位指针用于定时器、计数器、程序块的寻址;32位指针用于I/Q/M/L/数据块等存储器中位、字节、字以及双字的寻址,其中第0~2位表示位地址(0~7)、第3~18位为字节地址,其余位未定义;Pointer和Any一般应用在复杂数据类型(比如Date_and_Time /Array/String等)在FB、FC之间的传递。
而Any可以看做是对Pointer的延伸,因为由10Byte组成的Any中Byte4~Byte9就是一个Pointer。
了解指针的格式十分重要,为正确使用指针,应阅读如下内容:1、"SIMATIC Programming with STEP 7 V5.5" 05/2010 第27.3.4章参数类型2、文档:1008用于S7-300 和S7-400 的语句表(STL)编程3、文档:F0215,S7-300和S7-400寻址1.2为什么语句LAR1 P##PointerInput 在一个函数(FC)中是无效的,然而,同样的语句在一个功能块(FB)中是有效的?在FC被调用时,复杂数据类型例如指针是被复制到调用者的临时变量区中,在FC内部对此V区地址直接取址放入到地址寄存器AR1或AR2是不被编译器规则接受的(导致MC7寄存器信息过长),也就是说在FC内部通过P#进行地址寄存器取址仅能支持Temp临时变量。
因此如果需要在FC中操作指针等复杂输入输出变量地址需要使用累加器进行中转。
考虑到程序的一致性、遵守编译器规则和STL手册中LAR1指令说明,建议用户使用如下指令操作:L P##PointerInputLAR11.3 STEP 7 中哪些操作会覆盖DB/DI寄存器或者地址寄存器AR1/AR2的内容?下面说明了可能引起DB/DI寄存器或者地址寄存器AR1/AR2内容改变的一些操作:∙DB寄存器和AR1受到影响的操作1. 使用完整的DB路径(如L DB20.Val)或者调用FC/FB时使用DB块完整地址作为其参数,则DB寄存器内容被覆盖。
详解西门子间接寻址 (2)
详解西门子间接寻址【地址的概念】完整的一条指令,应该包含指令符+操作数(当然不包括那些单指令,比如NOT 等)。
其中的操作数是指令要执行的目标,也就是指令要进行操作的地址。
我们知道,在PLC中划有各种用途的存储区,比如物理输入输出区P、映像输入区I、映像输出区Q、位存储区M、定时器T、计数器C、数据区DB和L等,同时我们还知道,每个区域可以用位(BIT)、字节(BYTE)、字(WORD)、双字(DWORD)来衡量,或者说来指定确切的大小。
当然定时器T、计数器C不存在这种衡量体制,它们仅用位来衡量。
由此我们可以得到,要描述一个地址,至少应该包含两个要素:1、存储的区域2、这个区域中具体的位置比如:A其中的A是指令符,是A的操作数,也就是地址。
这个地址由两部分组成:Q:指的是映像输出区:就是这个映像输出区第二个字节的第0位。
由此,我们得出,一个确切的地址组成应该是:〖存储区符〗〖存储区尺寸符〗〖尺寸数值〗.〖位数值〗,例如:。
DB X 200 . 0其中,我们又把〖存储区符〗〖存储区尺寸符〗这两个部分合称为:地址标识符。
这样,一个确切的地址组成,又可以写成:地址标识符+ 确切的数值单元【间接寻址的概念】寻址,就是指定指令要进行操作的地址。
给定指令操作的地址方法,就是寻址方法。
在谈间接寻址之前,我们简单的了解一下直接寻址。
所谓直接寻址,简单的说,就是直接给出指令的确切操作数,象上面所说的,A ,就是直接寻址,对于A这个指令来说,就是它要进行操作的地址。
这样看来,间接寻址就是间接的给出指令的确切操作数。
对,就是这个概念。
比如:A Q[MD100] ,A T[DBW100]。
程序语句中用方刮号[ ] 标明的内容,间接的指明了指令要进行的地址,这两个语句中的MD100和DBW100称为指针Pointer,它指向它们其中包含的数值,才是指令真正要执行的地址区域的确切位置。
间接由此得名。
西门子的间接寻址方式计有两大类型:存储器间接寻址和寄存器间接寻址。
西门子S系列PLC试题及答案
西门子S7-200PLC试题⑴一、填空题(20分)I. _________________________________________________ S7-200系列PLC的数据存储区分两大部分,是_______________________________________ 与 ________ 。
2 •高速计数器HC的寻址格式是______ 。
3. S7-200型PLC的定时器包括_____________ ton 、tof、tonr 三种类型。
4. _____________________________ S7-200系列PLC的q0.0 与q0.1 两个输出端子,除正常使用外,还可利用PLC的高速输出功能产生PTO与PW输出。
5•定时器预设值PT采用的寻址方式为字寻址。
6•在PLC运行的第一个扫描周期为ON的特殊存储器位是sm0.1 ________ 。
7. _____________________________ S7-200系列PLC共有__6 个高速计数器,其中只有1种工作模式的是hsc3和hsc5 ______ 。
8. 定时器的两个变量是当前值和位值。
9. PLC中输入接口电路的类型有直流和交流两种。
10. I/O总点数是指输入信号和输出信号的数量。
II. 具有自己的CPUS系统的模块称为智能模块。
12. EM231模拟量输入模块的输入类型为差分输入型。
二、选择题(40分)1•下列那项属于双字寻址()。
A. QW1 B . V10 C . IB0 D . MD282•只能使用字寻址方式来存取信息的寄存器是()。
A. S B . I C . HC D . AI3. SM是哪个存储器的标识符。
()A.高速计数器B .累加器C .内部辅助寄存器D .特殊辅助寄存器4. CPU214型PLC本机I/O 点数为()。
A. 14/10 B . 8/16 C . 24/16 D . 14/165. CPU214型PLC有几个通讯端口()。
西门子300 编程多个问题解答
西门子300 编程多个问题解答西门子300 编程多个问题解答之七(131-150)131:S7-300/400 PLC支持哪些寻址方式?1)直接寻址1.直接地址:例如I0.0,Q1.7,PIW256,PQW512,MD20,T15,C16,DB1.DBB10,L10.0等2.符号寻址:例如qq,ww.aa等2)间接寻址1.存储器间接寻址:16位指针,例如OPN DB[MW2] 32位指针,例如A I[MD0]2.寄存器间接寻址:32位指针,例如A I[AR1,P#0.0],A [AR1,P#0.0]132:如何使用指针?指针用来指向一个地址。
使用这种寻址方式的优点在于可以在程序运行过程中实现变址。
指针用于存储器间接寻址程序中用于存储器间接寻址的语句包含一个指令、一个地址标识符、以及一个偏移量(偏移量必须在方括号内给出)。
下面给出一个双字格式的指针的例子:L P#8.7 把指针值装载到累加器1T I[MD2] 把指针值传送到MD2A I[MD2] 查询I8.7的信号状态= Q[MD2] 给输出位Q8.7赋值存储区域内部寻址及交叉寻址:程序中采用这些寻址方式的语句包含一个指令以及下列内容:地址标识符、地址寄存器标识符、偏移量。
地址寄存器(AR1、AR2)及偏移量必须写在方括号内。
存储区域内部寻址例程:指针不包含指示存储区域的信息:L P#8.7 把指针值装载到累加器1LAR1 把指针从累加器1装载到AR1A I[AR1,P#0.0] 查询I8.7的信号状态= Q[AR1,P#1.1] 给输出位Q10.0赋值偏移量0.0不起作用。
输出Q10.0 等于8.7 (AR1) 加偏移量1.1。
结果是10.0 ,而不是9.8。
存储区域交叉寻址例程:在存储区域交叉寻址中,指针中包含指示存储区域的信息(例子中为 I 和 Q)。
L P#I8.7 把指针值及存储区域标识装载到累加器1LAR1 把存储区域I 和地址8.7装载到AR1L P#Q8.7 把指针值和地址标识符装载到累加器1LAR2 把存储区域Q和地址8.7装载到AR2A [AR1,P#0.0] 查询输入位I8.7的信号状态= [AR2,P#1.1] 给输出位Q10.0赋值偏移量0.0不起作用。
详解西门子间接寻址(讲解+案例分析)
详解西门子间接寻址等级:弓剑手威望:0发贴:116经验:416财产:407魅力:411注册:2005-5-21【地址的概念】完整的一条指令,应该包含指令符+操作数(当然不包括那些单指令,比如NOT等)。
其中的操作数是指令要执行的目标,也就是指令要进行操作的地址。
我们知道,在PLC中划有各种用途的存储区,比如物理输入输出区P、映像输入区I、映像输出区Q、位存储区M、定时器T、计数器C、数据区DB和L等,同时我们还知道,每个区域可以用位(BIT)、字节(BYTE)、字(WORD)、双字(DWORD)来衡量,或者说来指定确切的大小。
当然定时器T、计数器C不存在这种衡量体制,它们仅用位来衡量。
由此我们可以得到,要描述一个地址,至少应该包含两个要素:1、存储的区域2、这个区域中具体的位置比如:A Q2.0其中的A是指令符,Q2.0是A的操作数,也就是地址。
这个地址由两部分组成:Q:指的是映像输出区2.0:就是这个映像输出区第二个字节的第0位。
由此,我们得出,一个确切的地址组成应该是:〖存储区符〗〖存储区尺寸符〗〖尺寸数值〗.〖位数值〗,例如:DBX200.0。
DB X 200 . 0其中,我们又把〖存储区符〗〖存储区尺寸符〗这两个部分合称为:地址标识符。
这样,一个确切的地址组成,又可以写成:地址标识符+ 确切的数值单元【间接寻址的概念】寻址,就是指定指令要进行操作的地址。
给定指令操作的地址方法,就是寻址方法。
在谈间接寻址之前,我们简单的了解一下直接寻址。
所谓直接寻址,简单的说,就是直接给出指令的确切操作数,象上面所说的,A Q2.0,就是直接寻址,对于A这个指令来说,Q2.0就是它要进行操作的地址。
这样看来,间接寻址就是间接的给出指令的确切操作数。
对,就是这个概念。
比如:A Q[MD100] ,A T[DBW100]。
程序语句中用方刮号[ ] 标明的内容,间接的指明了指令要进行的地址,这两个语句中的MD100和DBW100称为指针Pointer,它指向它们其中包含的数值,才是指令真正要执行的地址区域的确切位置。
西门子S系列LC试题及答案
精选试题西门子S7-200PLC试题⑴一、填空题(20分)1. _____________________________________________________ S7-200系列PLC的数据存储区分两大部分,是 ____________________________________ 与_________ 。
2. ____________________________________ 高速计数器HC的寻址格式是o3.S7-200型PLC的定时器包括ton _____________ 、tof 、tonr ___ 三种类型。
4.S7-200系列PLC的q0.0 ___________ 与q0.1 __________ 两个输出端子,除正常使用外,还可利用PLC的高速输出功能产生PTO与PWM输出。
5.定时器预设值PT采用的寻址方式为字寻址。
6.在PLC运行的第一个扫描周期为ON的特殊存储器位是sm0.1 _________ 。
7. ________________________________S7-200系列PLC共有__6 个高速计数器,其中只有1种工作模式的是hsc3 禾口hsc5 ______ 。
8定时器的两个变量是当前值和位值。
9.PLC中输入接口电路的类型有直流和交流两种。
10.I/O总点数是指输入信号和输出信号的数量。
11.具有自己的CPU和系统的模块称为智能模块。
12.EM231模拟量输入模块的输入类型为差分输入型。
二、选择题(40分)1.下列那项属于双字寻址()。
A. QW1 B . V10 C . IB0 D . MD282.只能使用字寻址方式来存取信息的寄存器是()oA. S B . I C . HC D . AIA.高速计数器 B .累加器 C .内部辅助寄存器 D .特殊辅助寄存器4.CPU214型PLC本机I/O点数为()。
A. 14/10 B . 8/16 C . 24/16 D . 14/165.CPU214型PLC有几个通讯端口()。
西门子S7-300PLC从入门到精通的100个经典问题及解答
西门子S7-300PLC从入门到精通的100个经典问题及解答西门子S7-300PLC从入门到精通的100个经典问题及解答1、使用CPU 315F和ET 200S时应如何避免出现“通讯故障”消息?使用CPU S7 315F,ET 200S以及故障安全DI/DO模块,那么您将调用OB35 的故障安全程序。
而且,您已经接受所有监控时间的默认设置值,并且愿意接收“通讯故障”消息。
OB 35 默认设置为100毫秒。
您已经将F I/O模块的F监控时间设定为100毫秒,因此至少每100毫秒要寻址一次I/O模块。
但是由于每100毫秒才调用一次OB 35,因此会发生通讯故障。
要确保OB35的扫描间隔和F监控时间有所差别,请确保F监控时间大于OB35的扫描间隔时间。
S7分布式安全系统,一直到V5.2 SP1 和6ES7138-4FA00-0AB0,6 ES7138-4FB00-0AB0,6ES7138-4CF00-0AB0 都会出现这个问题。
在新的模块中,F 监控时间设定为150毫秒.2、当DP从站不可用时,PROFIBUS上S7-300 CPU的监控时间是多少?使用CPU的PROFIBUS接口上的DP从站操作PROFIBUS网络时,希望在启动期间检查期望的组态与实际的组态是否匹配。
在CPU 属性对话框中的Startup选项卡上给出了两个不同的时间。
3、如何判断电源或缓冲区出错,如、电池故障?如果电源(仅S7-400)或缓冲区中的一个错误触发一个事件,则CPU操作系统访问OB81。
错误纠正后,重新访问OB81。
电池故障情况下,如果电池检测中的BATT.INDIC 开关是激活的,则S7-400仅访问OB81。
如果没有组态OB81,则CPU不会进入操作状态STOP。
如果OB81不可用,则当电源出错时,CPU仍保持运行。
4、为S7CPU上的I/O模块(集中式或者分布式的)分配地址时应当注意哪些问题?请注意,创建的数据区域(如一个双字)不能组态在过程映象的边界上,因为在该数据块中,只有边界下面的区域能够被读入过程映像,因此不可能从过程映像访问数据。
西门子PLC150个问题解答
西门子S7-300 150 个问题解答1:使用CPU 315F 和ET 200S 时应如何避免出现“通讯故障”消息?使用CPU S7 315F, ET 200S 以及故障安全DI/DO 模块,那么您将调用OB35 的故障安全程序。
而且,您已经接受所有监控时间的默认设置值,并且愿意接收“通讯故障”消息。
OB 35 默认设置为100 毫秒。
您已经将F I/O 模块的F 监控时间设定为100 毫秒,因此至少每100 毫秒要寻址一次I/O 模块。
但是由于每100 毫秒才调用一次OB35,因此会发生通讯故障。
要确保OB35 的扫描间隔和F 监控时间有所差别,请确保F 监控时间大于OB35 的扫描间隔时间。
S7 分布式安全系统,一直到V5.2 SP1 和6ES7138-4FA00-0AB0,6ES7138-4FB00-0AB0,6ES7138-4CF00-0AB0 都会出现这个问题。
在新的模块中,F 监控时间设定为150 毫秒.2:当DP 从站不可用时,PROFIBUS 上S7-300 CPU 的监控时间是多少?使用CPU 的PROFIBUS 接口上的DP 从站操作PROFIBUS 网络时,希望在启动期间检查期望的组态与实际的组态是否匹配。
在 CPU 属性对话框中的Startup 选项卡上给出了两个不同的时间。
3:如何判断电源或缓冲区出错,如:电池故障?如果电源(仅S7-400)或缓冲区中的一个错误触发一个事件,则CPU 操作系统访问OB81。
错误纠正后,重新访问OB81。
电池故障情况下,如果电池检测中的BATT.INDIC 开关是激活的,则 S7-400仅访问OB81。
如果没有组态OB81,则CPU 不会进入操作状态STOP。
如果OB81 不可用,则当电源出错时,C PU 仍保持运行。
4:为S7 CPU 上的I/O 模块(集中式或者分布式的)分配地址时应当注意哪些问题?请注意,创建的数据区域(如一个双字)不能组态在过程映象的边界上,因为在该数据块中,只有边界下面的区域能够被读入过程映像,因此不可能从过程映像访问数据。
SIEMENS STEP7 间接寻址ppt课件
Date: File:
2021/3/23 SSP2_03C.24
Information and Training Center Knowledge for Automation
SIMATIC S7
Siemens AG 2000. All rights reserved.
Date: File:
2021/3/23 SSP2_03C.25
Information and Training Center Knowledge for Automation
SIMATIC S7
Siemens AG 2000. All rights reserved.
Date: File:
2021/3/23 SSP2_03C.22
Information and Training Center Knowledge for Automation
SIMATIC S7
Siemens AG 2000. All rights reserved.
Date: File:
2021/3/23 SSP2_03C.1
Information and Training Center Knowledge for Automation
立即寻址的例子
SIMATIC S7
SIMATIC S7
Siemens AG 2000. All rights reserved.
Date: File:
2021/3/23 SSP2_03C.23
Information and Training Center Knowledge for Automation
SIMATIC S7
Siemens AG 2000. All rights reserved.
西门子S7-1200 PLC的间接寻址功能及实例
S7-1200指针数据- 已解决问题看了这个问题的网友还看了∙西门子模拟量电压问题西门子博图V14安装步骤∙S7-200/S7-1200/S7-300 EPLAN宏下载S7-1200 怎么实现与上位机进行Modbus_TCP/TP通讯∙打开S7-PLCSIM V13就提示几个文件签名无效,然后报错退出。
关于博图软件怎样安装∙1200PLC编程时,同样是16个位,怎样把数组转换为INT?西门子plc1200编程软件下载∙wincc与s7-1200怎么通讯1200PLC不能与PC机链接,找不到设备,输入输出,如附件IF #EXCUTE = True THENPOKE_BLK(area_src:= #AREA_SRC, (* 源数据类型:16#81:I,16#82:Q,16#83:M,16#84:DB *) dbNumber_src:= #DB_NUM_SRC, (* 源数据块:非DB=0 *)byteOffset_src:= #START_BIT_SRC, (* 源数据起始位号 DB[#DB_NUM_SRC].DBB[#START_BIT_SRC] *)area_dest:= #AREA_TYPE, (* 目标存储类型:16#81:I,16#82:Q,16#83:M,16#84:DB *)dbNumber_dest:= #DB_NUM, (* 目标数据块:非DB=0 *)byteOffset_dest:= #START_BIT, (* 目标起始位位号 DB[#DB_NUM].DBB[#START_BIT] *)count:= #BYTE_COUNT); (* 复制长度字节 *)END_IF;图片说明:回答者:sunnic - 高级技术员第7级2016-08-14 17:08:21提问者对于答案的评价:谢谢已有1人评论展开6wenhua6:你好,我按照你做的,怎么不行西门子S7-1200循环程序间接寻址的方法循环程序的关键是间接寻址,西门子S7-1200的间接寻址离不开数组。
plc初学者必看:PLC间接寻址与直接寻址编程方法
plc初学者必看:PLC间接寻址与直接寻址编程方法直接寻址直接的指出指令的确切操作地址。
例如A Q10.0,对于指令A来说,Q10.0就是其直接操作的地址。
因此,相对的,间接寻址即间接的指出指令的确切操作地址。
例如A Q[MD10],这里的地址不是直接给出的,而是通过MD10这个存储地址间接给出的。
间接寻址的类型间接寻址可分为两大类型:存储器间接寻址和寄存器间接寻址。
如图1所示。
图1 寻址方式存储器间接寻址存储器间接寻址的地址给定格式是:地址标识符+指针。
指针所指示存储单元中所包含的数值,就是地址的确切数值单元。
存储器间接寻址分为两种指针格式:16 位指针:16 位地址指针用于定时器、计数器、程序块(DB、FC、FB)的寻址,16 位指针被看作一个无符号整数(0-65535),它表示定时器(T)、计数器(C)、数据块(DB、DI)或程序块(FB、FC)的号,16 位指针的格式如下:图2 16位指针格式32 位指针:32 位地址指针用于I、Q、M、L、数据块等存储器中位、字节、字及双字的寻址,32 位的地址指针可以使用一个双字表示,第 0 位~ 第 2 位作为寻址操作的位地址,第 3 位~第18 位作为寻址操作的字节地址,第 19 位~第 31 位没有定义,32 位指针的格式如下:图3 32位指针格式寄存器间接寻址寄存器间接寻址为通过CPU的地址寄存器AR1,AR2进行寻址。
AR1,AR2 均为 32 位寄存器,寄存器间接寻址只使用 32 位指针。
分为内部区域间接寻址和交叉区域寻址。
内部区域寄存器间接寻址指针格式与存储器间接寻址的 32 位指针相同,第 0 位~ 第 2 位作为寻址操作的位地址,第 3 位~第 18 位作为寻址操作的字节地址,第 19 位 ~第 31 位没有定义,32 位指针的格式如下:图4 内部区域32位指针交叉区域寄存器间接寻址包含有存储器区域信息的指针,称为交叉区域指针。
同样,交叉区域指针为 32 位,寄存器间接寻址要使用地址寄存器AR1 或 AR2。
西门子PLC高级编程3_间接寻址及地址寄存器指令
A DBX 0.0
从0字节的第0位开始扫描
L DB19.DBW4 从DB 19中装载数据字4
L “Values”.Number_1 符号访问变量
Number_1. DB19 具有变量名“Values”
A DB10.DBX4.7 从DB 10 的第4个字节的第7位开始扫描
SIMATIC S7
Siemens AG 2001. All rights reserved.
地址标识符
Bit 31=0: 内部区域 Bit 31=1: 交叉区域
字节地址(无符号整数)
位地址
地址标识符:
000 I/O
010 输出(PIQ) 100 DB寄存器中的数据 110 自有本地数据
001 输入(PII) 011 位(Bit)存储器 101 DB寄存器2中的数据(DI) 111 调用块的LD(本地数据)
Date: File:
2018/7/13 PRO2_04E.2
SITRAIN Training for
Automation and Drives
地址
I Q PIB PQB M T C DBX DIX L
变量直接寻址
存储单元位置 (示例)
37.4 27.7 655 653 55.0 114 13 2001.6 406.1 88.5
循环删除
// 将终端地址(DBW18)作为指针 // 传送到MD 40; // 将循环计数器值设置为10 // 传到MB 50中; // 装载初始值 // 传到DB50中; // 装载指针 // 并减去2个字节 // 然后再传回 // 到MD 40; // 装载循环计数器 // 减去2个字节,条件满足则跳转;
L 11 T MW 60
SIEMENSSTEP7间接寻址
02 Siemens Step7 中的间接寻址
Step7 中的间接寻址方式
01
间接寻址是通过间接地址指针来访问存储单元的寻址方 式。在 Step7 中,间接寻址主要应用于数组、结构体等 复杂数据类型的访问。
02
间接寻址通过使用指针变量来间接指向目标数据,从而 实现数据的间接访问。
03
间接寻址的地址计算涉及指针变量的值计算,以确定目 标数据的实际地址。
Siemens Step7 间 接寻址
目录
• 间接寻址简介 • Siemens Step7 中的间接寻址 • 间接寻址的编程示例 • 间接寻址的优缺点 • 间接寻址的常见问题与解决方案 • 间接寻址的未来发展与展望
间接寻址简介
01
定义与特点
01
定义
间接寻址是一种在编程中通过间接变量访问实际变量的 方法。在Siemens Step7中,间接寻址允许我们通过间 接变量来访问数据块中的数据。
间接寻址的地址计算
01
地址计算是间接寻址中关键的一步,它涉及到指针 变量的值调整和偏移计算。
02
地址计算通常涉及加减运算,以根据指针变量当前 指向的地址,计算出目标数据的实际地址。
03
地址计算过程中需要考虑数据类型的大小和字节顺 序,以确保正确访问目标数据。
间接寻址的指令应用
01
间接寻址在 Step7 中广泛应用于指令操作,如数据块读写、结 构体访问等。
数据块访问权限问题
总结词
在Step7中,数据块访问权限问题也是一个常见问题,可能导致程序无法正常访问数据 块。
详细描述
当使用间接寻址时,如果访问的数据块没有正确的访问权限,程序将无法读取或写入数 据块。为了避免这个问题,程序员需要确保数据块具有正确的访问权限,并且在使用间
西门子S7-1200FieldRead 和 FieldWrite 间接寻址指令
FieldRead 和 FieldWrite 间接寻址指令从STEP7 Basic V10.5 + SP2以上可以使用 FieldRead 和 FieldWrite指令对数组单元进行间接寻址.指令的调用:STEP7 Basic V10.5 + SP2版本软件在指令树里无法直接找到 FieldRead 和 FieldWrite指令,调用这两个指令必须先从工具栏中调用一个空指令块,双击问号,从下拉菜单中选择添加指令,操作步骤如图1.图1. 调用 FieldRead 和FieldWrite 指令从TIA V11起 FieldRead 和 FieldWrite指令就可以在指令树里直接找到了。
创建DB块,并建立 Array 数据类型的变量图2. 创建DB块并定义数组FieldRead 指令INDEX:要读取的数组的单元号MEMBER: 数组单元首地址VALUE:存储读出的数据下例中是读取数组单元[1]中的数据11,并保存在参数VALUE: MB110 中。
图3. 读取数组单元中的数据FieldWrite 指令INDEX: 要写入的数组的单元号VALUE: 要写入的数据MEMBER:数组单元首地址下例中是向数组单元[2]中写入数值5。
图4. 向数组单元中写入数据常见问题为什么软件里无法找到FieldRead 和 FieldWrite 指令?答:只有 STEP7 Basic V10.5 + SP2 以上的版本才支持 FieldRead 和FieldWrite指令,并且指令树里也无法找到,只能通过调用空指令块,并在下拉菜单里选择使用这两个指令。
FieldRead 和FieldWrite指令是否可以对其它数据区或数据类型实现间接寻址?答:FieldRead 和FieldWrite指令只能对DB块中的数组单元进行间接寻址访问,DB 块中的其它数据类型以及其它数据区如M, I,Q 区数据都不支持这个功能。
为什么FieldRead 和 FieldWrite指令的参数显示红色不正确?答:必须保证参数"MEMBER" 和 "VALUE" 的数据类型一致,如果一个是字节,一个是实数,就会显示红色不正确的提示,如图5.图5. 参数的正确设置。
西门子常识问题
13位当有微小变化时,从0变为8。14位当有微小变化时,从0变为4。
16位当有微小变化时,从0变为1。12位当有微小变化时,从0变为16。
ET200S与ET200B互换
需要重新组态,但IO编址你可以修改成和ET200B一样的地址,这样程序就可以不用修改。至于ET200S的接线,只要参考相应的手册就OK了。
1、存储的区域
而这几个变量在实际中都是来自与模拟输入,或者输出控制模拟量的
因此,需要将模拟输出转换为0.0"1.0的数据,或将0.0"1.0的数据转换为模拟输出,这个过程称为规格化
规格化的方法:(即变量相对所占整个值域范围内的百分比对应与27648数字量范围内的量)
对于输入和反馈,执行:变量*100/27648,然后将结果传送到PV-IN和SP-INT
B:部分输出参数说明:
LMN:REAL:PID输出;LMN_P:REAL:PID输出中P的分量;(可用于在调试过程中观察效果)
LMN_I:REAL:PID输出中I的分量;(可用于在调试过程中观察效果)LMN_D:REAL:PID输出中D的分量;(可用于在调试过程中观察效果)
C:规格化概念及方法:
PID参数中重要的几个变量,给定值,反馈值和输出值都是用0.0"1.0之间的实数表示,
主题:详解西门子间接寻址完整的一条指令,应该包含指令符+操作数(当然不包括那些单指令,比如NOT等)。其中的操作数是指令要执行的目标,也就是指令要进行操作的地址。
我们知道,在PLC中划有各种用途的存储区,比如物理输入输出区P、映像输入区I、映像输出区Q、位存储区M、定时器T、计数器C、数据区DB和L等,同时我们还知道,每个区域可以用位(BIT)、字节(BYTE)、字(WORD)、双字(DWORD)来衡量,或者说来指定确切的大小。当然定时器T、计数器C不存在这种衡量体制,它们仅用位来衡量。由此我们可以得到,要描述一个地址,至少应该包含两个要素:
(完整版)S7-200间接寻址解析
(完整版)S7-200间接寻址解析对指令的操作数的指定方式,我将其理解为“寻址”。
下面将以我个人的理解对西门子S7-200的寻址方式进行描述,如有不当之处,还请广大读者指正。
在程序中绝大部分的指令都带有操作数,所谓的操作数,是执行这一指令时被这一指令加以操作、处理的数值。
对指令的操作数的指令方式大致的总结一下,可以概括为如下几个类型:1:指令的操作数为“立即数”,(如:15、16#F、2#1111等、、、、、、)。
LD M0.0MOVW +255, VW0+I +45, VW0这是一条加法指令,被加数为:255、加数为45执行这条指令后计算出来的“和”存放在VW0这一存储器内。
LD M0.0MOVB 15, VB0这是一条传指令,译为:将15传送至存储器VB0内。
2:指令的操作数没有直接的给出,而是给出它所在的地址。
LD M0.0MOVW VW0, VW4-I VW2, VW4这是一条减法指令,译为:将存储器VW0内的数值减去存储器VW2内的数值,将“差”存放在存储器VW4内。
3:指令的操作数没有直接的给出,而是给出它所在的地址的“地址”,在S7-200中,将这种寻址方式称之为“指针寻址”。
下面,我们一起来学习一下关于指针的使用方法:在使用指针进行间接寻址的过程中,会涉及到的两个符号:&:建立指针(进行间接访问的区域)*:读取指针(读取指针间接指定的地址)下面是使用指针的一般步骤:1:建立指针建立指针需要使用双字传送指令,如下所示:LD M0.0MOVD &MB0, VD10译为:在VD10建立指针,指针指向被间接访问的首地址MB0。
在建立指针时需要注意如下几个问题:①可以进行间接访问的区域,包括如下几个区域:I、Q、M、S、V、T(当前值)、C(当前值)。
在S7-200中位状态是不能进行间接指定的,所以这里特别强调只是访问定时器及计数器的当前值,而不是其位状态。
②可以作为建立指针的区域,包括如下几个区域:V、L、及累加器AC1至AC3。
西门子PLC 从入门到精通的100个经典问题及解答答
2:当DP从站不可用时,PROFIBUS上S7-300 CPU的监控时间是多少?
5:在S7 CPU中如何进行全局数据的基本通讯?在通讯时需要注意什么?
全局数据通讯用于交换小容量数据,全局数据(GD)可以是:
输入和输出
标记
数据块中的数据
定时器和计数器功能
数据交换是指在连入单向或双向GD环的CPU之间以数据包的形式交换数据。GD环由GD环编号来标识。
为了通过一个S7连接在使用CPU 317-2PN/DP的两个S7-300工作站之间进行数据交换,其中该S7连接是使用NetPro组态的, 在S7通信中,必须调用通讯功能块。模块FB14("GET") 用于从远程CPU取出数据,模块FB15("PUT")用于将数据写入远程CPU。 功能块包含在STEP 7 V5.3的标准库中。 <
19:诊断缓冲器中的条目包括哪些?
1) 故障事件
2) 操作模式转变以及其它对用户重要的操作事件
3) 用户定义的诊断事件(用SFC52 WR_USMSG)
在操作模式STOP下,在诊断缓冲器中尽量少的存储事件,以便用户能够很容易在缓冲器中找到引起STOP的原因。因此,只有当事件要求用户产生一个响应(如计划系统内存复位,电池需要充电)或必须注册重要信息(如固件更新,站故障)时,才将条目存储在诊断缓冲器中。
20:如何确定MMC的大小以便完整地存储STEP 7项目?
为了给项目选择合适的MMC,需要了解整个项目的大小以及要加载块的大小。可以按照如下所述的方法来确定项目的大小:
西门子间接寻址的详细介绍
西门子间接寻址的详细介绍在先前所说的存储器间接寻址中,间接指针用M、DB、DI和L直接指定,就是说,指针指向的存储区内容就是指令要执行的确切地址数值单元。
但在寄存器间接寻址中,指令要执行的确切地址数值单元,并非寄存器指向的存储区内容,也就是说,寄存器本身也是间接的指向真正的地址数值单元。
从寄存器到得出真正的地址数值单元,西门子提供了两种途径:1、区域内寄存器间接寻址2、区域间寄存器间接寻址地址寄存器间接寻址的一般格式是:〖地址标识符〗〖寄存器,P#byte.bit〗,比如:DIX[AR1,P#1.5] 或M[AR1,P#0.0] 。
〖寄存器,P#byte.bit〗统称为:寄存器寻址指针,而〖地址标识符〗在上帖中谈过,它包含〖存储区符〗+〖存储区尺寸符〗。
但在这里,情况有所变化。
比较一下刚才的例子:DIX [AR1,P#1.5]X [AR1,P#1.5]DIX可以认为是我们通常定义的地址标识符,DI是背景数据块存储区域,X是这个存储区域的尺寸符,指的是背景数据块中的位。
但下面一个示例中的M呢?X只是指定了存储区域的尺寸符,那么存储区域符在哪里呢?毫无疑问,在AR1中!DIX [AR1,P#1.5] 这个例子,要寻址的地址区域事先已经确定,AR1可以改变的只是这个区域内的确切地址数值单元,所以我们称之为:区域内寄存器间接寻址方式,相应的,这里的[AR1,P#1.5] 就叫做区域内寻址指针。
X [AR1,P#1.5] 这个例子,要寻址的地址区域和确切的地址数值单元,都未事先确定,只是确定了存储大小,这就是意味着我们可以在不同的区域间的不同地址数值单元以给定的区域大小进行寻址,所以称之为:区域间寄存器间接寻址方式,相应的,这里的[AR1,P#1.5] 就叫做区域间寻址指针。
既然有着区域内和区域间寻址之分,那么,同样的AR1中,就存有不同的内容,它们代表着不同的含义。
【AR的格式】地址寄存器是专门用于寻址的一个特殊指针区域,西门子的地址寄存器共有两个:AR1和AR2,每个32位。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.1如何获得指针或者间接寻址有关的信息?指针的类型包括16位指针、32位指针、Pointer(6Byte)和Any(10Byte)。
16位指针用于定时器、计数器、程序块的寻址;32位指针用于I/Q/M/L/数据块等存储器中位、字节、字以及双字的寻址,其中第0~2位表示位地址(0~7)、第3~18位为字节地址,其余位未定义;Pointer和Any一般应用在复杂数据类型(比如Date_and_Time /Array/String等)在FB、FC之间的传递。
而Any可以看做是对Pointer的延伸,因为由10Byte组成的Any中Byte4~Byte9就是一个Pointer。
了解指针的格式十分重要,为正确使用指针,应阅读如下内容:1、"SIMATIC Programming with STEP 7 V5.5" 05/2010 第27.3.4章参数类型2、文档:1008用于S7-300 和S7-400 的语句表(STL)编程3、文档:F0215,S7-300和S7-400寻址1.2为什么语句LAR1 P##PointerInput 在一个函数(FC)中是无效的,然而,同样的语句在一个功能块(FB)中是有效的?在FC被调用时,复杂数据类型例如指针是被复制到调用者的临时变量区中,在FC内部对此V区地址直接取址放入到地址寄存器AR1或AR2是不被编译器规则接受的(导致MC7寄存器信息过长),也就是说在FC内部通过P#进行地址寄存器取址仅能支持Temp临时变量。
因此如果需要在FC中操作指针等复杂输入输出变量地址需要使用累加器进行中转。
考虑到程序的一致性、遵守编译器规则和STL手册中LAR1指令说明,建议用户使用如下指令操作:L P##PointerInputLAR11.3 STEP 7 中哪些操作会覆盖DB/DI寄存器或者地址寄存器AR1/AR2的内容?下面说明了可能引起DB/DI寄存器或者地址寄存器AR1/AR2内容改变的一些操作:∙DB寄存器和AR1受到影响的操作1. 使用完整的DB路径(如L DB20.Val)或者调用FC/FB时使用DB块完整地址作为其参数,则DB寄存器内容被覆盖。
例如在OB1中调用FC1后,DB寄存器变成20。
OPN DB1Call FC1Input(bit):DB20.DBX0.2因此在编程的时候,OPN 指令打开数据块,通过DBX x.y的方式访问其中内容,但是如果在打开数据块后DB寄存器的内容被修改了,则DBX x.y的方式访问变量则会访问到错误的地址。
可以通过使用符号寻址的方式或者使用完整路径编程避免,当然重新使用OPN指令也是可以的。
2. 调用FC时使用string, array, structure ,UDT作为其形参或者调用FB时使用string, array, structure 或者UDT作为其in out形参,在FC/FB程序中访问这些地址则AR1寄存器内容被覆盖,因此当使用AR1进行间接寻址时需要注意AR1内容的正确性。
AR2地址寄存器和DI寄存器在FB中作为参数和静态变量的基址寻址使用。
AR2和DI如果被修改,会影响FB的参数访问,如果希望在FB中使用DI 寄存器或者地址寄存器AR2,必须预先保存它们中的内容,并在使用后恢复它们,例如:TAR2 #AR2_SAVE; //AR2寄存器状态保存到#AR2_SAVEL DINO;T #DB2_SAVE; //DI寄存器状态保存到#DB2_SAVEUser ProgramLAR2 #AR2_SAVE; //AR2寄存器恢复到使用前状态OPN DI [#DB2_SAVE]; //DI寄存器恢复到使用前状态1.4 如何得到多重背景FB中的变量在背景DB里的绝对偏移量呢?可以用下面的方法处理:TAR2 (得到多重背景FB在背景DB里的偏移地址)AD DW#16#00FFFFFF (屏蔽掉存储区ID,可参考32位指针格式)L P##Variable (得到变量在多重背景FB里的地址)+D (多重背景FB的偏移地址与变量在多重背景FB里地址相加,即得到实际绝对偏移量)LAR1上述语句就是就得到了变量在背景DB中的绝对偏移量,从而供后续程序处理。
1.5如何在程序中使用ANY 型指针?简要说明如下:L P##Input //指向存储地址指针Input首地址//这个参数是一个Any类型,P##Input指向参数Input的值所在地址,这就是指针的指针LAR1 //装载到地址寄存器AR1中。
L W [AR1,P#4.0] //打开DB块// 由Any类型结构知道Any类型的Byte4、Byte5存放的数据块号T #BLOCK_NOOPN DB [#BLOCK_NO] //如果是DB块,打开指定的DB块。
L W [AR1,P#2.0] //判断ANY指针中数据长度// Any类型的Byte2、Byte3是重复系数,如P#DB1.DBX0.0 Byte 8后面的Byte 8 _001:T #DATA_LEN //通常此处做loop循环!!L D [AR1,P#6.0] //找出需要计算数据区的开始地址// Any类型Byte6~Byte9是32位区域地址理解Pointer、Any的类型的数据结构,对于正确使用指针有很大帮助。
为正确使用指针,应仔细阅读如下内容:"SIMATIC Programming with STEP 7 V5.5" 05/2010 第27.3.4章参数类型如下的程序实现了SFC20的部分功能,可以作为Any使用的参考。
FUNCTION FC 1 : VOIDTITLE =VERSION : 0.1VAR_INPUTSRCBLK : ANY ;END_VARVAR_OUTPUTRETVAL : INT ;DSTBLK : ANY ;END_VARVAR_TEMPLOOP : INT ;BLOCK_NO_DB : WORD ;BLOCK_NO_DI : WORD ;SRC_ADD : DWORD ;DST_ADD : DWORD ;END_VARBEGINNETWORKTITLE =L P##SRCBLK; //读取输入any的首地址LAR1 ; //装载到ar1L P##DSTBLK; //读取输出any的首地址LAR2 ; //装载到ar2L W [AR1,P#4.0]; //打开DB块T #BLOCK_NO_DB;L W [AR2,P#4.0]; //打开DI块T #BLOCK_NO_DI;OPN DB [#BLOCK_NO_DB]; //打开DB块OPN DI [#BLOCK_NO_DI]; //打开DI块L D [AR1,P#6.0];T #SRC_ADD; //读取地址L D [AR2,P#6.0];T #DST_ADD; //读取地址L W [AR1,P#2.0]; //读取循环次数_001: T #LOOP;L DBB [#SRC_ADD];T DIB [#DST_ADD]; //赋值//地址偏移1个字节L P#1.0;L #SRC_ADD;+D ;T #SRC_ADD;L P#1.0;L #DST_ADD;+D ;T #DST_ADD;L #LOOP; //循环LOOP _001;END_FUNCTION1.6 当FC 或FB的输入参数类型为:BLOCK_DB, TIMER或者COUNTER,如何确定其编号?例1 :FB 块FB1 变量声明中定义了“ Timer” 类型的变量“ Time_1” ,在FB2 中调用FB1,将定时器“T5”传递给变量“Time_1”。
如图01 所示程序代码中数值 5 表示“T5”。
图01 FB中确定定时器编号在使用多重实例时,需要在图01 所示程序中增加以下代码:TAR2 //多重实例偏移地址LAR1 P##Time_1+AR1 //多重实例偏移地址与当前地址相加L W[AR1,P#0.0]T MW0例2 FCFC1 变量声明中定义了“ Timer” 类型的变量“ Time_1” ,在FC2 中调用FC1,将定时器“T8”传递给变量“ Time_1”。
如图02 所示程序代码中数值8 表示“T8”。
图02 FC中确定定时器编号“BLOCK_DB”类型参数在调用FC 时不可以直接传送给FC 。
如果在调用功能时试图使用此参数类型,将产生如下的错误消息:“非法的参数传输<参数名>” 。
“BLOCK_DB”类型参数仅在FB 被调用(从一个FB 或FC 中)时可被传送。
“BLOCK_DB”类型参数不可以在FC 被调用(从一个FB 或FC 中)时可被传送。
相关详细信息可参考STEP7 在线帮助中“合法的传输参数类型”。
然而,如果希望将BLOCK_DB 参数类型传送给FC,DB 块的编号可以通过基本数据类型(例如WORD)传送。
在下面的例子中,FB100 拥有一个“BLOCK_DB” 的输入参数类型。
为了在调用FC101 时将参数传送给它,“BLOCK_DB”中的DB 块编号被传送给WORD 临时变量(DB_No)。
当FC 被调用,数据块序号以一个WORD 参数类型替代BLOCK_DB 参数类型。
图03 FB中确定Block_DB编号如果FB 的接口参数能被定义成WORD 参数类型来传送DB 块编号,当FC 被调用时,此参数可以被直接传送给FC。
图04 FC中确定DB编号1.7 参数传递有何限制?当分配实际参数给形式参数时,可以指定绝对地址、符号名称或常数。
STEP 7 限制不同参数的分配。
例如,输出和输入/输出参数不能被分配常数值(因为输出或输入/输出参数的目的是改变其值)。
这些限定尤其适用于具有复杂数据类型的参数,这些参数既不能分配绝对地址也不能分配常数。
下表关明涉及分配给形式参数的实际参数数据类型的限制(--)和允许的分配(由符号显示)。
图05 允许的参数传递详细信息请参考手册中附录27.3.4.8节内容:455311071.8 如何传递any参数到其他程序块的参数中?下面的例子将说明如何为系统功能SFC50 “RD_LGADR” (读取模块逻辑地址)参数化ANY 指针。
例如对于功能块FB1,按下述步骤编程:1. 声明一个输入变量“test”和一个临时变量“test2”为ANY 类型(图05)。
2. 例如,把SFC50 的参数“PEADDR”传递给变量“test2”(图06)。
3. 通过判断ANY 指针“test”,能够传递临时变量“test2”的数据。
图06 any的临时变量传递语句L P##test 先把地址加载到Accu1,然后通过语句LAR1 把地址加载到地址寄存器AR1 (可简写为:LAR1 P##test)。