当前位置: 首页 > news >正文

S7-1500——(一)西门子PLC编程从入门到精通4、SCL间接寻址

SCL间接寻址

  • 一,间接寻址概述
    • 1,SCL间接寻址概述
      • 1.1,直接寻址
      • 1.2,间接寻址
    • 2,Pointer 及 Any 指针
    • 3,PEEK 及 POKE 指令
  • 二,数组指针及限值可变数组
    • 1,数组指针
    • 2,限值可变数组
  • 三,Variant 指针、DB_Any参数类型、引用
    • 1,Variant 指针
    • 2,DB_Any参数类型
    • 3,引用

一,间接寻址概述

学习目标是在掌握博途平台SCL编程语言的基本使用基础之上,进一步了解SCL语言环境下的间接寻址过程,初步具备编写复杂控制程序的能力
在编写plc程序过程中, 需要对plc中的数据进行访问,这就是寻址
根据寻址方式的不同,可以分为两种寻址方式:直接寻址间接寻址

1,SCL间接寻址概述

1.1,直接寻址

直接寻址

直接寻址就是直接对数据的存储单元进行访问;
根据表达方式的不同,可分为绝对寻址符号寻址;对于plc中的标准数据存储区包括IQMTCL以及标准数据块,既可以使用绝对寻址,也可以使用符号寻址;

绝对寻址

在使用绝对寻址时,可以寻址的宽度包括位,字,节字,双字

在寻址标识符中,根据IEC- 61131国际标准的规定
①以%表示对plc集成的存储单元进行访问;
②寻址区域的区域标识符,比如IQMDB等;
③寻址标识符中需要指出寻址的宽度分别用XBWD表示,寻址宽度为节字双字
④在标识符中还包括了所寻址存储单元的地址位地址,字节地址,字地址,双字地址);
若寻址宽度为位,还要标识出位地址; 字节地址与位地址之间用.进行连接

符号寻址

对优化数据存储区,包括优化数据块以及优化的l,只能使用符号寻址;
对于S7-1200及S7-1500新型控制器在进行符号寻址时,还支持slicting片段访问寻址方式;
对寻址变量,按位,字,节字,双字进行拆分访问

片段访问的寻址标识符格式:所寻址的变量名加.连接符。加上 寻址宽度标识符XBWD 以及片段的编号(如下图所示);

以整数类型变量举例。如果需要在程序中判断某个整数变量的符号,只需要利用片段访问的方式访问其X15位即可。 X15位为1则为负整数,X15位为0则为正整数

在这里插入图片描述

1.2,间接寻址

间接寻址利用各种类型的指针,间接对数据的存储单元进行访问
间接寻址,允许用户寻址在程序运行之前,不计算地址的操作数;
间接寻址过程中所使用的指针通常存储在相应类型的变量当中;
在编程过程中,通过对指针进行适当的变动,可以实现更加灵活的寻址过程;
常用的指针类型包括 Pointer指针,Any指针,数组指针,Varuant指针等等。每种类型的指针都有特定的结构, 功能以及适用的场景。

其中Varuant指针为博途平台所特有的指针类型。而Pointer指针,Any指针,数组指针,既可以在博途平台中使用,也可以在classic平台中使用;
适用的寻址数据区:
以上指针都可以完成对标准数据区的间接寻址
只有数组指针以及Varuant指针可以完成对优化数据区的间接寻址
在这里插入图片描述

2,Pointer 及 Any 指针

Pointer 指针

Pointer指针用于寻址标准数据存储区,其主要作用是为子程序传递复杂数据类型的实参
通常Pointer指针由程序编译器自动使用;
Pointer指针的长度为六个字节,前两个字节用于存储所传递实参的数据块编号剩余四个字节用于存储所传递实参的32位交叉区域指针
(即寻址数据的区域标识符+起始存储地址

Pointer指针的常数表达格式:P#区域标识符+字节地址+.+位地址
由于必须在指针中指定数据存储的起始位地址,因此Pointer指针只能用于寻址标准数据存储区;
Pointer指针本质上是指向了数据区中的变量,起始存储位置是一个点,因此被命名为Pointer
在这里插入图片描述

Any 指针
ANY指针也用于为子程序传递复杂数据类型的实参,结构比Pointer指针复杂, 在Pointer指针的基础上,可为子程序传递更多的实参信息,更适合用户编程使用

ANY指针的长度为十个字节:
第一个字节为any指针的类型标识,16进制的10

http://www.xdnf.cn/news/1092115.html

相关文章:

  • 项目进度受制于资源分配,如何动态调配资源
  • LeetCode 138题解 | 随机链表的复制
  • 5202年安装TensorFlow纪实
  • 向量空间 线性代数
  • 解锁HTML5页面生命周期API:前端开发的新视角
  • 超越公有云:在裸金属服务器上构建低成本、高性能的静态资源服务
  • STM32 使用HAL库获取us时间
  • 【使用Flask基于PaddleOCR3.0开发一个接口 调用时报错RuntimeError: std::exception】
  • HCIP(综合实验)
  • 代码随想录总结
  • css 设置 input 插入光标样式
  • 20250709: WSL+Pycharm 搭建 Python 开发环境
  • C++11 future、promise实现原理
  • 基于Matlab多特征融合的可视化指纹识别系统
  • 微算法科技从量子比特到多级系统,Qudits技术革新引领量子计算新时代
  • 三、Docker常用命令
  • React、Vue、Angular的性能优化与源码解析概述
  • upload-labs靶场通关详解:第19关 条件竞争(二)
  • Mysql组合索引的update在多种情况下的间隙锁的范围(简单来说)
  • 嵌入式调试LOG日志输出(以STM32为例)
  • 自建ELK vs 云商日志服务:成本对比分析
  • [Backlog] Git操作 | 任务数据结构 | Markdown 处理
  • Hugging Face Agents Course unit1笔记
  • 【科研绘图系列】R语言绘制解剖图
  • 解锁DevOps潜力:如何选择合适的CI/CD工作流工具
  • 【RK3568+PG2L50H开发板实验例程】FPGA部分 | 键控LED实验
  • 闲庭信步使用图像验证平台加速FPGA的开发:第六课——测试图案的FPGA实现
  • 01-elasticsearch-搭个简单的window服务-ik分词器-简单使用
  • ECR仓库CloudFormation模板完整指南
  • 网安-SSRF-pikachu