西门子PLC编程中的间接寻址

合集下载

西门子PLC指针寻址教学

西门子PLC指针寻址教学

L 11 T MW 60
OPN DB[MW 60]
OPN DB 11
z 双字格式的32位指针(用于对I、Q、M...进行寻址)
L P#24.0 T MD 50
LI
W
[MD50]
L IW 24
存储 访问 区域 宽度
地址
SIMATIC S7
Siemens AG 2001. All rights reserved.
地址标识符
Bit 31=0: 内部区域 Bit 31=1: 交叉区域
字节地址(无符号整数)
位地址
z 地址标识符:
000 I/O
010 输出(PIQ) 100 DB寄存器中的数据 110 自有本地数据
001 输入(PII)
011 位(Bit)存储器 101 DB寄存器2中的数据(DI) 111 调用块的LD(本地数据)
本地数据堆栈
SIMATIC S7
Siemens AG 2001. All rights reserved.
Date: File:
2013-4-26 PRO2_04E.3
SITRAIN Training for
Automation and Drives
DB中地址标识符直接寻址
打开的数据块
在数据块中装载和传递
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.

CS_CJ系列PLC间接寻址的几种情况

CS_CJ系列PLC间接寻址的几种情况

CS/CJ系列PLC间接寻址的几种情况1以二进制方式指定的DM/EM间接地址当在一个DM或EM地址前加入一个@前缀时,该字内容指定另一个作为操作数,内容可以是000~7FFF(0~32767),对应于DM或EM区中所要求的字地址。

当该字的内容在000和7FFF之间时,则指定了D0000~D32767之间的对应字;当字的内容在8000~FFFF (32768~65535)之间时,则指定了当前EM区EM0_00000~EM0_32767之间的对应字。

如下图,D200中内容#0200,则程序将常数#0020传递到D512中。

当PC设置中选择二进制方式时,DM区和EM区地址当作连续存储地址使用,如果一个间接地址的DM字大于32767,那么EM零区号中的一个字将被制定。

例如:间接寻址的DM字为8001的十六进制(32769),那么将被指定零区号E00000;如果一个间接寻址的EM字所含值大于32767,那么在下一个EM区的一个字将被指定。

例如,就间接寻址区2区号EM字为8001的十六进制值(十进制位32769),那么E3_00001将被指定。

2以BCD方式指定间接DM/EM间接地址当在一个DM或EM地址前加入一个*前缀时,该字内容指定另一个字的BCD内容作为操作数,内容可以是0000~9999,对应于DM或EM区中所要的字地址。

3寻址检索寄存器(DR,IR的间接寻址)使用MOVR指令将一个字或者位的内部I/O内存地址传送到一个索引寄存器(IR0~IR15)使用MORW将一个定时器或计数器的PV内部I/O内存地址传送到一个索引寄存器。

把含在IR寄存器的I/O内存地址中的字或位作为操作数用。

在索引寄存器前面放一“,”表示间接寻址。

(根据指令或操作数决定所指定的位或字)如下图,将W100.00放入索引寄存器IR0,使用“,IR0”触发W200.00,当W100.00置1,W200.00导通。

把偏移值(-2048~+2047)加到包含在索引寄存器IR中的内存地址上,并且把结果地址当作操作数用。

S7-300和S7-400寻址

S7-300和S7-400寻址

S7-300和S7-400寻址Addressing for S7-300 and S7-400Single - FAQ Edition (2010年-9月)摘要本文对S7-300, S7-400 PLC编程过程中,所涉及的寻址方式方法,做了简单介绍及简单示例。

关键词STEP7, 编程,寻址,间接寻址,S7-300, S7-400Key Words STEP7, Programming, Addressing, Indirection addressing, S7-300,S7-400目录S7-300和S7-400寻址1.S7-300/400系统存储区域2.S7-300/400 PLC寻址方式2.1直接寻址2.1.1绝对地址:2.1.2符号寻址:2.2间接寻址2.2.1存储器间接寻址2.2.2寄存器间接寻址2.2.3 FB/FC的指针参数传递1 S7-300/400系统存储区域S7 CPU的系统存储区域分为下表中列出的地址区域。

在程序中可以根据相应的地址直接读取数据。

►16位指针:16位地址指针用于定时器、计数器、程序块(DB、FC、FB)的寻址,16位指针被看作一个无符号整数(0~65535),它表示定时器(T)、计数器(C)、数据块(DB、DI)或程序块(FB、FC)的号,16位指针的格式如下:图1寻址格式表示为:区域标识符[ 16位地址指针]例如使一个计数器向上计数表示为:CU C [ MW ]上述指令中,’C’为区域标识符,而’MW20’为一个16位指针。

16位指针存储器间接寻址举例://用于定时器L 1T MW0 //将1传送到MW0A I0.0 //如果I0.0 = TrueL S5T#10SSD T[MW0] //T1开始计时// 上述指令可等同于:A I0.0L S5T#10SSD T1//用于打开DB块L 20T LW20OPN DB[LW20] //打开DB20//程序调用L 2T LW20UC FC[LW20] //调用FC2L 41T DBW30UC FB[DBW30] //调用FB41►32位指针:32位地址指针用于I、Q、M、L、数据块等存储器中位、字节、字及双字的寻址,32位的地址指针可以使用一个双字表示,第0位~第2位作为寻址操作的位地址,第3位~第18位作为寻址操作的字节地址,第19位~第31位没有定义,32位指针的格式如下:图 2存储器32指针仅用于内部区域寻址。

详解西门子间接寻址 (2)

详解西门子间接寻址 (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,它指向它们其中包含的数值,才是指令真正要执行的地址区域的确切位置。

间接由此得名。

西门子的间接寻址方式计有两大类型:存储器间接寻址和寄存器间接寻址。

西门子plc指针的概念及应用资料

西门子plc指针的概念及应用资料

plc地址的概念完整的一条指令,应该包含指令符+操作数(当然不包括那些单指令,比如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 .其中,我们又把〖存储区符〗〖存储区尺寸符〗这两个部分合称为:地址标识符。

这样,一个确切的地址组成,又可以写成:地址标识符 + 确切的数值单【间接寻址的概念】寻址,就是指定指令要进行操作的地址。

给定指令操作的地址方法,就是寻址方法。

在谈间接寻址之前,我们简单的了解一下直接寻址。

所谓直接寻址,简单的说,就是直接给出指令的确切操作数,象上面所说的,A Q2.0,就是直接寻址,对于A这个指令来说,Q2.0就是它要进行操作的地址。

这样看来,间接寻址就是间接的给出指令的确切操作数。

对,就是这个概念。

比如:A Q[MD100] ,A T[DBW100]。

程序语句中用方刮号 [ ] 标明的内容,间接的指明了指令要进行的地址,这两个语句中的MD100和DBW100称为指针Pointer,它指向它们其中包含的数值,才是指令真正要执行的地址区域的确切位置。

间接由此得名。

浅谈西门子PLC的“SCL语言”编程[指南]

浅谈西门子PLC的“SCL语言”编程[指南]

浅谈西门子PLC的“SCL语言”编程[指南] 浅谈西门子PLC的“SCL语言”编程随着现代工控技术的不断发展,可能很多使用过PLC的技术人员都有这么一个感受:传统的‘梯形图’编程方式在面对越来越复杂的控制要求时,已显得力不从心。

其实,现在很多大品牌的中高级PLC都支持国际电工委员会IEC61131标准中规范的五种编程语言的混合编程,即梯形图(LD)、结构化文本(ST)、流程图(SFC)、指令表(IL)和功能块(FB)。

在这五种编程语言中,我认为梯形图,结构化文本是一种不错的组合,用梯形图写逻辑控制,用结构化文本写计算,这样可以加快编程效率并且使程序的可读性大大提高。

而流程图编程则非常适用于一些“顺序控制”场合。

至于指令表和功能块,我个人认为实用性并不太大。

西门子S7系列PLC在国内工控领域中使用很广,它的编程软件Step7默认情况下只支持梯形图和指令表编程,但通过安装“S7-SCL”软件包和“S7-Graph”软件包可实现结构化文本和流程图编程。

下面,笔者就结合自己的一些使用经验介绍一下如何在Step7中用结构化文本编程。

一、什么是结构化文本编程结构化文本是一种类似于计算机高级语言的编程方式,它的语法规范接近计算机中的PASCAL语言。

具体的语法规则大家可参考西门子的相关手册,在此就不做详细介绍。

下图为Step7中的SCL编程界面:二、 S7-SCL软件包的安装在Step7 中,结构化文本编程被称为结构化控制语言(Structured Control Language),缩写为SCL. Step7 V5.3的软件包中已包含了S7-SCL软件包,在安装Step7 V5.3时,系统会提示是否要安装S7-SCL,把复选框打钩即可,见下图:Step7 V5.3的软件包里包含了SCL软件包和流程图编程软件包S7-GRAPH三、 SCL软件包的使用SCL软件包用于以“源文件”的方式编写功能块、函数块。

步骤如下: 第一步:当Step7中已正确安装SCL软件包后,会有如下界面正确安装了SCL软件包后,就可以用这种方式来建立Source File第二步:进入SCL编程界面,并选择准备编写的程序块的类别选择你所要编写的程序块的类型确定你所编写的程序块编号,本例中编写的是FC1第三步:编写程序并编译程序编写完毕后按这两个按钮中的任何一个进行编译编译后生产FC1经过以上四步,就完成了一个用SCL编写功能块的全过程, FC1的源程序,保存在“Sources”文件夹中,可随时打开进行修改。

西门子plc的4种寻址方式

西门子plc的4种寻址方式

西门子plc的4种寻址方式立即寻址是对操作数是常数或常量的寻址方式,其特点是操作数值直接表示在指令中,出现在指令中的操作数称为立即数。

有些指令的操作数是唯一的,为简化起见,并不在指令中写出。

立即寻址方式可用来提供常数、设置初值等。

常数值可分为字节、字、双字型等数据。

CPU以二进制方式存储所有常数。

在指令中可用十进制、十六进制、ASCII码或浮点数形式来表示操作数。

立即寻址示例:SET 说明:把RLO置1OW W#16#320 将常量W#16#320与ACCU1“或”运算L 1352 把整数1352装入ACCU1L‘ABCD’把ASCII码字符ABCD装入ACCU1L C#100 把BCD码常数100(计数值)装入ACCU1AW W#16#3A12 常数W316#3 A12与ACCU1的低位相“与”,运算结果在ACCU1的低字中。

存储器直接寻址包括对寄存器和存储器的直接寻址。

在直接寻址的指令中,直接给出操作数的存储单元地址,包括寄存器或存储器的区域、长度和位置,根据这个地址就可以立即找到该数据。

例如,用MW200指定位存储区中的字,地址为200;MB100表示以字节方式存取,MW100表示存取MB100、MB101组成的字,MD100表示存取MB100~ MB103组成的双字。

在指令中,数据类型应与指令标识符相匹配。

直接寻址编程示例:A IO.0 说明:对输入位10.0进行“与”逻辑操作S L20.0 把本地数据位I20.0置“l”= M115.4 使存储区位M115.4的内容等于RLO的内容L IB10 把输入字节IB10的内容装入ACCU1T DBD12 把ACCU1中的内容传送给数据双字DBD12中。

存储器间接寻址简称间接寻址。

该寻址方式在指令中以存储器的形式给出操作数所在存储器单元的地址,也就是说该存储器的内容是操作数所在存储器单元的地址。

该存储器一般称为地址指针,在指令中需写在方括号“[]”内。

西门子PLC指针编程

西门子PLC指针编程
dcs2fa崔坚simatictechnicalconsultingpage820078月寻址方式直接寻址存储区地址指针存储区地址指针寄存器间接寻址pointer数据类型指针any数据类型指针fb块形参的编程32位地址指针32位地址指针32位地址指针用于iqml数据块等存储器中位字节字及双字的寻址32位的地址指针可以使用一个双字表示第0位第2位作为寻址操作的位地址第3位第18位作为寻址操作的字节地址第19位第31位没有定义32位指针的格式如下
寄存器间接寻址
POINTER数据 类型指针
ANY数据类型 指针
FB块形参的 编程
//////////////////////////////////////////////////////////////////////// ///L///1//2/////////////////////
T LW 20 UC FC [LW 20] //无条件调用FC12 L 13 T MW 20 A I 2.3 CC FB [MW 20] //如果I2.3为1,调用FB13。
TAR2 <D> : 将AR1存储的地址指针传输给指明的变量中。
CAR
: 交换AR1和AR2的内容。
A&D CS2 FA 崔坚
SIMATIC Technical Consulting 2007 8月
Page 14
A&D AS CS2 FA Systems Support
寻址方式 直接寻址
存储区地址指针
POINTER数据 类型指针
ANY数据类型 指针
FB块形参的 编程
32位地址指针
地址寻址表示格式为: 地址存储器标识符[32位地址指针],例如指针存储于LD20中, 装载M存储器一个字节表示

PLC中指针及间接寻址的应用

PLC中指针及间接寻址的应用

S7-200cpu许诺利用指针对下述存储区进行间接寻址:I, Q, V, M, S, T和C。

但不能对独立的位或模拟量进行间接寻址。

指针为双字值,用来寄存另一个存储器的地址,只能用V, L 或累加器AC1,AC2和AC3作指针。

为了生成指针,必需用双字传送指令(MOVD)将某个位置的地址移入另一个位置或累加器作为指针。

MOVD &VB200,AC1MOVW *AC1,AC0对指令的操作数的指定方式,我将其明白得为“寻址”。

在程序中绝大部份的指令都带有操作数,所谓的操作数,是执行这一指令时被这一指令加以操作、处置的数值。

对指令的操作数的指令方式大致的总结一下,能够归纳为如下几个类型: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。

西门子PLC转换指令

西门子PLC转换指令

西门子PLC转换指令
转换指令是指对操作数的类型进行转换,包括数据的类型转换、码的类型
转换以及数据和码之间的类型转换。

一、数据类型转换(一)字节与整数
1、字节到整数
BTI,字节转换为整数指令。

使能输入有效时,将字节输入数据IN 转换成整
数类型,并将结果送到OUT 输出。

字节型是无符号的,所以没有符号扩展。

使能流输出ENO 断开的出错条件:SM4.3 (运行时间);0006 (间接寻址)。

指令格式:BTI IN, OUT
例:BTI VB0, AC0
2、整数到字节
ITB,整数转换字节指令。

使能输入有效时,将整数输入数据IN 转换成字节
类型,并将结果送到OUT 输出。

输入数据超出字节范围(0~255)则产生溢出。

移位指令影响的特殊存储器位:SM1.1(溢出)。

使能流输出ENO 断开的出错
条件:SM1.1(溢出);SM4.3(运行时间);0006(间接寻址)。

指令格式:ITB IN, OUT
例:ITB AC0, VB10
(二)整数与双整数
1、双整数到整数
DTI,双整数转换为整数指令。

使能输入有效时,将双整数输入数据IN 转换
成整数类型,并将结果送到OUT 输出。

输入数据超出整数范围则产生溢出。

移位指令影响的特殊存储器位:SM1.1(溢出)。

使能流输出ENO 断开的出错。

西门子S7-1200 PLC的间接寻址功能及实例

西门子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转换指令
转换指令是指对操作数的类型进⾏转换,包括数据的类型转换、码的类型
转换以及数据和码之间的类型转换。

⼀、数据类型转换(⼀)字节与整数
1、字节到整数
BTI,字节转换为整数指令。

使能输⼊有效时,将字节输⼊数据IN 转换成整
数类型,并将结果送到OUT 输出。

字节型是⽆符号的,所以没有符号扩展。

使能流输出ENO 断开的出错条件:SM4.3 (运⾏时间);0006 (间接寻址)。

指令格式:BTI IN, OUT
例:BTI VB0, AC0
2、整数到字节
ITB,整数转换字节指令。

使能输⼊有效时,将整数输⼊数据IN 转换成字节
类型,并将结果送到OUT 输出。

输⼊数据超出字节范围(0~255)则产⽣溢出。

移位指令影响的特殊存储器位:SM1.1(溢出)。

使能流输出ENO 断开的出错
条件:SM1.1(溢出);SM4.3(运⾏时间);0006(间接寻址)。

指令格式:ITB IN, OUT
例:ITB AC0, VB10
(⼆)整数与双整数
1、双整数到整数
DTI,双整数转换为整数指令。

使能输⼊有效时,将双整数输⼊数据IN 转换
成整数类型,并将结果送到OUT 输出。

输⼊数据超出整数范围则产⽣溢出。

移位指令影响的特殊存储器位:SM1.1(溢出)。

使能流输出ENO 断开的出错。

step7中的难点:间接寻址示例,中文详细注释

step7中的难点:间接寻址示例,中文详细注释

FUNCTION "DBtoDB" : VOID //该功能块的作用是把一个数据块中的指定的一批数据,复制到另一个块的指定位置。

TITLE = //标题,这里没有指定AUTHOR : BaiZH //作者感谢您,BaiZH,通过您的这个例子我基本入明白了//接寻址的用法。

不过具体在什么情况下使用我还得继续努//力。

FAMIL Y : IR //分类NAME : DBtoDB //名称VERSION : 0.1 //版本V AR_INPUT //输入型变量声明开始SRC_DB : INT ; //Source DB Block Number //整型值,要复制的源数据块块号SRC_SttAddr : INT ; //Start Address of the Sending Data in SRC_DB//源数据块的要复制的数据起始地址SendNum : INT ; //Words Number Need Sending //要复制的数据量DST_DB : INT ; //Destination DB Block Number //目标数据块号DST_SttAddr : INT ; //Start Address of the Receiving Data in DST_DB //目标数据块中数据起始地址END_V ARV AR_IN_OUT //输入输出变量声明Enable : BOOL ; //Enable Bit //使能此功能块位END_V ARV AR_TEMP //声明临时变量DB_LOAD_TEMP : INT ; //存放临时数据块块号Loop_Val : INT ; //Send Data Loop Value //循环次数DB_SAVE : INT ; //保存进入此函数前,系统已经打开的数据块号DI_SA VE : INT ; //同上AR1_SA VE : DWORD ; //保存进入此函数前,地址寄存器1中的值AR2_SA VE : DWORD ; //同上END_V ARBEGIN //在STEP7的BLOCK中编辑时的程序主要从这里开始NETWORKTITLE =Send Data//Move data from DB to DBA #Enable; //使能位,ENABLE为1执行以下程序JCN END; //否则跳转到最后TAR1 #AR1_SA VE; // Save AR and Opened DB //保存进入此函数前的数据到临时变量中,以备离开时复原TAR2 #AR2_SA VE;L DBNO; //同上,保存调用前的现场数据,以备调用完毕复原主程序的现场数据T #DB_SA VE; //一个DBNO,一个DINO,是因为要同时打开两个数据块,只能一个背景数据块,一个共享数据块。

plc寻址方式

plc寻址方式

举个例子比较容易理解。

比如MOV DM0010 DM0020,这句就是直接寻址,意思是把DM0010的数据放入DM0020中。

再比如MOV @DM0010 DM0020,这句就是间接寻址,意思是把DM0010中所指的数据放入DM0020中,如果这时DM0010中的数据为&50(&代表的是十进制数),那么这句话的含义就是把DM0050的数据放入DM0020,这时DM0010就是起的指针作用,指向的是DM0050中的数据。

以上举例是以OMRON的PLC程序为例,其他PLC可能程序写法不同,但是理解是一样的。

一、直接寻址方式指令所要的操作数存放在内存中,在指令中直接给出该操作数的有效地址,这种寻址方式为直接寻址方式。

在通常情况下,操作数存放在数据段中,所以,其物理地址将由数据段寄存器DS和指令中给出的有效地址直接形成,但如果使用段超越前缀,那么,操作数可存放在其它段。

如MOV BX, [1234H]二、寄存器间接寻址方式操作数在存储器中,操作数的有效地址用SI、DI、BX和BP等四个寄存器之一来指定,称这种寻址方式为寄存器间接寻址方式。

在不使用段超越前缀的情况下,有下列规定:若有效地址用SI、DI和BX等之一来指定,则其缺省的段寄存器为DS;若有效地址用BP来指定,则其缺省的段寄存器为SS(即:堆栈段)。

如MOV BX,[DI]1. MOV AX, ES:[1000H]源操作数的寻址方式是?直接寻址2. MOV AX, BAH[DI]源操作数的寻址方式是?寄存器相对寻址3. MOV AX, COUNT[BX]源操作数的寻址方式是?寄存器相对寻址4. MOV AX, COUNT[AX]源操作数的寻址方式是?MOV AX, COUNT[BX]寄存器相对寻址,MOV AX, COUNT[AX]是错的5. MOV [AX], COUNT[BX][DI]源操作数的寻址方式是?相对基址变址寻址6. MOV [BX], COUNT[BX][DI]源操作数的寻址方式是?相对基址变址寻址7. MOV AX, COUNT[BX][BP]源操作数的寻址方式是?错的8. MOV AX, COUNT[BX][SI]源操作数的寻址方式是?相对基址变址寻址。

西门子PLC高级编程3_间接寻址及地址寄存器指令

西门子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间接寻址

SIEMENSSTEP7间接寻址
比较
02 Siemens Step7 中的间接寻址
Step7 中的间接寻址方式
01
间接寻址是通过间接地址指针来访问存储单元的寻址方 式。在 Step7 中,间接寻址主要应用于数组、结构体等 复杂数据类型的访问。
02
间接寻址通过使用指针变量来间接指向目标数据,从而 实现数据的间接访问。
03
间接寻址的地址计算涉及指针变量的值计算,以确定目 标数据的实际地址。
Siemens Step7 间 接寻址
目录
• 间接寻址简介 • Siemens Step7 中的间接寻址 • 间接寻址的编程示例 • 间接寻址的优缺点 • 间接寻址的常见问题与解决方案 • 间接寻址的未来发展与展望
间接寻址简介
01
定义与特点
01
定义
间接寻址是一种在编程中通过间接变量访问实际变量的 方法。在Siemens Step7中,间接寻址允许我们通过间 接变量来访问数据块中的数据。
间接寻址的地址计算
01
地址计算是间接寻址中关键的一步,它涉及到指针 变量的值调整和偏移计算。
02
地址计算通常涉及加减运算,以根据指针变量当前 指向的地址,计算出目标数据的实际地址。
03
地址计算过程中需要考虑数据类型的大小和字节顺 序,以确保正确访问目标数据。
间接寻址的指令应用
01
间接寻址在 Step7 中广泛应用于指令操作,如数据块读写、结 构体访问等。
数据块访问权限问题
总结词
在Step7中,数据块访问权限问题也是一个常见问题,可能导致程序无法正常访问数据 块。
详细描述
当使用间接寻址时,如果访问的数据块没有正确的访问权限,程序将无法读取或写入数 据块。为了避免这个问题,程序员需要确保数据块具有正确的访问权限,并且在使用间

西门子PLC间接寻址详解

西门子PLC间接寻址详解

西门子PLC间接寻址详解完整一条指令,应该包含指令符+操作数(当然不包括那些单指令,比如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,它指向它们其中包含数值,才是指令真正要执行址区域确切位置。

间接由此名。

西门子间接寻址方式计有两大类型:存储器间接寻址和寄存器间接寻址。

【存储器间接寻址】存储器间接寻址址给定格式是:址标识符+指针。

西门子PLC寻址方式

西门子PLC寻址方式

寻址方式
所谓寻址方式是指指令得到操作数的方式,可以直接或间接给出操作数的地址。

STEP-7有4种寻址方式:立即寻址、存储器直接寻址、存储器间接寻址和寄存器间接寻址。

1、立即寻址
立即寻址是对常数或常量的寻址方式,其特点是操作数直接包含其中,或指令操作数是唯一的。

2、存储器直接寻址
存储器直接寻址的特点是直接给出存储器的存储单元地址。

3、存储器间接寻址
存储器间接寻址的特点是用指针进行寻址。

操作数存储在由于指针给出的存储单元中,根据要描述的地址复杂程度,地址指针可以是字或双字的,存储指针的存储器也应是字或双字的。

对于T、C、FB、FC、DB,由于其地址范围为-,可使用字指针;对于I、Q、M等,可能要使用双字指针。

使用双字指针时,必须保证指针中的位编号为“0”。

4、寄存器间接寻址
寄存器间接寻址的特点是通过地址寄存器寻址。

S7中有两个地址寄存器:AR1和AR2,地址寄存器的内容加上偏移量形成地址指针,指向操作数所在的存储单元。

寄存器间接寻址有两种形式:区域内寄存器间接寻址和区域司寄存器间接寻址。

STEP7梯形图中实现DB块间接寻址的实践

STEP7梯形图中实现DB块间接寻址的实践

STEP7梯形图中实现DB块间接寻址的实践
梁斌[1];吕涛[2]
【期刊名称】《柳钢科技》
【年(卷),期】2018(000)006
【摘要】介绍在棒线厂一级PLC系统程序设计中,使用西门子STEP7的指针(POINTER)数据类型,实现DB块间接寻址的过程。

【总页数】3页(P37-39)
【作者】梁斌[1];吕涛[2]
【作者单位】[1]信息管理部;[2]棒线型材厂
【正文语种】中文
【中图分类】TP273
【相关文献】
1.浅谈PLC梯形图中电路块的判定规则 [J], 史宜巧;李凤才
2.PLC梯形图中内嵌C语言编程的实现 [J], 黄小强,;严义;邬惠峰;吴盼盼
3.基于STEP7功能块的PID控制仿真 [J], 陈午阳;李强;管延智
4.使用DBSCAN算法探测点阵图中的噪点 [J], 王顺然;
5.基于三菱PLC间接寻址的循环结构与排序算法实现 [J], 刘思远
因版权原因,仅展示原文概要,查看原文内容请购买。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

本栏论题:西门子PLC编程中的间接寻址[601]
1、地址的概念
我们知道,完整的一条指令,应该包含指令符+操作数(不包括那些单指令)。

其中的操作数是指令要执行的目标,也就是指令要进行操作的地址。

在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位。

因此一个确切的地址组成应该是:〖存储区符〗〖存储区尺寸符〗〖尺寸数值〗.〖位数值〗,例如:DBX0.0。

其中,我们又把〖存储区符〗〖存储区尺寸符〗这两个部分合称为:地址标识符。

这样,一个确切的地址组成,又可以写成:地址标识符+确切的数值单元
2、间接寻址的概念
寻址,就是指定指令要进行操作的地址。

给定指令操作的位址方法,就是寻址方法。

所谓直接寻址,简单的说,就是直接给出指令的确切操作数,像上面所说的,A Q2.0,这样看来,间接寻址就是间接的给出指令的确切操作数。

比如:A Q[MD0],A T[DBW4]。

程序语句中用方刮号[]标明的内容,间接的指明了指令要进行的位址,这两个语句中的MD0和DBW4称为指针Pointer,它指向它们其中包含的数值,才是指令真正要执行的地址区域的确切位置。

间接由此得名。

3、间接寻址的两种方法
西门子的间接寻址方式有两大类型:内存间接寻址和寄存器间接寻址。

(1)、内存间接寻址
内存间接寻址的地址给定格式是:地址标识符+指针。

指针所指示存储单元中所包含的数值,就是地址的确切数值单元。

内存间接寻址具有两个指针格式:单字和双字。

单字指针是一个16bit的结构,从0-15bit,指示一个从0-65535的数值,这个数值就是被寻址的存储区域的编号。

双字指针是一个32bit的结构,从0-2bit,共三位,按照8进制指示被寻址的位编号,也就是0-7;而从3-18bit,共16位,指示一个从0-65535的数值,这个数值就是被寻址的字节编号。

指针可以存放在M、DI、DB和L区域中,也就是说,可以用这些区域的内容来做指针。

单字指针和双字指针在使用上有很大区别。

单字指针只应用在地址标识符是非位的情况下。

的确,单字指针前面描述过,它确定的数值是0-65535,而对于byte.bit这种具体位构来说,只能用双字指针。

这是它们的第一个区别,单字指针的另外一个限制就是,它只能对T、C、DB、FC和FB进行寻址,通俗地说,单字指针只可以用来指代这些存储区域的编号。

相对于单字指针,双字指针就没有这样的限制,它不仅可以对位地址进行寻址,还可以对BYTE、WORD、DWORD寻址,并且没有区域的限制。

不过,有得必有失。

(在对非位的区域
进行寻址时,必须确保其0-2bit为全0!)
总结一下:
单字指针的内存间接寻址只能用在地址标识符是非位的场合;双字指针由于有位格式存在,所以对地址标识符没有限制。

也正是由于双字指针是一个具有位的指针。

(因此,当对字节、字或者双字存储区地址进行寻址时,必须确保双字指针的内容是8或者8的倍数。


(2)、地址寄存器间接寻址
在先前所说的内存间接寻址中,间接指针用M、DB、DI和L直接指定,就是说,指针指向的存储区内容就是指令要执行的确切地址数值单元。

但在寄存器间接寻址中,指令要执行的确切地址数值单元,并非寄存器指向的存储区内容,也就是说,寄存器本身也是间接的指向真正的地址数值单元。

从寄存器到得出真正的地址数值单元,西门子提供了两种途径:
a、区域内寄存器间接寻址
b、区域间寄存器间接寻址
地址寄存器间接寻址的一般格式是:
〖地址标识符〗〖寄存器,P#byte.bit〗,比如:DIX[AR1,P#1.5]或M[AR1,P#0.0]。

相关文档
最新文档