编写程序 在I1.2 的上升边沿 触发 MW8+1的程序

实现方式1 M1.1 为中间变量

对应的STL语句表

执行结果 OK 已经仿真 。

现在尝试第2种方法

实现方式2:

M1.1也是中间变量

STL语句表实现方式

第2种方法 运行 仿真 OK

有了上面 实现方式1 实现方式2 的基础 进行扩展训练。

P86页 10 题

编写程序 在 I0.0 的上升边沿 将MW10~MW58 清零。

编写以上程序 还需要了解:

装载指令L 定义 将累加器1的原有内容保存到累加器2 ,并将累加器1复位为0,然后将

被寻址的字,字节。双字,装载进累加器1

传送指令T 定义 将累加器1内容传送(复制)到目标地址,累加器1中的内容不变,被复制的内容的长度取决于累加器的目的地址。

编写该程序 用到的知识点 联系起来了 。

  1. 指针间接寻址方式
  2. 循环指令
  3. 跳转指令
  4. 上升边沿触发指令

    此外还需要以下知识点:

    1. 首先要清楚 STL语句依赖于累加器,累加器是32位。16位的话,只用到累加器的低字。
    2. 以下的寻址方式最好背过。

      L -35 //将16位整数-35装载到累加器1的低字。

      L L#5 //将32位双整形数装载到累加器1的低字和高字。

      L W#16#3E4F //将16进制常数字装载到累加器1的低字。

      L 25.38 //将32位浮点数常数装载到累加器1

      L5T#2S //将16位S5T定时器常数装载到累加器1的低字。

      L P#10.0 //将32位内部区域指针装载到累加器1

      (3)16位地址指针怎么用?

      答:例如 定时器,计数器,DB ,FB 和FC 地址编号都小于65535

      举例 用指针访问定时器

      用16位的MW8 存放地址指针。

      则程序以及注释如下:

      L 3 //将16位的整数3 装载到累加器1 的低字。

      T MW 8 //将累加器1的内容传送给目标地址MW8 被复制的数据的字节数取决于目的地址的长度,此时 累加器是32位累加器 累加器的低字存放的是3 高字存放的是0 。

      因为传送指令的目标地址是MW8 是16位。

      故将累加器1的低字 给MW8

    程序如下:

    A I 0.0 //母线上挂 输入0.0

    FP M 1.1 //上升边沿检测指令

    JNB _001 //JNB指令用来判断 "FP M 1.1"指令执行以后,状态字的RLO 位。

    而状态字中的状态位RLO 表示位逻辑指令 或者 比较指令 执行的结果

    其中 JNB 表示 RLO=0 时跳转,同时 将RLO复制到BR BR 等同于梯形图中指令模块的EN0 输出。

    JCB表示 RLO=1时跳转,同时将RLO的值复制到BR

    L W#16#0 //装载指令 将16进制常数字0 装载到累加器1低字

    T MW 10 //将累加器1 (值为0)传送给MW10

    L P#10.0 // 将指针常量 10.0 赋予给累加器1

    T LD 24 //将累加器1 的值赋予给地址临时变量 LD24

    L 10 //将16位整数10 装载到 累加器1 的低字

    BACK: T LW 32 //传送指令 将累加器1的低字 传送给LW32

    //LW 32 作为循环计数器

    //这一指令很重要 必须把循环计数器暂存起来,因为在后//面的 LOOP 指令中 需要把LW32给累加器1 。

    //LOOP指令过程为:每次执行LOOP指令时,累加器1的低字节减去1,根据减1后,累加器是否为0,决定是否执行循环体

    L W#16#0 //将0装载到累加器的低字。

    T MW [LD 24] // 将累加器1的低字,付给间接寻址的

    MW[LD 24] , LD24是指针变量。

    L LD 24 // 将指针变量里面的地址 放进 累加器1中

    L P#2.0 // 装载指令,将累加器1的值付给累加器2

    //同时将累加器1清0,将指针常量2.0付给累加器1

    //为什么是2.0 ?

    //指针值增加两个字节,指针指到下一个字。

    +D //将累加器和累加器2相加 结果放进累加器1中

    T LD 24 //传送指令,将累加器1中的值 传送给临时

    //指针变量 LD24

    //所以 MW[LD24] 指向了下一个字

    L LW 32 // 将临时循环计数器LW 32 赋给累加器1

    LOOP BACK //跳转指令

    _001: NOP 0 //_001 是JNB指令 跳转的网络标号。

    完整的程序(不带注释)

    程序的调试方法:

    既然是上升边沿 清除 MW10~MW58 的内容 实际清楚的是

    MW10 MW12 MW14 MW16 MW18

    MW20 MW22 MW24 MW26 MW28

    MW30 MW32 MW34 MW 36 MW 38

    MW 40 MW 42 MW44 MW46 MW48

    MW50 MW52 MW54 MW56 MW58

    共25个字

    我新建立VAT_1 变量表 ,然后可以实时的修改表格变量里面的值日

    观察 指令 执行结果

    建立变量表的方法:

    SIMATIC 管理器 ----插入-----S7块-----变量表 默认名是VAT_1

    我设置了清空了10个变量 。我VAT_1表如下:

    执行清空10个指令以后 (这清空10个字的指令从 MW10 开始)

    一次是MW10 MW12 MW14 MW16 MW18 MW20 ….

    程序 已经录制作成视频 观看

I0.0 上升边沿 清空 MW10~MW58 联系多个知识点融合的更多相关文章

  1. Vulkan(0)搭建环境-清空窗口

    Vulkan(0)搭建环境-清空窗口 认识Vulkan Vulkan是新一代3D图形API,它继承了OpenGL的优点,弥补了OpenGL的缺憾.有点像科创板之于主板,歼20之于歼10,微信之于QQ, ...

  2. Flume官方文档翻译——Flume 1.7.0 User Guide (unreleased version)中一些知识点

    Flume官方文档翻译--Flume 1.7.0 User Guide (unreleased version)(一) Flume官方文档翻译--Flume 1.7.0 User Guide (unr ...

  3. 【翻译】XV6-DRAFT as of September 3,2014 第0章 操作系统接口

    操作系统接口 操作系统的任务是让多个程序共享计算机(资源),并且提供一系列基于计算机硬件的但更有用的服务.操作系统管理并且把底层的硬件抽象出来,举例来说,一个文字处理软件(例如word)不需要关心计算 ...

  4. 清空stringbuilder

    大家知道对于字符串频繁拼接是使用stringbuilder.Append方法比使用string+=方法效率高很多,但有时需要清空stringbuilder时却不知道怎么清空,因为它没有clear或em ...

  5. 清空StringBuilder的三种方法及效率

    清空StringBuilder的三种方法及效率 大家知道对于字符串频繁拼接是使用stringbuilder.Append方法比使用string+=方法效率高很多,但有时需要清空stringbuilde ...

  6. 前端实现搜索历史和清空历史(angularjs+ionic)

    要实现的页面效果: 1.显示历史搜索, 2.最近搜索的排在最前, 2.最多显示8条历史 4.清空历史记录 思路: 1.首先显示历史记录需要一个数组searchItems,通过ng-repeat显示每一 ...

  7. js删除数组元素、清空数组的简单方法

    一.清空数组 ? 1 2 3 var ary = [1,2,3,4]; ary.splice(0,ary.length);//清空数组 console.log(ary); // 输出 [],空数组,即 ...

  8. iOS UI基础-19.0 UICollectionView

    直接上代码,说明请看注释吧 1.继承三个代理 UICollectionViewDataSource,UICollectionViewDelegate,UICollectionViewDelegateF ...

  9. C#.NET常见问题(FAQ)-如何清空stringbuilder

    就红色的代码可以: System.Text.StringBuilder sb = new System.Text.StringBuilder(); sb.Append("hello" ...

随机推荐

  1. SPI接口的FLASH

    SPI flash W25Qxx: W25Q系列的spiflash.每页(Page)256B,每16个page为一个sector(扇区=4KB),每16个扇区为一个block(块=64KB) W25Q ...

  2. 树莓派4B踩坑指南 - (3)无显示器连接

    无显示器连接 WiFi:如果是原装系统,直接修改wpa_supplicant.conf文件后,放入boot即可(一定注意ssid名称不要写错!!惨痛教训T^T) SSH:在boot盘下新建一个 SSH ...

  3. [经验] Java Web 项目怎么部署到 Linux 系统上

    废话少说, 直奔主题 第一步: 将 web 项目打成 war 包 1: 打开项目的 pom.xml 文件 如果是迭代后的项目, 记得修改项目的版本号, 这里我的是第二版所有就把 1 改成了 2 2: ...

  4. 「CH6202」黑暗城堡

    「CH6202」黑暗城堡 传送门 这道题是要让我们求以点 \(1\) 为源点的最短路树的方案数. 我们先跑一遍最短路,然后考虑类似 \(\text{Prim}\) 的过程. 当我们把点 \(x\) 加 ...

  5. Django学习之ORM练习题

    一.表关系 创建表关系,并创建约束 班级表:class 学生表: student cid caption grade_id sid sname gender class_id 1 一年一班 1 1 乔 ...

  6. 设计模式课程 设计模式精讲 17-2 模板方法模式coding

    1 代码演练 1.1 代码演练1 1.2 代码演练2(后端课程子类运用钩子方法,加入写手记的方法) 1.3 代码演练3(前端有多个子类,有得需要写手记,有得不需要写,如何实现?) 1 代码演练 1.1 ...

  7. python基本输入输出函数与变量类型

    7.python具有三个重要的输出输入函数:print(输出)/eval(转换)/input(输入): 8.对于输出函数print函数的具体使用规则如下:(1)输出字符串:print("字符 ...

  8. 二、多线程基础-乐观锁_悲观锁_重入锁_读写锁_CAS无锁机制_自旋锁

    1.10乐观锁_悲观锁_重入锁_读写锁_CAS无锁机制_自旋锁1)乐观锁:就像它的名字一样,对于并发间操作产生的线程安全问题持乐观状态,乐观锁认为竞争不总是会发生,因此它不需要持有锁,将 比较-设置 ...

  9. 算法:辗转相除法求最大公约数(C语言实现)

    辗转相除法,一种求最大公约数的算法 已知:A / B = C ······ R  (A.B.C.R皆是整数) 假设:D是A的余数,D也是B的余数,那么D就是A和B的公约数 D是A和B的约数,则A和B是 ...

  10. 深度解析标点符号在Report写作中的应用

    准确的标点符号和大写字母可以帮助Tutor准确理解report的意思.标点符号的某些方面,例如使用逗号,可以是一种个人风格,在引号中正确的标点符号是至关重要的.在前面的一些文章当中我们也给大家说了re ...