• (转载)西门子PLC学习笔记十五-(数据块及数据访问方式)


    一、数据块

    数据块是在S7 CPU的存储器中定义的,用户可以定义多了数据块,但是CPU对数据块数量及数据总量是有限制的。

    数据块与临时数据不同,当逻辑块执行结束或数据块关闭,数据块中的数据是会保留住的。

    数据块分共享数据块、背景数据块、用户自定义数据块,下面分别介绍。

    1.共享数据块(全局数据块)

    其用于存储全局数据,所有逻辑块(OB、FC、FB)都可以访问共享数据块中的数据。

    2.背景数据块(私有存储区)

    其用做功能块(FB)的“存储器”。FB的参数和静态变量安排在它的背景数据块中。背景数据块不是由用户编辑的,而是编辑区生成的。

    3.用户自定义数据块

    其是以UDT为模板生成的数据块。创建用户定义数据块之前,必须先创建一个用户自定义的数据类型,如UDT1,并在LAD/STL/FBD S7程序编辑器内定义。

    自定义数据类型UDT1的创建 可以参照之前的学习笔记:西门子PLC学习笔记五-(编程语言、数据类型)进行学习

    4.数据块的创建

    数据块的创建可以参考下图:

    二、数据块的访问

    用户程序可以以位、字节、字或双字操作访问数据块中的数据,可以使用符号或绝对地址访问。

    在访问数据块时必须指明数据块的编号、数据类型与位置。如访问了不存在的数据单元或者数据块,同时没有编写错误处理OB块,CPU将进入STOP模式。

    1.寻址数据块

    2.传统方式访问数据块

    传统方式是:先打开数据块,然后在访问。下例为STL访问数据块代码:

    OPN	DB1		//打开数据块DB1,作为共享数据块
    L	DBW2	//将DB1的数据字DBW2装入累加器1的低字中
    T	MW0		//将累加器低字中的内容传送到存储字MW0
    T	DBW4	//将累加器1低字中的内容传送到DB1的数据字DBW4
    OPN	DB2		//打开数据块DB2,作为共享数据块,同时关闭数据块DB1
    L	DB10	//装入共享数据块DB2的长度
    L	MD10	//将MD10装入累加器
    <D			//比较数据块DB2的长度是否足够长
    JC	ERRO	//如果长度小于存储双字MD10中的值,则跳转到ERRO

    3.直接访问数据块

    直接访问数据块是:直接给出数据块的编号和数据在数据块中的地址。可以使用绝对地址,也可以使用符号地址。如下例:

    L	DB1.DBW2	//打开数据块DB1,并装入地址为2字数据单元
    T	DB1.DBW		//将数据传送到数据块DB1的数据字单元DBW4
    //----------- 使用符号地址 ------------
    L	"DB_Symbol".Speed	//打开符号名为"DB_Symbol"的数据块
    						//并装入名为"Speed"的数据单元

    ---------------------
    作者:风水月
    来源:CSDN
    原文:https://blog.csdn.net/fengshuiyue/article/details/42705319

  • 相关阅读:
    应用部署架构演进【转载】
    TiDB 学习笔记一(运维管理)
    c++ strcmp函数
    C++ sort()函数
    C++ 遍历set的三种方式
    nvcc fatal : '--ptxas-options=-v': expected a number
    PAT A1039 Vector的使用
    C++ set
    C++ int与string互转换
    C++%f和%lf的区别
  • 原文地址:https://www.cnblogs.com/vuciao/p/10586775.html
Copyright © 2020-2023  润新知