1.指令操作数

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

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

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

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

具体介绍能够參看下图:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmVuZ3NodWl5dWU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" width="700" height="400" alt="">

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)状态字

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmVuZ3NodWl5dWU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" width="480" height="200" alt="">

西门子PLC学习笔记六-(Step7指令简单介绍)的更多相关文章

  1. (转载)西门子PLC学习笔记十五-(数据块及数据访问方式)

    一.数据块 数据块是在S7 CPU的存储器中定义的,用户可以定义多了数据块,但是CPU对数据块数量及数据总量是有限制的. 数据块与临时数据不同,当逻辑块执行结束或数据块关闭,数据块中的数据是会保留住的 ...

  2. 西门子PLC学习笔记二-(工作记录)

    今天师傅给讲了讲做自己主动化控制的总体的思路,特进行一下记录,做个备忘. 1.需求分析 本次的项目是对楼宇循环供水的控制,整个项目须要完毕压力.压差.温度等的获取及显示.同一时候完毕电机的控制. 2. ...

  3. JMeter学习笔记2-图形界面简单介绍

    废话少说直接干活的给: 一.打开和运行JMeter,出现UI界面.如图下所示: 工具栏:常见操作的图标集合,有New(新建), Template(模板) ,Save(保存),Start(开始) ,St ...

  4. 西门子PLC学习笔记七-(位逻辑指令)

    位逻辑指令处理的对象为二进制位信号.存储在状态字"RLO"中. 1.触点与线圈指令 1)常开触点 在PLC中规定:操作数为1,则常开触点"动作(闭合)":操作数 ...

  5. 西门子PLC学习笔记8-(计时器)

    计时器port这包括:信号输入.时间.复位信号.出口.[计时器剩余时间(BI二进制表示法.BCD码表示)其输出被存储MW] 定时器包括::S_PULSE(脉冲定时器).S_PEXT(延时脉冲定时器). ...

  6. 【Android学习笔记】布局的简单介绍

    我在学习Android开发的时候是基于实战项目的,基础理论知识以前也是零散的看过一些,个人还是觉得边做项目边学要快些.现在做的这个项目iOS端是我做的,这样逻辑什么的都很熟悉,于我而言换个平台也只是换 ...

  7. java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)

    java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessCo ...

  8. angular学习笔记(三十)-指令(10)-require和controller

    本篇介绍指令的最后两个属性,require和controller 当一个指令需要和父元素指令进行通信的时候,它们就会用到这两个属性,什么意思还是要看栗子: html: <outer‐direct ...

  9. angular学习笔记(三十)-指令(6)-transclude()方法(又称linker()方法)-模拟ng-repeat指令

    在angular学习笔记(三十)-指令(4)-transclude文章的末尾提到了,如果在指令中需要反复使用被嵌套的那一坨,需要使用transclude()方法. 在angular学习笔记(三十)-指 ...

随机推荐

  1. 公共dao的抽取

    package cn.sxx.dao; import java.util.List; import cn.sxx.model.Dep; import cn.sxx.query.DepQuery; pu ...

  2. java list去重操作实现方式

    Java中的List是可以包含重复元素的(hash code 和equals),接下来将介绍两种方式实现java list去重操作,感兴趣的朋友可以参考下   Java中的List是可以包含重复元素的 ...

  3. MyBatis的动态sql小练习,小回顾

    关键字if+trim trim可以去除多余的关键字,是where和set的组合 trim标记是一个格式化的标记,可以完成set或者是where标记的功能,如下代码: <trim prefix=& ...

  4. Navicat Premium 12破解(转载)

    一.Navicat Premium 12下载 Navicat Premium 12是一套数据库开发管理工具,支持连接 MySQL.Oracle等多种数据库,可以快速轻松地创建.管理和维护数据库. Na ...

  5. java 自动拆箱 自动装箱

    自动装箱的定义就是  基本数据类型赋值给包装类型,  拆箱则相反. Integer integer = 122; // 自动装箱 int num = integer; //自动拆箱 想看一下源码是怎么 ...

  6. HTML、CSS 和 JS框架之Bootstrap

    一.Bootstrap简介: Bootstrap 是最受欢迎的 HTML.CSS 和 JS 框架,用于开发响应式布局.移动设备优先的 WEB 项目. 详细参考内容:Bootstrap_v3 二.Boo ...

  7. activemq常用配置

    所用版本为apache-activemq-5.15.4的版本 修改端口号 当端口号冲突时,可以修改这两个端口号.修改activemq.xml 修改里面的61616端口.修改jetty.xml,修改里面 ...

  8. c++值传递和引用及指针传递区别

    以下程序各有何问题? ***************************************************************************************** ...

  9. hexo干货系列:(五)hexo添加站内搜索

    前言 本来想用百度站内搜索,但是没成功,所以改用swiftype,用起来还是很棒的,这里分享一下我的安装步骤 正文 注册 去swiftype官网注册个账号,然后登陆,对了不要去在意30天试用,30天过 ...

  10. Go切片基础

    package main import "fmt" //切片(Slice)本身没有数据,是对底层Array的一个view //不使用指针就可以改数组内容 //slice可以向后扩展 ...