PLC实现入栈出栈功能(SCL

  • 引言
  • 功能需求
  • 准备工作
  • 入栈
    • PLC程序
  • 出栈
    • PLC程序
  • 触摸屏画面程序
  • 源程序

引言

之前用梯形图实现了PLC入栈出栈功能,这次使用SCL来实现此功能。

功能需求

使用西门子PLC实现入栈出栈的功能,出入栈顺序为先入先出

准备工作

  1. 创建FC块。入栈和出栈两个FC块
  2. 创建全局DB块(Function11DB)。全局DB块数据结构如下:
名称 数据类型 偏移量
入栈按钮 $1600 0.0
出栈按钮 $12 0.1
待入栈数据 $1 2.0
出栈数据 $1 4.0
Data Array[1…10] of Int 6.0
  1. 新增HMI,用于画面仿真测试

入栈

PLC程序

  1. FC块增加临时变量

    2.程序段
IF "Function11DB".入栈按钮 THEN#循环次数 := 10;#数据长度 := 2;#起始地址 := 6;WHILE #循环次数 > 1 DO#读取数据 := PEEK_WORD(area := 16#84,  //代表数据块 dbNumber := 1100,       // DB号byteOffset := (#循环次数 - 1) * #数据长度 + #起始地址 - #数据长度); POKE(area := 16#84,dbNumber := 1100,byteOffset := #循环次数 * #数据长度 + #起始地址 -#数据长度,value := #读取数据);  //待写入数据#循环次数 := #循环次数 - 1;
END_WHILE;
//将待入栈数据写入到栈数据中POKE(area := 16#84,dbNumber := 1100,byteOffset := #起始地址,value :="Function11DB".待入栈数据);   //待写入数据// Statement section IF
"Function11DB".入栈按钮 := 0;
END_IF;

出栈

PLC程序

  1. FC块增加临时变量
  2. 程序段
IF "Function11DB".出栈按钮 THEN#循环次数 := 1;#数据长度 := 2;#起始地址 := 6;POKE(area := 16#84,dbNumber := 1100,byteOffset := 4,                   // 出栈数据地址value := "Function11DB".Data[1]);WHILE #循环次数 < 10 DO#读取数据 := PEEK_WORD(area := 16#84,  //代表数据块 dbNumber := 1100,       // DB号byteOffset := (#循环次数+1) * #数据长度 + #起始地址 - #数据长度);POKE(area := 16#84,dbNumber := 1100,byteOffset := #循环次数 * #数据长度 + #起始地址 - #数据长度,value := #读取数据);  //待写入数据#循环次数 := #循环次数 + 1;IF #循环次数 = 10 THEN"Function11DB".Data[10] := 0;END_IF;END_WHILE;//将待入栈数据写入到栈数据中//待写入数据// Statement section IF"Function11DB".出栈按钮 := 0;
END_IF;

触摸屏画面程序

  1. 入栈数据,在画面增加输入输出域,然后管理Data数组中的变量。目前入栈数据一共有10个,因此只需依次关联变量就行
  2. 待入栈数据。关联DB块中的待入栈数据
  3. 入栈按钮,在事件释放添加函数脚本置位位,关联DB块中的入栈按钮
  4. 出栈数据。关联DB块中的出栈数据
  5. 出栈按钮。在事件释放添加函数脚本置位位,关联DB块中的出栈按钮

源程序

PLC实现入栈出栈功能(SCL)相关推荐

  1. PLC实现入栈出栈功能

    入栈出栈 实现需求 准备工作 入栈 PLC程序 仿真效果 出栈 PLC程序 仿真效果 源程序 实现需求 使用西门子PLC实现入栈出栈的功能,出入栈顺序为先入先出 准备工作 创建FC块.入栈和出栈两个F ...

  2. 【Android 逆向】x86 汇编 ( push / pop 入栈 / 出栈 指令 | ret / retn 函数调用返回指令 | set 设置目标值指令 )

    文章目录 一.push / pop 入栈 / 出栈 指令 二.ret / retn 函数调用返回指令 三.set 设置目标值指令 总结 一.push / pop 入栈 / 出栈 指令 push / p ...

  3. 数据结构 - 栈(链表实现栈的入栈出栈)

    学完链表和栈,数组模拟栈学完后,自己根据链表写了个链栈,虽然只是简单的实现了入栈出栈遍历.收获还是很大的. 在push这里思考了一会,思路是:传入一个数字,push里创建一个节点node,把数据加入n ...

  4. Java开发中巧妙使用链表来实现模拟栈的入栈出栈操作

    2019独角兽企业重金招聘Python工程师标准>>> 在Java开发中经常会碰到需要你用Java链表来实现入栈出栈的模拟操作,下文就这个操作做了一个详细的描述. 栈:后进先出:最后 ...

  5. 【数据结构】栈详解——压栈/入栈 | 弹栈/出栈 | 获取栈顶元素

    栈 顺序栈 栈的定义 栈(stack)又名堆栈,它是一种运算受限的线性表.限定仅在表尾进行插入和删除操作的线性表.这一端被称为栈顶,相对地,把另一端称为栈底.向一个栈插入新元素又称作进栈.入栈或压栈, ...

  6. 2023新华为OD机试题 - 入栈出栈(JavaScript) | 刷完必过

    华为Od必看博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单 华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典 华为OD机试 全流程解析+经验分享,题型分 ...

  7. Go语言_数据结构_栈(包括入栈和出栈,表达式的入栈出栈详细过程代码实现)

    入栈和出栈代码实现如下: package main import ("fmt""errors" )//使用数组来模拟一个栈的使用 type Stack stru ...

  8. 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】

    刷算法题之前必看 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高. 华为 OD 清单查看地址:https://blog.csdn.net/hihell/categor ...

  9. 栈的初始化,入栈,出栈,遍历操作(代码实现) [数据结构][Java]

    栈的初始化,入栈,出栈,遍历操作(代码实现) 具体代码如下: package com.ffyc.stack;/*** 创建一个栈结构(使用数组实现)*/ public class ArrayStack ...

最新文章

  1. 详细介绍Vue的数据响应式
  2. 可删除任意位置数据的堆
  3. java程序设计输入输出实验_20145320《Java程序设计》第五次实验报告
  4. aac蓝牙编解码协议_蓝牙音频编码哪个音质好?今天我们来逐一解读
  5. Python 自动化-pywinauto库定位树结构控件里的树节点实例演示
  6. Python:更改默认启动的python程序及其对应的安装包路径(更改pip的默认安装包的路径)图文教程之详细攻略
  7. Unity中的值传递与引用传递
  8. 327 区间和的个数
  9. JavaScript权威指南(第5版)pdf
  10. 【参与开源】J2EE开源项目JEECG快速开发平台,欢迎广大技术爱好者参与,第三期招募新成员
  11. oracle 段空间收缩,Oracle10g用Shrink Space收缩Oracle数据段
  12. Ranger-Usersync安装
  13. SAP License:求职最受欢迎的十大技能
  14. eclipse导入android项目报错
  15. 7.java基本数据类型转换包含哪两类?
  16. 软件测试总结——常见的面试问题(一)
  17. Excel表VLOOKUP多个条件匹配数据
  18. 表单验证之 formik 简单用法
  19. BSP板机支持包、linux启动分析、ARM裸机编程
  20. Pinyin4j使用手册

热门文章

  1. 分享paperpass
  2. QQ交谈、QQ在线状态代码生成…
  3. 无处不在的开源 五十个开源存储软件
  4. 实用java完成万年历的制作
  5. 安科瑞直流电能表DJSF1352的功能特点
  6. ASP必须掌握100个基础
  7. QQ抢红包插件实现,安卓源码,以及详细分析
  8. 【Python学习】爬虫报错处理bs4.FeatureNotFound
  9. 安装perl package
  10. 正则表达式 划分省市区(直辖市和附详细地址包括市,区)