西门子洗衣机好用吗中的 MOV的 怎么用的

西门子PLC中的数据如何寻址_百度知道
西门子PLC中的数据如何寻址
  1.直接寻址&&& S7系列PLC的编程指令支持直接寻址与间接寻址两种寻址方式。&&& 直接寻址通过直接给出信号地址进行,它可以用于所有的编程元件(I、Q、M、SM、V、L、S、T、C、AC、HC等)。&&& [例8-5]利用直接寻址的方式,将标志存储器MB10的内容一次性在QB2上输出的程序如图8-4.1所示。  图中的MOV B在S7-200PLC中为字节移动指令,EN为启动条件,IN端为需要移动的数据地址,OUT端为移动目标位置地址,SMO.O为PLC内部的恒“1”信号。有关本指令的更具体说明可以详见PLC编程的有关章节。& 2.间接寻址& S7-200的间接寻址方式中,操作数指定的是操作对象所存放的地址,而不具体指明操作对象。因此,间接寻址方式需要通过“地址指针”进行。&&& 所谓“地址指针”是间接寻址时专门用来存储地址的寄存器。在S7-200 PLC中,建立地址指针应注意以下几点:&&& ①只能用变量V、局部变量L或累加器AC1、AC2、AC3作为地址指针(ACO不可使用)。&&& ②建立地址指针,必须用双字的形式将间接寻址需要的存储器地址移动到地址指针中;存储器地址前加符号“&”进行标记,“&”表明移动的只是址,而不是该存储器的具体内容。&&& ③间接寻j时,应在地址指针的前面加“*”标记,表示该操作数为间接寻址的地址指针。&&& ④允许利用地址指针访问的存储器为I、Q、V、M、S以及定时器T、计数器C的当前值,但模拟量输入/输出AI/AQ、高速计数器HC、特殊标志SM以局部变量L不能通过地址指针进行访问。()&&& ⑤S7-200的间接寻址不可以用于二进制位信号、高速计数器HC、局部变量L,如不可以对I0.2、Q0.2、HC1、LW2等使用间接寻址。  [例1]以AC1(累加器1)作为地址指针,将变量存储器VB200~VB203中4字节数据()移动到标志寄存器MBO~MB3中的程序如图8-4.2所示。&&& 程序分为4段,第1段利用双字移动指令MOVD(在梯形图中的符号为MOV__ DW)将地址VB200移动到地址指针AC1中。&&& 第2段利用字移动指令MOVW,将地址指针ACI中地址VB200所存储的内容(VB200、VB201中的值1234)移动到MWO。&&& 第3段将地址指针中的地址加2(AC1的地址变为VB202)。&&& 第4段将地址指针AC1中地址VB202中所存储的内容(VB202、VB203中的值5678)移动到MW2。&&& 图中有关MOV指令的具体说明可以详见第10章10.4节的有关章节。&&& [例2]以LD10(局部变量10)作为指针,将由偏移量存储器VD1004所确定的变量存储器VW中的内容移动到VW1900的程序如图8-4.3所示。&&& 程序分为3段,第l段利用双字移动指令MOVD(在梯形图中的符号为MOV DW)将地址VBO移动到地址指针LD10中。&&& 第2段将指针中的地址VBO加上偏移量存储器VD1004的内容(LD10的地址变为VBO+偏移量),确定移动目标。&&& 第3段将指针LD10中地址“VBO+偏移量”中所存储的内容移动到VW1900。&&& 本例中如果VD1004中的内容为1000,则变量存储器VW1000中的内容将被复制到VW 1900中;若改变VD1004中的内容为1100,则变量存储VW1100中的内容将被复制到VW1900中。
为您推荐:
提问者采纳
0 Q0.0 V0、、、.0 L0.0 M0S7-200的PLC按照寻址的范围有位寻址
I0.0 Q0.0 S0.0字节寻址 IB0 QB0 MB0
ACCU0 字寻址
IW0 PIW0 QW0 PQW0
ACCU0 双字寻址
.0 SM0.0字节寻址 IB0 QB0 MB0 SMB0 VB0
AC0 字寻址
IW0 AIW0 QW0 AQW0 VW0 MW0 LW0
AC0 双字寻址
ID0 AID0 QD0 AQD0 VD0 MD0 LD0
AC0 S7-300的PLC按照寻址的范围有位寻址
L0、、.0 M0
提问者评价
谢谢你的耐心解答,好详细呀
您可能关注的推广
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁西门子S7-200 MOV-W 的指令 有简单的例题吗 谢谢_百度知道
西门子S7-200 MOV-W 的指令 有简单的例题吗 谢谢
mov-w aiw2 ,vw2模拟量2通道的,模拟值,转换为数字量,传送到vw2中去LD I0.0MOVW 5,MW0意思是当I0.0得电,十进制5被传送到MW0中
其他类似问题
为您推荐:
vw2模拟量2通道的,模拟值,转换为数字量mov-w aiw2
来自团队:
其他2条回答
就是传送指令,MOV-W
里就行了太简单了,把某个双字节数据传送到某个双字节地址里边去
5,MW0意思是当I0.0得电,十进制5被传送到MW0中
您可能关注的推广
mov的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁当前页面:&&&&&西门子PLC字节立即读指令MOV-BIR的使用
西门子PLC字节立即读指令MOV-BIR的使用
摘要:字节立即读指令(MOV-BIR)读取实际输入端IN给出的1个字节的数值,并将结果写入OUT所指定的存储单元,但输入映像寄存器未更新。字节立即写指令从输入IN所指定的存储单元中读取1个字节的数值并写入(以字节为单位)实际输出OUT端的物理输出点,同时刷新对应的输出映像寄存器。指令格式及功能如表1所示。表1字节立即读写指令格式使ENO = 0的错误条件:0006(间接寻址错误),SM4.
字节立即读指令(MOV-BIR)读取实际输入端IN给出的1个字节的数值,并将结果写入OUT所指定的存储单元,但输入映像寄存器未更新。
字节立即写指令从输入IN所指定的存储单元中读取1个字节的数值并写入(以字节为单位)实际输出OUT端的物理输出点,同时刷新对应的输出映像寄存器。指令格式及功能如表1所示。  表1字节立即读写指令格式
使ENO = 0的错误条件:0006(间接寻址错误),SM4.3(运行时间)。注意:字节立即读写指令无法存取扩展模块。
审核编辑(李晨晖)
更多内容请访问 中国工控网()
手机扫描二维码分享本页
工控网APP下载安装
工控速派APP下载安装
提点建议:
,请填写评语后直接提交。
&&匿名留言
暂无记录!
看过的用户还看过
历史浏览记录
请或可查看更多历史记录
扫描二维码关注微博
扫描二维码关注微信西门子PLC如何间接寻址_百度知道
西门子PLC如何间接寻址
从寄存器到得出真正的地址数值单元,途径:区域 内 寄存器间接寻址区域 间 寄存器间接寻址地址寄存器间接寻址的一般格式是:  &〖地址标识符〗〖寄存器,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] 就叫做区域间寻址指针。【AR的格式】&& 地址寄存器是专门用于寻址的一个特殊指针区域,西门子的地址寄存器共有两个:AR1和AR2,每个32位。&& 当使用在区域内寄存器间接寻址中时,我们知道这时的AR中的内容只是指明数值单元,因此,区域内寄存器间接寻址时,寄存器中的内容等同于上帖中提及的存储器间接寻址中的双字指针,也就是: & 其0-2bit,指定bit位,3-18bit指定byte字节。其第31bit固定为0。 & AR:&& 00 0BBB BBBB BBBB BBBB BXXX&& 这样规定,就意味着AR的取值只能是:0.0 ——65535.7&& 例如:当AR=D4(hex)=00 00 (b),实际上就是等于26.4。 & 而在区域间寄存器间接寻址中,由于要寻址的区域也要在AR中指定,显然这时的AR中内容肯定于寄存器区域内间接寻址时,对AR内容的要求,或者说规定不同。 & AR:&& 1000 0YYY 0000 0BBB BBBB BBBB BBBB BXXX&& 比较一下两种格式的不同,我们发现,这里的第31bit被固定为1,同时,第24、25、26位有了可以取值的范围。聪明的你,肯定可以联想到,这是用于指定存储区域的。对,bit24-26的取值确定了要寻址的区域,它的取值是这样定义的: & 区域标识符 & &26、25、24位 && P(外部输入输出) & &000 && I(输入映像区) & &001 && Q(输出映像区) & &010M(位存储区) & &011 && DB(数据块) & &100 && DI(背景数据块) & &101 && L(暂存数据区,也叫局域数据) & &111 && 如果我们把这样的AR内容,用HEX表示的话,那么就有: & 当是对P区域寻址时,AR=800xxxxx & 当是对I区域寻址时,AR=810xxxxx & 当是对Q区域寻址时,AR=820xxxxx & 当是对M区域寻址时,AR=830xxxxx & 当是对DB区域寻址时,AR=840xxxxx & 当是对DI区域寻址时,AR=850xxxxx & 当是对L区域寻址时,AR=870xxxxx&& 经过列举,我们有了初步的结论:如果AR中的内容是8开头,那么就一定是区域间寻址;如果要在DB区中进行寻址,只需在8后面跟上一个40。FFFFF指明了要寻址的范围是: & DB区的0.0——65535.7。&& 例如:当AR=(hex)=00 00 (b),实际上就是等于DBX26.4。&& 我们看到,在寄存器寻址指针 [AR1/2,P#byte.bit] 这种结构中,P#byte.bit又是什么呢? & 【P#指针】&& P#中的P是Pointer,是个32位的直接指针。所谓的直接,是指P#中的#后面所跟的数值或者存储单元,是P直接给定的。这样P#XXX这种指针,就可以被用来在指令寻址中,作为一个“常数”来对待,这个“常数”可以包含或不包含存储区域。例如:&& ● L P#Q1.0 //把Q1.0这个指针存入ACC1,此时ACC1的内容=(hex)=Q1.0 & ★ L P#1.0 //把1.0这个指针存入ACC1,此时ACC1的内容=(hex)=1.0 & ● L P#MB100 //错误!必须按照byte.bit结构给定指针。&& ● L P#M100.0 //把M100.0这个指针存入ACC1,此时ACC1的内容=(hex)=M100.0 & ● L P#DB100.DBX26.4 //错误!DBX已经提供了存储区域,不能重复指定。&& ● L P#DBX26.4 //把DBX26.4这个指针存入ACC1,此时ACC1的内容=(hex)=DBX26.4 & 我们发现,当对P#只是指定数值时,累加器中的值和区域内寻址指针规定的格式相同(也和存储器间接寻址双字指针格式相同);而当对P#指定带有存储区域时,累加器中的内容和区域间寻址指针内容完全相同。事实上,把什么样的值传给AR,就决定了是以什么样的方式来进行寄存器间接寻址。在实际应用中,我们正是利用P#的这种特点,根据不同的需要,指定P#指针,然后,再传递给AR,以确定最终的寻址方式。&& 在寄存器寻址中,P#XXX作为寄存器AR指针的偏移量,用来和AR指针进行相加运算,运算的结果,才是指令真正要操作的确切地址数值单元!&& 无论是区域内还是区域间寻址,地址所在的存储区域都有了指定,因此,这里的P#XXX只能指定纯粹的数值,如上面例子中的★。&【指针偏移运算法则】&运算的法则是:AR1和P#中的数值,按照BYTE位和BIT位分类相加。BIT位相加按八进制规则运算,而BYTE位相加,则按照十进制规则运算。&& 例如:寄存器寻址指针是:[AR1,P#2.6],我们分AR1=26.4和DBX26.4两种情况来分析。 & 当AR1等于26.4, & &AR1:26.2 & &+ P#: 2.6&& &--------------------------- & &= 29.7 这是区域内寄存器间接寻址的最终确切地址数值单元 & 当AR1等于DBX26.4, & &AR1:DBX26.2 & &+ P#: 2.6&& &--------------------------- & &= DBX29.7 这是区域间寄存器间接寻址的最终确切地址数值单元 & 【AR的地址数据赋值】&& 通过前面的介绍,我们知道,要正确运用寄存器寻址,最重要的是对寄存器AR的赋值。同样,区分是区域内还是区域间寻址,也是看AR中的赋值。 & 对AR的赋值通常有下面的几个方法: & 1、直接赋值法 & 例如:&& L DW#16# & LAR1&& 可以用16进制、整数或者二进制直接给值,但必须确保是32位数据。经过赋值的AR1中既存储了地址数值,也指定了存储区域,因此这时的寄存器寻址方式肯定是区域间寻址。 & 2、间接赋值法 & 例如: & L [MD100] & LAR1&& 可以用存储器间接寻址指针给定AR1内容。具体内容存储在MD100中。 & 3、指针赋值法 & 例如:&& LAR1 P#26.2&& 使用P#这个32位“常数”指针赋值AR。&& 总之,无论使用哪种赋值方式,由于AR存储的数据格式有明确的规定,因此,都要在赋值前,确认所赋的值是否符合寻址规范。 & 详解西门子间接寻址&3&&& 使用间接寻址的主要目的,是使指令的执行结果有动态的变化,简化程序是第一目的,在某些情况下,这样的寻址方式是必须的,比如对某存储区域数据遍历。此外,间接寻址,还可以使程序更具柔性,换句话说,可以标准化。&& 下面通过实例应用来分析如何灵活运用这些寻址方式,在实例分析过程中,将对前面帖子中的笔误、错误和遗漏做纠正和补充。&& 【存储器间接寻址应用实例】 & 我们先看一段示例程序: & L 100& T MW 100 // 将16位整数100传入MW100&& L DW#16#8 // 加载双字16进制数8,当把它用作双字指针时,按照BYTE.BIT结构, & &结果演变过程就是:8H= & T MD 2 // MD2=8H&& OPN DB [MW 100] // OPN DB100 & L DBW [MD 2] // L DB100.DBW1 & T MW[MD2] // T MW1 & &A DBX [MD 2] // A DBX1.0 & = M [MD 2] // =M1.0&& 在这个例子中,我们中心思想其实就是:将DB100.DBW1中的内容传送到MW1中。这里我们使用了存储器间接寻址的两个指针——单字指针MW100用于指定DB块的编号,双字指针MD2用于指定DBW和MW存储区字地址。 &&-------------------------------------------------------------------------------------------------------------------------------------------------&& 对于提出的 DB[MW100].DBW[MD2] 这样的寻址是错误的提法,这里做个解释:&& DB[MW100].DBW[MD2] 这样的寻址结构就寻址原理来说,是可以理解的,但从SIEMENS程序执行机理来看,是非法的。在实际程序中,对于这样的寻址,程序语句应该写成: & OPN DBW[WM100], L DBW[MD2]-------------------------------------------------------------------------------------------------------------------------------------------------&& 事实上,从这个例子的中心思想来看,根本没有必要如此复杂。但为什么要用间接寻址呢? & 要澄清使用间接寻址的优势,就让我们从比较中,找答案吧。&& 例子告诉我们,它最终执行的是把DB的某个具体字的数据传送到位存储区某个具体字中。这是针对数据块100的1数据字传送到位存储区第1字中的具体操作。如果我们现在需要对同样的数据块的多个字(连续或者不连续)进行传送呢?直接的方法,就是一句一句的写这样的具体操作。有多少个字的传送,就写多少这样的语句。毫无疑问,即使不知道间接寻址的道理,也应该明白,这样的编程方法是不合理的。而如果使用间接寻址的方法,语句就简单多了。 & 【示例程序的结构分析】&& 我将示例程序从结构上做个区分,重新输入如下:&& =========================== 输入1:指定数据块编号的变量 & || L 100 && || T MW 100 && ===========================输入2:指定字地址的变量 & || L DW#16#8 & &|| T MD 2 && ===========================操作主体程序 & & OPN DB [MW 100] & & L DBW [MD 2] & & T MW[MD2] && 显然,根本不需要对主体程序(红色部分)进行简单而重复的复写,而只需改变MW100和MD2的赋值(绿色部分),就可以完成应用要求。&& 结论:通过对间接寻址指针内容的修改,就完成了主体程序执行的结果变更。
其他类似问题
为您推荐:
提问者采纳
vd100 和 *vd100 不是相同的概念可以从例子中很清楚的看到,涉及vd100的操作200的系统都是按照双字来进行的,怎么去访问对应地址的值就看你用什么语句了。而*vd100 在系统中被定义的是取指针指向地址中的值,系统解释这句话时,只是在vd100中取了一个地址
提问者评价
其他2条回答
VD100是储存地址指针的
不是储存的值
是取指针地址对应的值
把VB2 的值传入VB500
VW0=VB0 VB1`
VW2=VB2 VB3
VW4=VB4 VB5因为VD100里面的VB0地址连加两个2,所以地址到了VB4,MOV_W
*VD100 XW502就是 VW4的值复制到VB502。
间接寻址的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 mov文件用什么播放 的文章

 

随机推荐