西门子变频器6SL32110AB125BA1,西门子变频器6SL32110AB125BA1
{心中有空间,梦想就有可能}
德国制造: 现货 联 系 人: 黄勇《黄工》 24小时联系手机: 13701633515
全新原装: 参数
质量保证: 保修
价格优势: 特价
我公司大量现货供应,价格优势,品质保证,德国原装进口
定货号 | 注释 |
电源模块 | |
6ES7 407-0DA02-0AA0 | 电源模块(4A) |
6ES7 407-0KA02-0AA0 | 电源模块(10A) |
6ES7 407-0KR02-0AA0 | 电源模块(10A)冗余 |
6ES7 407-0RA02-0AA0 | 电源模块(20A) |
6ES7 405-0DA02-0AA0 | 电源模块(4A) |
6ES7 405-0KA02-0AA0 | 电源模块(10A) |
6ES7 405-0RA01-0AA0 | 电源模块(20A) |
6ES7 971-0BA00 | 备用电池 |
CPU | |
6ES7 412-3HJ14-0AB0 | CPU 412-3H; 512KB程序内存/256KB数据内存 |
6ES7 414-4HM14-0AB0 | CPU 414-4H; 冗余热备CPU 2.8 MB RAM |
6ES7 417-4HT14-0AB0 | CPU 417-4H; 冗余热备CPU 30 MB RAM |
6ES7 400-0HR00-4AB0 | 412H 系统套件包括 2 个CPU、1个H型中央机架、2个电源、2个1M 存储卡、4个同步模块、2根同步电缆,以及4个备用电池(PS407 10A) |
6ES7 400-0HR50-4AB0 | 412H 系统套件包括 2 个CPU、1个H型中央机架、2个电源、2个1M 存储卡、4个同步模块、2根同步电缆,以及4个备用电池(PS405 10A) |
6ES7 412-1XJ05-0AB0 | CPU412-1,144KB程序内存/144KB数据内存 |
6ES7 412-2XJ05-0AB0 | CPU412-2,256KB程序内存/256KB数据内存 |
6ES7 414-2XK05-0AB0 | CPU414-2,512KB程序内存/512KB数据内存 |
6ES7 414-3XM05-0AB0 | CPU414-3,1.4M程序内存/1.4M数据内存 1个IF模板插槽 |
6ES7 414-3EM05-0AB0 | CPU414-3PN/DP 1.4M程序内存/1.4M数据内存 1个IF模板插槽 |
6ES7 416-2XN05-0AB0 | CPU416-2,2.8M程序内存/2.8M数据内存 |
6ES7 416-3XR05-0AB0 | CPU416-3,5.6M程序内存/5.6M数据内存 1个IF模板插槽 |
6ES7 416-3ER05-0AB0 | CPU416-3PN/DP 5.6M程序内存/5.6M数据内存 1个IF模板插槽 |
6ES7 416-2FN05-0AB0 | CPU416F-2,2.8M程序内存/2.8M数据内存 |
6ES7 416-3FR05-0AB0 | CPU416F-3PN/DP,5.6M程序内存/5.6M数据内存 |
6ES7 417-4XT05-0AB0 | CPU417-4,15M程序内存/15M数据内存 |
SINAMICS DC MASTER 装置可以通过并联来增加额定功率。必须满足一下辅助条件:
在 CUD 上配备传输触发脉冲以及建立更高等级通讯所需的硬件和插头。
最多可以并联 6 部设备。多部装置并联时,主装置应该放置在中间,以便信号连接方便。主从装置之间从总线到总线的最长并联接口线长度:15 m。
同样,每部SINAMICS DC MASTER 装置需要独立的换相电抗器(uK 最小 2 %),以便平均分配电流。电抗器公差差异决定的电流分配。对于无降级(电流下降)运行,推荐公差 5% 或更好。
只允许具有相同额定直流电流的装置并联。
装置并联时,允许的输出电流为(维持辅助条件时):
Imax = n × IN(SINAMICS DC MASTER)
n = SINAMICS DC MASTER 装置的数量
冗余运行(“(n+m)运行”模式)
SINAMICS DC MASTER 装置还可以用在冗余配置中,作为特殊的并联运行模式。在此运行模式下,如果一台装置故障(例如电源部分的保险烧断),其他 SINAMICS DC MASTER 装置可以维持运行。正确组态好和互联好之后,电枢电路和励磁电路都可以冗余运行。
当一个装置故障时,其他SINAMICS DC MASTER 装置还可以正常运行、持续工作不会中断。在组态系统时,需要特别注意在冗余应用中,只须满足 n 个装置的额定功率(而不是 n+m 个装置)。
在发生故障时,主装置的功能会自动转移。这样一来,无论是主装置的电源部分故障还是从装置的电源部分故障,系统都会继续运行。(可以根据要求提供冗余运行时的 MTBF 数据。)
对于 12 脉冲运行的情况,两部 SINAMICS DC MASTER 转换器提供 30 度偏移的电压。该组态会降低谐波。每部 SINAMICS DC MASTER 传输总电流的一半。其中一部 SINAMICS DC MASTER 装置使用闭环速度控制运行,另一部使用闭环电流控制运行。进行了点对点连接,用于从第一部 SINAMICS DC MASTER 向第二部传输电流设置值。
用于 12 脉冲运行的直流电路中需要平波电抗器。
计算平波电抗器
计算所需的自感
1. 0.2 × IdN (LD1) 时的电抗器电感
2. Idmax (LD2) 时的电抗器电感
LD1 = 0.296 × 10-3 × Vdi/(0.2 × IdN)
LD2 = 0.296 × 10-3 × Vdi/(0.33 × Idmax)
LD1 = 0.24 × 10-3 × Vdi/(0.2 × IdN)
LD2 = 0.24 × 10-3 × Vdi/(0.33 × Idmax)
L = 电感,[H]
IdN 直流电机的额定直流电流的一半
Idmax 直流电机的最大电流的一半
Vdi = 1.35 × VN
VN 额定电源电压
详解西门子间接寻址
【地址的概念】
完整的一条指令,应该包含指令符+操作数(当然不包括那些单指令,比如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,它指向它们其中包含的数值,才是指令真正要执行的地址区域的确切位置。间接由此得名。
西门子的间接寻址方式计有两大类型:存储器间接寻址和寄存器间接寻址。
【存储器间接寻址】
存储器间接寻址的地址给定格式是:地址标识符+指针。指针所指示存储单元中所包含的数值,就是地址的确切数值单元。
存储器间接寻址具有两个指针格式:单字和双字。
单字指针是一个16bit的结构,从0-15bit,指示一个从0-65535的数值,这个数值就是被寻址的存储区域的编号。
双字指针是一个32bit的结构,从0-2bit,共三位,按照8进制指示被寻址的位编号,也就是0-7;而从3-18bit,共16位,指示一个从0-65535的数值,这个数值就是被寻址的字节编号。
指针可以存放在M、DI、DB和L区域中,也就是说,可以用这些区域的内容来做指针。
单字指针和双字指针在使用上有很大区别。下面举例说明:
L DW#16#35 //将32位16进制数35存入ACC1
T MD2 //这个值再存入MD2,这是个32位的位存储区域
L +10 //将16位整数10存入ACC1,32位16进制数35自动移动到ACC2
T MW100 //这个值再存入MW100,这是个16位的位存储区域
OPN DBW[MW100] //打开DBW10。这里的[MW100]就是个单字指针,存放指针的区域是M区,
MW100中的值10,就是指针间接指定的地址,它是个16位的值!
--------
L L#+10 //以32位形式,把10放入ACC1,此时,ACC2中的内容为:16位整数10
T MD104 //这个值再存入MD104,这是个32位的位存储区域
A I[MD104] //对I1.2进行与逻辑操作!
=DIX[MD2] //赋值背景数据位DIX6.5!
--------
A DB[MW100].DBX[MD2] //读入DB10.DBX6.5数据位状态
=Q[MD2] //赋值给Q6.5
--------
A DB[MW100].DBX[MD2] //读入DB10.DBX6.5数据位状态
=Q[MW100] //错误!!没有Q10这个元件
---------------------------------------------------------------------------------------------------
从上面系列举例我们至少看出来一点:
单字指针只应用在地址标识符是非位的情况下。的确,单字指针前面描述过,它确定的数值是0-65535,而对于byte.bit这种具体位结构来说,只能用双字指针。这是它们的第一个区别,单字指针的另外一个限制就是,它只能对T、C、DB、FC和FB进行寻址,通俗地说,单字指针只可以用来指代这些存储区域的编号。
相对于单字指针,双字指针就没有这样的限制,它不仅可以对位地址进行寻址,还可以对BYTE、WORD、DWORD寻址,并且没有区域的限制。不过,有得必有失,在对非位的区域进行寻址时,必须确保其0-2bit为全0!
总结一下:
单字指针的存储器间接寻址只能用在地址标识符是非位的场合;双字指针由于有位格式存在,所以对地址标识符没有限制。也正是由于双字指针是一个具有位的指针,因此,当对字节、字或者双字存储区地址进行寻址时,必须确保双字指针的内容是8或者8的倍数。
现在,我们来分析一下上述例子中的A I[MD104] 为什么最后是对I1.2进行与逻辑操作。
通过L L#+10 ,我们知道存放在MD104中的值应该是:
MD104:0000 0000 0000 0000 0000 0000 0000 1010
当作为双字指针时,就应该按照3-18bit指定byte,0-2bit指定bit来确定最终指令要操作的地址,因此:
0000 0000 0000 0000 0000 0000 0000 1010 = 1.2
详解西门子间接寻址<2>
【地址寄存器间接寻址】
在先前所说的存储器间接寻址中,间接指针用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位。
当使用在区域内寄存器间接寻址中时,我们知道这时的AR中的内容只是指明数值单元,因此,区域内寄存器间接寻址时,寄存器中的内容等同于上帖中提及的存储器间接寻址中的双字指针,也就是:
其0-2bit,指定bit位,3-18bit指定byte字节。其第31bit固定为0。
AR:
0000 0000 0000 0BBB BBBB BBBB BBBB BXXX
这样规定,就意味着AR的取值只能是:0.0 ——65535.7
例如:当AR=D4(hex)=0000 0000 0000 0000 0000 0000 1101 0100(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(输出映像区)
010
M(位存储区)
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。84000000-840FFFFF指明了要寻址的范围是:
DB区的0.0——65535.7。
例如:当AR=840000D4(hex)=1000 0100 0000 0000 0000 0000 1101 0100(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的内容=82000008(hex)=Q1.0
★ L P#1.0 //把1.0这个指针存入ACC1,此时ACC1的内容=00000008(hex)=1.0
● L P#MB100 //错误!必须按照byte.bit结构给定指针。
● L P#M100.0 //把M100.0这个指针存入ACC1,此时ACC1的内容=83000320(hex)=M100.0
● L P#DB100.DBX26.4 //错误!DBX已经提供了存储区域,不能重复指定。
● L P#DBX26.4 //把DBX26.4这个指针存入ACC1,此时ACC1的内容=840000D4(hex)=DBX26.4
我们发现,当对P#只是指定数值时,累加器中的值和区域内寻址指针规定的格式相同(也和存储器间接寻址双字指针格式相同);而当对P#指定带有存储区域时,累加器中的内容和区域间寻址指针内容完全相同。事实上,把什么样的值传给AR,就决定了是以什么样的方式来进行寄存器间接寻址。在实际应用中,我们正是利用P#的这种特点,根据不同的需要,指定P#指针,然后,再传递给AR,以确定最终的寻址方式。
在寄存器寻址中,P#XXX作为寄存器AR指针的偏移量,用来和AR指针进行相加运算,运算的结果,才是指令真正要操作的确切地址数值单元!
无论是区域内还是区域间寻址,地址所在的存储区域都有了指定,因此,这里的P#XXX只能指定纯粹的数值,如上面例子中的★。
【指针偏移运算法则】
在寄存器寻址指针 [AR1/2,P#byte.bit] 这种结构中,P#byte.bit如何参与运算,得出最终的地址呢?
运算的法则是: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#83000320
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=1000B=1.0
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的赋值(绿色部分),就可以完成应用要求。
结论:通过对间接寻址指针内容的修改,就完成了主体程序执行的结果变更,这种修改是可以是动态的和静态的。
正是由于对真正的目标程序(主体程序)不做任何变动,而寻址指针是这个程序中唯一要修改的地方,可以认为,寻址指针是主体程序的入口参数,就好比功能块的输入参数。因而可使得程序标准化,具有移植性、通用性。
那么又如何动态改写指针的赋值呢?不会是另一种简单而重复的复写吧。
让我们以一个具体应用,来完善这段示例程序吧:
将DB100中的1-11数据字,传送到MW1-11中
在设计完成这个任务的程序之前,我们先了解一些背景知识。
【数据对象尺寸的划分规则】
数据对象的尺寸分为:位(BOOL)、字节(BYTE)、字(WORD)、双字(DWORD)。这似乎是个简单的概念,但如果,MW10=MB10+MB11,那么是不是说,MW11=MB12+MB13?如果你的回答是肯定的,我建议你继续看下去,不要跳过,因为这里的疏忽,会导致最终的程序的错误。
按位和字节来划分数据对象大小时,是以数据对象的bit来偏移。这句话就是说,0bit后就是1bit,1bit后肯定是2bit,以此类推直到7bit,完成一个字节大小的指定,再有一个bit的偏移,就进入下一个字节的0bit。
而按字和双字来划分数据对象大小时,是以数据对象的BYTE来偏移!这就是说,MW10=MB10+MB11,并不是说,MW11=MB12+MB13,正确的是MW11=MB11+MB12,然后才是MW12=MB12+MB13!
这个概念的重要性在于,如果你在程序中使用了MW10,那么,就不能对MW11进行任何的操作,因为,MB11是MW10和MW11的交集。
也就是说,对于“将DB100中的1-11数据字,传送到MW1-11中”这个具体任务而言,我们只需要对DBW1、DBW3、DBW5、DBW7、DBW9、DBW11这6个字进行6次传送操作即可。这就是单独分出一节,说明数据对象尺寸划分规则这个看似简单的概念的目的所在。
【循环的结构】
要“将DB100中的1-11数据字,传送到MW1-11中”,我们需要将指针内容按照顺序逐一指向相应的数据字,这种对指针内容的动态修改,其实就是遍历。对于遍历,最简单的莫过于循环。
一个循环包括以下几个要素:
1、初始循环指针
2、循环指针自加减
2、继续或者退出循环体的条件判断
被循环的程序主体必须位于初始循环指针之后,和循环指针自加减之前。
比如:
初始循环指针:X=0
循环开始点M
被循环的程序主体:-------
循环指针自加减:X+1=X
循环条件判断:X≤10 ,False:GO TO M;True:GO TO N
循环退出点N
如果把X作为间接寻址指针的内容,对循环指针的操作,就等于对寻址指针内容的动态而循环的修改了。
【将DB100中的1-11数据字,传送到MW1-11中】
L L#1 //初始化循环指针。这里循环指针就是我们要修改的寻址指针
T MD 102
M2: L MD 102
T #COUNTER_D
OPN DB100
L DBW [MD 102]
T MW [MD 102]
L #COUNTER_D
L L#2 // +2,是因为数据字的偏移基准是字节。
+D
T MD 102 //自加减循环指针,这是动态修改了寻址指针的关键
L L#11 //循环次数=n-1。n=6。这是因为,首次进入循环是无条件的,
但已事实上执行了一次操作。
<=D
JC M2
有关于T MD102 ,L L#11, <=D的详细分析,请按照前面的内容推导。
【将DB1-10中的1-11数据字,传送到MW1-11中】
这里增加了对DB数据块的寻址,使用单字指针MW100存储寻址地址,同样使用了循环,嵌套在数据字传送循环外,这样,要完成“将DB1-10中的1-11数据字,传送到MW1-11中”这个任务 ,共需要M1循环10次 × M2循环6次 =60次。
L 1
T MW 100
L L#1
T MD 102
M1: L MW 100
T #COUNTER_W
M2: 对数据字循环传送程序,同上例
L #COUNTER_W
L 1 //这里不是数据字的偏移,只是编号的简单递增,因此+1
+I
T MW 100
L 9 //循环次数=n-1,n=10
<=I
JC M1
通过示例分析,程序是让寻址指针在对要操作的数据对象范围内进行遍历来编程,完成这个任务。我们看到,这种对存储器间接寻址指针的遍历是基于字节和字的,如何对位进行遍历呢?
这就是下一个帖子要分析的寄存器间接寻址的实例的内容了。
详解西门子间接寻址<4>
L [MD100]
LAR1
与
L MD100
LAR1
有什么区别?
当将MD100以这种 [MD100] 形式表示时,你既要在对MD100赋值时考虑到所赋的值是否符合存储器间接寻址双字指针的规范,又要在使用这个寻址格式作为语句一部分时,是否符合语法的规范。
在你给出第一个例程的第一句:L [MD100]上,我们看出它犯了后一个错误。
存储器间接寻址指针,是作为指定的存储区域的确切数值单元来运用的。也就是说,指针不包含区域标识,它只是指明了一个数值。因此,要在 [MD100]前加上区域标识如: M、DB、I、Q、L等,还要加上存储区尺寸大小如:X、B、W、D等。在加存储区域和大小标识时,要考虑累加器加载指令L不能对位地址操作,因此,只能指定非位的地址。
为了对比下面的寄存器寻址方式,我们这里,修改为:L MD[MD100]。并假定MD100=8Hex,同时我们也假定MD1=85000018Hex。
当把MD100这个双字作为一个双字指针运用时,其存储值的0-18bit将会按照双字指针的结构Byte.bit来重新“翻译”,“翻译”的结果才是指针指向的地址,因而MD100中的8Hex=1000B=1.0,所以下面的语句:
L MD[MD100]
LAR1
经过“翻译”就是:
L MD1
LAR1
前面我们已经假定了MD1=85000018,同样道理,MD1作为指针使用时,对0-18bit应该经过Byte.bit结构的“翻译”,由于是传送给AR地址寄存器,还要对24-31bit进行区域寻址“翻译”。这样,我们得出LAR1中最终的值=DIX3.0。就是说,我们在地址寄存器AR1中存储了一个指针,它指向DIX3.0。
-----------------------------
L MD100
LAR1
这段语句,是直接把MD100的值传送给AR,当然也要经过“翻译”,结果AR1=1.0。就是说,我们在地址寄存器AR1中存储了一个指针,它指向1.0,这是由MD100直接赋值的。
似乎,两段语句,只是赋值给AR1的结果不同而已,其实不然。我们事先假定的值是考虑到对比的关系,特意指定的。如果MD100=CHex的呢?
对于前一段,由于CHex=1100,其0-3bit为非0,程序将立即出错,无法执行。(因为没有MD1.4这种地址!!)
后一段AR1的值经过翻译以后,等于1.4,程序能正常执行。
SMIATIC S7-300 是模块化微型PLC,满足中、小规模的性能要求
模块化与无风扇设计,易于实现分布式结构以及用户友好的操作,使得 SIMATIC S7-300 成为中、小规模应用中各种不同控制任务的经济、方便的解决方案。
SIMATIC S7-300 的应用领域包括:
一系列具有不同功率范围的CPU,以及具有很多用户友好功能的一系列扩展模块,可以使用户根据不同的应用情况选择相应的模块。 如果控制任务需要扩展,可以随时使用附加模块对控制系统进行扩展。
SIMATIC S7-300 是一个通用的控制器。
S7-300采用模块化结构设计。含有多种模块,可进行单独组合。
一个系统包含下列组件:
根据客户需要,还可以使用以下设备:
简单的结构使得S7-300使用灵活且易于维护:
如果用户的自动化任务需要 8 个以上的 SM、FM 或 CP 模块插槽时,则 S7-300(除 CPU 312 和 CPU 312C 外)可以扩展:
S7-300 具有不同的通讯接口:
SIMATIC S7-300 通过通讯处理器或通过内置的 PROFIBUS DP 接口CPU连接到 PROFIBUS DP 总线系统。带 PROFIBUS DP 主/从接口的 CPU 可以进行分布式自动化结构,可以高速通讯并且易于使用。
从用户的角度来看,PROFIBUS DP上的分布式I/O处理与集中式I/O处理没有区别(相同的组态,编址及编程)。
以下设备可作为主站连接:
由于性能原因,每条链路上主站的数量限制为2个。
以下设备可作为从站连接:
尽管配有 STEP 7 的编程设备/PC 或 OP 在总线上可作为主站使用,但是通过 PROFIBUS DP 也可以部分运行 MPI 功能。
SIMATIC S7-300 通过通讯处理器或通过配备集成 PROFINET 接口的 CPU 连接到 PROFINET IO 总线系统。配备 PROFINET 接口的 CPU 可实现高速、易于使用的分布式自动化组态。
从用户的角度来看,通过 PROFINET IO 进行通讯的分布式 I/O 可作为中央 I/O(相同的组态、寻址和编程)。
可将下列设备作为 IO 控制器进行连接:
可将下列设备作为 IO 设备进行连接:
对于 S7-300,通讯处理器(CP 342-2)适用于AS-Interface总线,可用来连接到现场设备(AS-Interface从站)。
更多信息,请参见通讯处理器说明.
点到点连接是用来建立经济有效的数据通讯方式,通过 CP 340/CP 341 通讯处理器或集成在CPU 313C-2 PtP 或 CPU 314C-2 PtP的内置接口进行数据通讯。有三种传输接口支持不同的通讯协议:
可以连接以下设备:
通讯功能块随手册一起提供。
MPI(多点接口)是集成在 SIMATIC S7-300 CPU 上的通讯接口。它能用于简单的网络任务。
SIMATIC S7-300 通过 CP 342 和 CP 343 通讯处理器可以连接到 PROFIBUS 和工业以太网总线网络。
可以连接以下设备:
概述
S7-300是模块化小型PlC系统,能满足中等性能要求的应用。其模块化结构设计使得各种单独的模块之间可进行广泛组合以用于扩展。
系统组成
中央处理单元(CPU):各种CPU有不同的性能,例如,有的CPU上集成有PROFIBUS—DP通讯接口等。
信号模块(SM):用于数字量和模拟量输入/输出。
通讯处理器(CP):用于连接网络和点对点连接。
功能模块(FM):用于高速计数,定位操作(开环或闭环定位)和闭环控制。
负载电源模块(PS):用于将SIMATICS7—300连接到120/230V交流电源,或24/48/60/110V直流电源。
接口模块(1M):用于多机架配置时连接主机架(CR)和扩展机架(ER)。S7—300通过分布式的主机架(CR)和3个扩展机架(ER),可以操作多达32个模块。运行时无需风扇。
SIMATICS7—300适用于通用领域:高电磁兼容性和强抗振动,冲击性,使其具有最高的工业环境适应性。
功能
SIMATICS7—300的大量功能能够支持和帮助用户进行编程、启动和维护,其主要功能如下:
高速的指令处理:0.1—0.6u s的指令处理时间在中等到较低的性能要求范围内开辟了全新的应用领域。
浮点数运算:用此功能可以有效地实现更为复杂的算术运算。
方便用户的参数赋值:一个带标准用户接口的软件工具给所有模块进行参数赋值。
人机界面(HMl):方便的人机界面服务已经集成在S7—300操作系统内、因此人机对话的编程要求大大减少。
SIMATIC人机界面(HMl)从S7—300中取得数据,S7-300按用户指定的刷新速度传送这些数据。S7-300操作系统自动地处理数据的传送。
诊断功能:CPU的智能化的诊断系统连续监控系统的功能是否正常、记录错误和特殊系统事件(例如:超时、模块更换等)。
口令保护:多级口令保护可以使用户高度、有效地保护其技术机密,防止未经允许的复制和修改,操作方式选择开关:操作方式选择开关像钥匙一样可以拔出,当钥匙拔出时,就不能改变操作方式。这样就防止非法删除或改写用户程序。
通讯
这是一个经济而有效的解决方案;方便用户的STEP7的用户界面提供了通讯组态功能,这使得组态非常容易、简单。
SIMATICS7—300具有多种不同的通讯接口:多种通讯处理器用来连接AS—I接口和工业以太网总线系统;串行通讯处理器用来连接点到点的通讯系统;多点接口(MPl)集成在CPU中,用于同时连接编程
器、PC机、人机界面系统及其他SIMATICS7/M7/C7等自动化控制系统。CPU支持下列通讯类型:
过程通讯:通过总线(AS—I或Pronbus)对I/O模块周期寻址(过程映象交换)。
数据通讯:在自动控制系统之间、人机界面(HMl)和几个自动化功能块间相互调用。
S7—300新模块
S1MATIC S7—300产品系列又推出了几种新的模块,这些模块扩大了用户的选择范围,为更多的应用带来了便利和可能。新推出的模块有以下几种:
▲PS305电源模块:24—110V DC输入、24VDC/2A输出,环境条件扩展型。
▲CPU3141FM中央处理单元新增一种可外插存储器卡的模块、该模块需STEP7V5.OSP3以上版本支持。
▲SM321数字量输入模块:48—125VDC,环境条件扩展型。
▲SM322数字量输出模块:48—125VDC/1.5A、环境条件扩展型。
▲SM331热电阻/电阻输入模块,分辨率24位。
▲SM331热点偶输入模块,分辨率24位。
▲SM3354人/4出模拟输入/输出模块,背板总线隔离,诊断与中断功能。
▲SM338超声波位置解码器,可连4个超声波位置传感器,最多8个测量点。
▲CM35计数器模块,8通道计数,最大10KHz,
▲CP343—lIT通讯模块,10/100Mbps工业以太网,Web服务器,WWW网页,E—mail发送功能。