zoukankan      html  css  js  c++  java
  • 西门子PLC学习笔记六-(Step7指令简单介绍)

    1.指令操作数

    指令操作数由操作标示符和參数组成。

    操作标识符由主标识符和辅标识符组成。

    主标识符有:I(输入过程影像寄存器)、Q(输出过程映像寄存器)、M(位寄存器)、PI(外部输入寄存器)、PQ(外部输出寄存器)、T(定时器)、C(计数器)、DB(数据块寄存器)、L(本地数据寄存器)

    辅助标识符有:X(位)、B(字节)、W(字或2B)、D(2DW或4B)

    具体介绍能够參看下图:


    2.寻址方式

    S7-300的4种寻址方式有:

    1)马上寻址

    马上寻址是对常数或常量的寻址方式。样例例如以下:

    L66 				//表示把常数66装入累加器1中
    AW W#16#168 	//将16进制数168与累加器1的低字进行“与”运算
    SET				//默认操作数为RLC,该指令实现对RLO置“1”操作

    2)存储器直接寻址

    直接寻址指在指令中直接给出操作数单元地址。

    存储单元地址可用符号地址(如“sb1_start”等)或绝对地址(如“I0.0"、"Q4.1”等)。

    样例例如以下:

    A I0.0 //对输入位I0.0运行逻辑“与”运算
    = Q4.1 //将逻辑运算结果送给输出继电器Q4.1
    L MW2 //将存储字MW2的内容装入累加器1
    T DBW4 //将累加器1低字中的内容传送给数据字DBW4

    3)存储器间接寻址

    间接寻址指:在指令中以存储器的形式给出操作数所在存储单元的地址。在指令中一般写在“[]”中,採用地址指针,地址指针在地址范围小于65535的存储器中能够使用字指针;而其它的存储器则须要使用双字指针。比如:

    A.存储器地址单字节地址指针寻址

    OPN DB[MW0] //打开数据块,若MW0为1,则就是打开DB2.MW0的改变。则打开的数据块儿也改变
    B.存储器地址双字节地址指针寻址

    L P#8.7 //把指针值装载到累加器

    //P#8.7的指针值为:2#0000_0000_0000_0000_0000_0000_0100_0111

    T [MD2] //把指针值送到MD2

    A I[MD2] //查询I8.7的信号状态

    = Q[MD2} //给出输出位Q8.7赋值

    4)寄存器间接寻址

    寄存器间接寻址指通过地址寄存器和偏移量间接获取操作数,地址寄存器和偏移量需写在“[]”中。S7-300中有两个地址寄存器AR1、AR2。

    地址寄存器地址有两种格式,其长度均为双字。格式例如以下:


    位24~26 地址指针区域标识位的含义:


    A.区内寄存器间接寻址

    该寻址对于哪个存储区寻址需明白给出。

    L	P#3.2	//将间接寻址的指针装入累加器1
    			//P#3.2的指针值为:2#0000_0000_0000_0000_0000_0000_0001_1010
    LAR1        //将累加器1的内容送入地址寄存器AR1
    			//AR1的指针值为:2#0000_0000_0000_0000_0000_0000_0001_1010
    A 	I[AR1,P#5.4]	//P#5.4的指针值为:2#0000_0000_0000_0000_0000_0000_0010_1100
    				//AR1与偏移量相加结果:2#0000_0000_0000_0000_0000_0000_0100_0110
    				//对输入位I8.6进行逻辑“与”操作
    =	Q[AR1,P#1.6] //P#1.6的指针值为:2#0000_0000_0000_0000_0000_0000_0000_1110
    				//AR1与偏移量相加结果:2#0000_0000_0000_0000_0000_0010_1000
    				//对输出位Q5.0进行赋值操作
    B.区域间寄存器间接寻址

    该选择通过区域标识位26~24位确定。

    L	P#I8.7	//把指针值及存储区域标识装载到累加器1
    			//P#I8.7的指针值为:2#1000_0001_0000_0000_0000_0000_0100_0111
    LAR1		//把存储区域I和地址8.7装载到AR1
    L	P#Q8.7	//把指针值和地址标识符装载到累加器1
    		//P#Q8.7的指针值:2#1000_0010_0000_0000_0000_0000_0100_0111
    LAR2		//把存储区域Q和地址8.7装载到AR2
    A	[AR1,P#0.0]	//查询输入位I8.7的信号状态(偏移量0.0不起作用)
    =	[AR2,P#1.2]	//输出位Q10.1赋值
    3.CPU中的寄存器

    1)累加器(ACCUx)

    累加器用于处理字节、字、双字寄存器。S7-300有2个32位累加器(ACCU1、ACCU2)。

    S7-400有4个32位的累加器(ACCU1~ACCU4)。数据放在累加器的低位(右对齐)。

    2)状态字



  • 相关阅读:
    Nodejs学习(四)- express目录的分析
    为什么越来越多人选择小而美的公司?
    想要惊艳面试官?你一张嘴就输了
    别装了,你根本就不想变成更好的人
    大学生工资160元,不合情是否合理?
    你还能陪父母多久?
    为什么越来越多人选择小而美的公司?
    考上研后的生活居然是这样的…
    以钻石为灵感的 LOGO 设计作品
    关于JavaScript数组,你所不知道的3件事
  • 原文地址:https://www.cnblogs.com/mthoutai/p/7162374.html
Copyright © 2011-2022 走看看