0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

对于ANY数据类型及参数传递的详细解析

机器人及PLC自动化应用 来源:机器人及PLC自动化应用 作者:机器人及PLC自动化 2021-04-12 10:28 次阅读

ANY数据类型及参数传递

ANY是一种用于传递指针的形参数据类型,可视为POINTE R 类型的扩展,较POINTER 类型为复杂,长度为10个字节,增加的4 字节,最高字节 (Byte 0) 固定为B#16#10,第二字节 (Byte 1) 为ANY指针所指向区域的数据类型,而接下来的2 字节 (BYTE 3, 4) 组合为一个INT ,为ANY指针所指定区域的长度,称为重复系数 (Rep etition factor) 。其余6 字节作用与POINTE R 类型相同。

bc3071d2-9ac9-11eb-8b86-12bb97331649.png

编程举例:

// 冒泡排序程序,算法原理请参考相关资料

// 此例程仅提供存于DB块中的INT 类型数据排序

// 结果为INT 数据由小到大排列,保存于原DB块中

//FC3 块,形参定义如下:

bc5c9582-9ac9-11eb-8b86-12bb97331649.png

// 输入参数Dat a(A ny 类型);输出参数Error(INT类型)

// 若输出参数Error不为0, 则说明排序未进行,

//Error = 1, D ata(ANY 类型)输入指针无效

//Error = 2, D ata(ANY 类型)输入指针地址非DB地址

//Error = 3, D ata(ANY 类型)输入指针指定区域类型非INT 类型

SET

SAVE

L 0

T #Err or

// 将输入ANY 指针‘Data_ In’复制到LB0~LB9

L D [ AR1,P#0.0]

T LD 0

L D [ AR1,P#4.0]

T LD 4

L W [ AR1,P#8.0]

T LW 8

//ANY 指针 BYTE0 是B#1 6#10

L LB 0

L B#16#10

==I

JCN ERR1

// 输入数据区是否为DB块

L LB 6

L B#16#84

==I

JCN ERR2

// 类型为INT

L LB 1

L B#16#5

==I

JCN ERR3

// 打开输入DB块

OPN DB [LW 4]

// 数据起始地址去掉数据区标识部分

L LD 6

L DW#16#FFFFFF

AD

T LD 10

// 计算最后一个存储单元指针保存至LD10

L LW 2

L 2

*I

T LD 14

L L#2

-D

SLD 3

L LD 10

+D

T LD 10

// 外循环计数LW20 ,循环次数为(数据个数-1)次

L LW 2

L 1

-I

NXT2: T L W 20

L LD 10

LAR1

L LW 20

// 嵌套循环计数LW18 ,循环次数为(LW20)次

NXT1: T L W 18

T A R1

L P#2. 0

-D

LAR1

// 后一单元数据小于前一单元数据?

L DB W [AR1,P#2.0]

L DB W [AR1,P#0.0]

《i 《/i

JCN L1

// 否,交换2 单元数据

L DB W [AR1,P#2.0]

L DB W [AR1,P#0.0]

T DBW [AR1,P#2.0]

POP

T DBW [AR1,P#0.0]

L1: L LW 18

LOOP NXT1

L LW 20

LOOP NXT2

JU EX IT

// 错误码1,ANY指针有错

ERR1: L 1

T #Err or

JU EX IT

// 错误码2,输入数据区不是DB块

ERR2: L 2

T #Err or

JU EX IT

// 错误码3,输入数据类型不是INT

ERR3: L 3

T #Err or

EXIT: SET

SAVE

在OB1程序中调用举例:

A M 0.0

F P M 0.1

JCN EXI T

CALL F C 3 //FC3 为上述排序程序

Data : =P#DB3.DBX 0.0 INT 64 // 参数Data, DB3 中64个INT 排序

Error : =MW2

EXIT: NOP 0
编辑:lyn

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 参数
    +关注

    关注

    11

    文章

    1398

    浏览量

    31469
  • 指针
    +关注

    关注

    1

    文章

    473

    浏览量

    70361

原文标题:ANY数据类型及参数传递

文章出处:【微信号:gh_a8b121171b08,微信公众号:机器人及PLC自动化应用】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    plc数据类型怎么理解和应用

    PLC(可编程逻辑控制器)是一种工业自动化设备,用于控制机械和工业过程。在PLC编程中,数据类型是非常重要的概念,因为它决定了程序中数据的存储和处理方式。正确理解和应用PLC数据类型是编写有效、可靠
    的头像 发表于 12-19 11:39 1391次阅读

    oracle的数据类型有哪些

    Oracle数据库中有许多数据类型可供选择,每种数据类型都有其各自的特点和适用场景。下面是对Oracle数据库中最常用的数据类型的详尽说明,
    的头像 发表于 12-05 16:45 636次阅读

    javascript的基本数据类型有哪些

    、Null、Boolean、Number、String、Symbol 和 BigInt。本文将详细介绍这七种基本数据类型的特点和用法。 Undefined Undefined 是 JavaScript
    的头像 发表于 12-03 11:17 359次阅读

    redis的五种数据类型

    )和有序集合(sorted set)。下面将详细介绍这五种数据类型,包括其特点、应用场景和使用方法。 字符串(String) 字符串是 Redis 最为基础的数据类型,它可以保存任意类型
    的头像 发表于 11-16 11:06 345次阅读

    Redis的数据类型有哪些

    Redis的数据类型有哪些?有五种常用数据类型:String、Hash、Set、List、SortedSet。以及三种特殊的数据类型:Bitmap、HyperLogLog、Geospatial
    的头像 发表于 10-09 10:51 401次阅读

    FreeRTOS使用的数据类型有哪些

    的就是 32 位无符号数。对于 32 位架构的处理器,一定要禁止此宏定义,即设置此宏定义数值为 0 即可。 BaseType_t 这个数据类型根据系统架构的位数而定,对于 32 位架
    的头像 发表于 09-28 11:49 411次阅读

    PLC 数据类型 (UDT) 的基本知识

    说明 PLC 数据类型 (UDT) 是一种复杂的用户自定义数据类型,用于声明一个变量。这种数据类型是一个由多个不同数据类型元素组成的数据结构
    的头像 发表于 09-10 09:46 2234次阅读
    PLC <b class='flag-5'>数据类型</b> (UDT) 的基本知识

    F型PLC数据类型与标准PLC数据类型(UDT)之间的差别在哪?

    可以像使用标准 PLC 数据类型 (UDT) 那样,声明和使用 F 型 PLC 数据类型 (UDT) 。可以在安全程序中以及标准用户程序中使用 F 型 PLC 数据类型 (UDT) 。
    的头像 发表于 08-27 09:54 756次阅读
    F型PLC<b class='flag-5'>数据类型</b>与标准PLC<b class='flag-5'>数据类型</b>(UDT)之间的差别在哪?

    浅谈PLC定义数据类型的应用

    PLC定义数据类型以下用一个例子介绍PLC定义数据类型的应用,以便进一步理解PLC定义数据类型
    的头像 发表于 07-24 16:07 815次阅读
    浅谈PLC定义<b class='flag-5'>数据类型</b>的应用

    ARRAY 数据类型的变量

    要求 全局数据块已打开。 操作步骤 要声明一个 ARRAY 数据类型的变量,请按以下步骤操作: 在“名称”(Name) 列中,输入变量的名称。 在“数据类型”列中输入“Array”数据类型
    的头像 发表于 07-06 11:08 650次阅读

    西门子博途中DB_ANY数据类型的使用

    DB_ANY 数据类型用来标识任意数据块。对于 S7-1200/1500 系列的 CPU,可以选择访问编程期间尚不可用的数据块。为此,请在访
    的头像 发表于 07-04 10:17 5407次阅读
    西门子博途中DB_<b class='flag-5'>ANY</b><b class='flag-5'>数据类型</b>的使用

    基本数据类型分享

    基本数据类型 基本数据类型:包括位、位序列、整数、浮点数、日期时间。此外字符也属于基本数据类型,请参见文档String与WString。 1.位和位序列 2.整数数据类型 3.浮点型实
    的头像 发表于 06-13 14:14 5894次阅读
    基本<b class='flag-5'>数据类型</b>分享

    GaussDB 数据类型介绍

    GaussDB 数据库 GaussDB 是华为基于 openGauss 自研生态推出的云化企业级分布式关系型数据库,它支持多种数据类型,包括数值、字符、日期等。在使用 GaussDB 时,可能需要
    的头像 发表于 06-05 16:40 1271次阅读
    GaussDB <b class='flag-5'>数据类型</b>介绍

    GaussDB数据类型转换介绍

    数据类型转换在实际应用中非常常见。GaussDB 作为一款企业级分布式关系型数据库,在实际业务场景使用中,也会避免不了数据类型的转换。以下是一些数据类型转换的应用场景。
    的头像 发表于 06-05 16:29 523次阅读
    GaussDB<b class='flag-5'>数据类型</b>转换介绍

    西门子SCL-ANY数据类型

    在编程语言 SCL 和 STL 中,如果在块参数中设定了一个 ANY 指针,则任意类型的存储器都可以在块调用时传递
    的头像 发表于 06-05 10:50 1261次阅读
    西门子SCL-<b class='flag-5'>ANY</b><b class='flag-5'>数据类型</b>