PLC实现入栈出栈功能(SCL)
PLC实现入栈出栈功能(SCL
- 引言
- 功能需求
- 准备工作
- 入栈
- PLC程序
- 出栈
- PLC程序
- 触摸屏画面程序
- 源程序
引言
之前用梯形图实现了PLC入栈出栈功能,这次使用SCL来实现此功能。
功能需求
使用西门子PLC实现入栈出栈的功能,出入栈顺序为先入先出
准备工作
- 创建FC块。入栈和出栈两个FC块
- 创建全局DB块(Function11DB)。全局DB块数据结构如下:
名称 | 数据类型 | 偏移量 |
---|---|---|
入栈按钮 | $1600 | 0.0 |
出栈按钮 | $12 | 0.1 |
待入栈数据 | $1 | 2.0 |
出栈数据 | $1 | 4.0 |
Data | Array[1…10] of Int | 6.0 |
- 新增HMI,用于画面仿真测试
入栈
PLC程序
- 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程序
- FC块增加临时变量
- 程序段
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;
触摸屏画面程序
- 入栈数据,在画面增加输入输出域,然后管理Data数组中的变量。目前入栈数据一共有10个,因此只需依次关联变量就行
- 待入栈数据。关联DB块中的待入栈数据
- 入栈按钮,在事件中释放添加函数脚本置位位,关联DB块中的入栈按钮
- 出栈数据。关联DB块中的出栈数据
- 出栈按钮。在事件中释放添加函数脚本置位位,关联DB块中的出栈按钮
源程序
PLC实现入栈出栈功能(SCL)相关推荐
- PLC实现入栈出栈功能
入栈出栈 实现需求 准备工作 入栈 PLC程序 仿真效果 出栈 PLC程序 仿真效果 源程序 实现需求 使用西门子PLC实现入栈出栈的功能,出入栈顺序为先入先出 准备工作 创建FC块.入栈和出栈两个F ...
- 【Android 逆向】x86 汇编 ( push / pop 入栈 / 出栈 指令 | ret / retn 函数调用返回指令 | set 设置目标值指令 )
文章目录 一.push / pop 入栈 / 出栈 指令 二.ret / retn 函数调用返回指令 三.set 设置目标值指令 总结 一.push / pop 入栈 / 出栈 指令 push / p ...
- 数据结构 - 栈(链表实现栈的入栈出栈)
学完链表和栈,数组模拟栈学完后,自己根据链表写了个链栈,虽然只是简单的实现了入栈出栈遍历.收获还是很大的. 在push这里思考了一会,思路是:传入一个数字,push里创建一个节点node,把数据加入n ...
- Java开发中巧妙使用链表来实现模拟栈的入栈出栈操作
2019独角兽企业重金招聘Python工程师标准>>> 在Java开发中经常会碰到需要你用Java链表来实现入栈出栈的模拟操作,下文就这个操作做了一个详细的描述. 栈:后进先出:最后 ...
- 【数据结构】栈详解——压栈/入栈 | 弹栈/出栈 | 获取栈顶元素
栈 顺序栈 栈的定义 栈(stack)又名堆栈,它是一种运算受限的线性表.限定仅在表尾进行插入和删除操作的线性表.这一端被称为栈顶,相对地,把另一端称为栈底.向一个栈插入新元素又称作进栈.入栈或压栈, ...
- 2023新华为OD机试题 - 入栈出栈(JavaScript) | 刷完必过
华为Od必看博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单 华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典 华为OD机试 全流程解析+经验分享,题型分 ...
- Go语言_数据结构_栈(包括入栈和出栈,表达式的入栈出栈详细过程代码实现)
入栈和出栈代码实现如下: package main import ("fmt""errors" )//使用数组来模拟一个栈的使用 type Stack stru ...
- 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】
刷算法题之前必看 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高. 华为 OD 清单查看地址:https://blog.csdn.net/hihell/categor ...
- 栈的初始化,入栈,出栈,遍历操作(代码实现) [数据结构][Java]
栈的初始化,入栈,出栈,遍历操作(代码实现) 具体代码如下: package com.ffyc.stack;/*** 创建一个栈结构(使用数组实现)*/ public class ArrayStack ...
最新文章
- 详细介绍Vue的数据响应式
- 可删除任意位置数据的堆
- java程序设计输入输出实验_20145320《Java程序设计》第五次实验报告
- aac蓝牙编解码协议_蓝牙音频编码哪个音质好?今天我们来逐一解读
- Python 自动化-pywinauto库定位树结构控件里的树节点实例演示
- Python:更改默认启动的python程序及其对应的安装包路径(更改pip的默认安装包的路径)图文教程之详细攻略
- Unity中的值传递与引用传递
- 327 区间和的个数
- JavaScript权威指南(第5版)pdf
- 【参与开源】J2EE开源项目JEECG快速开发平台,欢迎广大技术爱好者参与,第三期招募新成员
- oracle 段空间收缩,Oracle10g用Shrink Space收缩Oracle数据段
- Ranger-Usersync安装
- SAP License:求职最受欢迎的十大技能
- eclipse导入android项目报错
- 7.java基本数据类型转换包含哪两类?
- 软件测试总结——常见的面试问题(一)
- Excel表VLOOKUP多个条件匹配数据
- 表单验证之 formik 简单用法
- BSP板机支持包、linux启动分析、ARM裸机编程
- Pinyin4j使用手册