西门子S7-1200实现先进先出(FIFO)循环存储

2023-11-11

目录

一、使用数组存储,通过更改存入和取出的索引实现     

使用LAD语言&SCL语言组合实现

1、新建函数块(FB块)

2 、基础变量声明

3、开始写程序

4、完整程序 

 END


一、使用数组存储,通过更改存入和取出的索引实现     

使用LAD语言&SCL语言组合实现

        相对于SCL,使用LAD语言的使用更加的普遍,但是LAD又有它的局限性,因此这里使用LAD和SCL相结合的方式实现这个需求,可以让熟悉LAD语言的工程师更好的理解实现思路。

1、新建函数块(FB块)

                       名称:循环存储(FIFO)

                       语言:LAD                       ​​  ​​      

26efafdf08314b16ad5547c3b4ff64de.png

创建函数块

2 、基础变量声明

        在“循环存储(FIFO)”中声明所需要的基础变量,程序中使用的变量在编写过程中根据需要进行声明即可。

2f89e6f22f99431d9a0e934496780cfc.png

声明基础变量

3、开始写程序

1、写入数据

 1.1 声明变量“写入使能_上升沿存储”8d4c910d1c3b47eba1b68f1967c30322.png

1.2 使用 “CMP<>” 指令先看 “#写入数据” 是否不为空(我们把16#00视为空),满足条件后在 “#写入使能” 的上升沿使用 “MOVE” 指令将 “#写入数据” 的值移动到 “#存储数组[#写入索引]”。数据写入完成后,使用“ADD”加法指令,将 “#写入索引” +1,为下一次写入做准备。

d63d45c13ff6417f93dd3499cd7aaa79.png

写入程序标题

  

2、使用“CMP>”指令,当“#写入索引” 大于“#存储数组”的最大索引时将“#写入索引”重置为“0”,下一次写入数据时将从“#存储数组”的第一个元素开始写入;我们前面声明的数据组最高索引为99,所以这里“CMP>”的 “操作数2 ” 是“99”;

48daedeb28a74d0abe75efb3dbf8d800.png

复位写入索引

3、读取数据

3.1 声明变量“#读取使能_上升沿存储” 

87ba4f98633448449bf9797912c0378d.png

标题声明变量“#读取使能_上升沿存储” 

3.2 在 “#读取使能” 的上升沿,使用 “CMP<>” 指令先看 “#存储数组[#读取索引]”的值是否不为空,满足条件后使用“MOVE”指令,将“#存储数组[#读取索引]”的值移动到“#读取数据”,数据读取完成后,使用“ADD”加法指令,将 “#读取索引” +1,为下一次读取做准备。

c2a0d060e36e472d8dd31ddcfc728efa.png

读取数据

4、使用“CMP>”指令,当“#读取索引” 大于“#存储数组”的最大索引时将“#读取索引”重置为“0”,下一次写入数据时将从“#存储数组”的第一个元素开始写入;我们前面声明的数据组最高索引为99,所以这里“CMP>”的 “操作数2 ” 是“99”;

dad6275f0623498cae6d4c1fe400b894.png

复位读取索引

5、 复位索引和清空数组

5.1 声明变量:

                  复位和清空_上升沿存储
                  复位和清空_FOR起始值
                  复位存储数组的索引值

7bcbb7dda2bd4e0fa2fa96b3b8c6b9ea.png

声明变量

 5.2 插入SCL程序段,在复位数组的过程中使用 “FOR” 效率更高,因此这里我们使用SCL语言;

3364b52b5f5f4e6396b5bb84b96152ae.png

插入SCL程序段

 5.3 使用 “P_TRIG” 指令获取 #复位和清空 信号的上升沿,“P_TRIG”放到程序段中,调用函数选择多重实例

7cb88b1c45fe4d58aa61ffb1ffda3fed.png

P_TRIG 调用函数“多重实例”

5.4 使用“IF”指令,当 “#复位和清空_上升沿存储” 为“1”时,将“ #写入索引、 #读取索引、#复位存储数组的索引值” 的值赋为“0”,然后通过遍历的方式将“#存储数组”所有元素赋值为“16#00”. 

db018bd62210404dbe9c5cf232b65921.png

复位和清空程序

4、完整程序 

1、变量表

caf488cbc6ba4f858dd0038cafe4f9e3.png

变量表

 2、程序

06f74270979a4032ade5ab7d7883b365.png 7fbc4a33d54c4f05bac04efc3e0c759b.png

 END

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

西门子S7-1200实现先进先出(FIFO)循环存储 的相关文章

随机推荐

  • vcruntime140_1.dll丢失怎样修复,推荐4个vcruntime140_1.dll丢失的修复方法

    vcruntime140 1 dll文件是Microsoft Visual C Redistributable for Visual Studio 2015运行库的一部分 它是一个用于支持Visual C 构建的应用程序的系统文件 这个文件
  • Jmeter调试脚本之断言

    前言 jmeter中有个元件叫做断言 Assertion 它的作用和loadrunner中的检查点类似 用于检查测试中得到的响应数据等是否符合预期 用以保证性能测试过程中的数据交互与预期一致 使用断言的目的 在request的返回层面增加一
  • [Excel VBA]快捷键如何设置?

    本文翻译至 http itpro nikkeibp co jp atcl column 15 090100207 090100146 Application OnKey 键 函数名 执行Application对象的OnKey方法就可以设定宏
  • java中的异步处理和Feature接口(一)

    文章目录 背景介绍 Feature接口 Feature接口和Tread的区别 Feature接口示例 Feature接口的局限性 背景介绍 想象这样一个场景 你可能希望为你的法国客户提供指定主题的热点报道 为实现这一功能 你需要向 谷歌或者
  • 数据的截断

    将一个w位的数据截断为k位的数据 1 对于无符号的数据 num 的转换 num Mod pow 2 k 例如 pre class cpp span span unsigned short x 257 unsigned char p x 1
  • 笔记本GTX1050(计算能力6.1)安装cuda11.0+cudnn8.2(for cuda 11.x)+pycharm tensorflow-gpu2.4.0错误排除

    我最先下载的是最新的cuda11 4 1以及tf gpu2 5 0 后来因为觉得版本太高才降低了版本 这三者的版本对应很重要 比如tf2 5 0就不能用cuda11 我才降的级 这里主要说几个坑 截止到2021 8 最新的cuda11 4
  • html checked属性值,HTML复选框的checked属性的值是多少?

    8种机械键盘轴体对比 本人程序员 要买一个写代码的键盘 请问红轴和茶轴怎么选 我们都知道如何在HTML中构成复选框输入 我不知道 选中复选框的技术上正确的值是多少 我已经看到了这些工作 答案是无关紧要的 我没有看到答案标记为正确的证据 这里
  • elementUI-新增,编辑,详情组件

  • oracle的 分表 详解 -----表分区

    此文从以下几个方面来整理关于分区表的概念及操作 1 表空间及分区表的概念 2 表分区的具体作用 3 表分区的优缺点 4 表分区的几种类型及操作方法 5 对表分区的维护性操作 1 表空间及分区表的概念 表空间 是一个或多个数据文件的集合 所有
  • 1分钟解决Prim算法构造最小生成树

    数据结构期末上分必备 前言 Prim 算法构造最小生成树 跟着画一遍就会了 Kruskal 请移步 kruskal 题目 设有如下图所示的无向连通图 从顶点A出发 使用 Prim 算法构造最小生成树 依次画出每次挑选出的边及权值 题解 从顶
  • 评估指标 -- Precision(查准率), Recall(查全率)和F1 score; PR曲线和mAP; ROC曲线和AUC

    Precision Recall 和 F1 score Precision 查准率 精确率 Recall 查全率 召回率 查准率和查全率是互相影响的 理想情况是希望两者都高 但是一般情况下查准率高 查全率就低 查全率高 查准率就低 如果是做
  • 蓝桥杯---算法训练 大等于n的最小完全平方数(Java解法)

    题目 问题描述 输出大等于n的最小的完全平方数 若一个数能表示成某个自然数的平方的形式 则称这个数为完全平方数 Tips 注意数据范围 输入格式 一个整数n 输出格式 大等于n的最小的完全平方数 样例输入 71711 样例输出 71824
  • 组合模式-

    定义 也称为整体 部分模式 它的宗旨是通过将单个对象 叶子节点 和组合对象 树枝节点 用相同的接口进行表示 适用场景 1 希望客户端可以忽略组合对象与单个对象的差异时 2 对象层次具备整体和部分 呈树形结构 如树形菜单 操作系统目录结构 公
  • 电脑只能登录微信?但却打不开网页?不能上网怎么办?ip地址和DNS出问题了无法上网怎么办?

    描述一下问题 昨天使用了一些代理梯子 直接关机 没有关闭那个软件 今天打开电脑就出问题了 只能登录微信 但却打不开网页 今天查了很多资料都没有解决 花了2个多小时 终于可以上网了 解决办法 找到 控制面板 网络和Internet 里面的 网
  • 计算机的桌面的路径,如何设置电脑保存路径在桌面上?

    我们在使用电脑时一般都会把系统安装到C盘 而很多的桌面图标也随之产生在C盘 当桌面文件越来越多是 不仅影响开机速度 同 时我们的电脑会很卡 当系统崩溃需要重装电脑时 我们总是要通过各种办法备份桌面 如果我们把桌面路径改到其他盘符 这些烦恼就
  • 2021-06-30 暑期实训开发日志3——山大云服务器配置anaconda pytorch

    暑期实训开发日志3 山大云服务器配置anaconda pytorch 一 安装anaconda 1 获取Anaconda安装脚本 2 安装 3 环境配置 二 creat新环境并连接pycharm 三 下载pytorch 可能会遇到的问题和解
  • giaogiao教你用c语言在屏幕上打印各种图案

    今天我们用c语言来实现在屏幕上打印用 组成的图案 首先呢 我们从简单的开始 输出自定义行数的矩形 我定义了三个变量 用for循环做了一个嵌套 用n来限制i j 从而控制输出图案的大小 搞定 你看我屌么 哈哈哈哈 这只是开始 我试试来输出自定
  • win8.1 pro-64位下安装配置MinGW—64位

    1 下载MinGW w64位 http mingw w64 org doku php 点击Downloads 说明 这边使用的是在线安装方式 在网站里可以看到他安装后的文件夹 2 安装 运行mingw w64 install exe 欢迎界
  • 如何使用QMessageBox(用法举例)

    如何使用QMessageBox 用法举例 QMessageBox是Qt编程中常用的类 使用方便 下面给出该类的普通用法实例 希望对你有所帮助 1 包含头文件 include
  • 西门子S7-1200实现先进先出(FIFO)循环存储

    目录 一 使用数组存储 通过更改存入和取出的索引实现 使用LAD语言 SCL语言组合实现 1 新建函数块 FB块 2 基础变量声明 3 开始写程序 4 完整程序 END 一 使用数组存储 通过更改存入和取出的索引实现 使用LAD语言 SCL