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

    文章

    1829

    浏览量

    32195
  • 指针
    +关注

    关注

    1

    文章

    480

    浏览量

    70551

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

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

收藏 人收藏

    评论

    相关推荐

    西门子博途新数据类型之:SINT(8位整数)

    数据类型 SINT (Short INT) 的操作数长度为 8 位,由以下两部分组成:一部分是符号,另一部分是数值。位 0 到 6 的信号状态表示数值。位 7 的信号状态表示符号。符号可以是“0”(正信号状态),或“1”(负信号状态)。
    的头像 发表于 11-09 09:52 782次阅读
    西门子博途新<b class='flag-5'>数据类型</b>之:SINT(8位整数)

    AIC23采集到的数据是应该用什么数据类型来接收?int还是unsigned int?

    AIC23采集到的数据是应该用什么数据类型来接收,int还是unsigned int? 这个采集到的数字是什么含义呢?代表的是声音信号的幅值? while(!MCBSP_rrdy(hMcbsp
    发表于 10-18 06:56

    鸿蒙原生应用元服务开发-仓颉基础数据类型整数类型

    编码长度为 8-bit、16-bit、32-bit、64-bit 和平台相关大小的无符号整数值的类型对于编码长度为 N 的有符号整数类型,其表示范围为:;对于编码长度为 N 的无符
    发表于 09-13 14:55

    鸿蒙原生应用元服务开发-仓颉基础数据类型元组类型

    \", 10) 对于一个元组类型,只允许统一写类型参数名,或者统一不写类型参数名,不允许交替
    发表于 09-12 11:02

    labview数据类型的取值范围是多少

    LabVIEW的数据类型丰富多样,涵盖了整数、小数(浮点数)、复数等多种类型,每种类型都有其特定的取值范围。以下是对LabVIEW中常见数据类型取值范围的说明: 整数
    的头像 发表于 09-04 17:33 998次阅读

    常见的遥感数据类型有哪些

    遥感技术是一种通过遥感器在远离目标的位置获取目标地物的电磁波信息,并进行分析的技术。遥感数据类型繁多,涵盖了从可见光到红外、微波等多个波段,以及不同的数据格式和分辨率。 光学遥感数据 : 全色影像
    的头像 发表于 09-04 14:30 1471次阅读

    人体红外传感器的数据类型及工作原理

    人体红外传感器是一种利用红外技术检测人体活动和位置的传感器。它广泛应用于安防、智能家居、医疗健康等领域。 人体红外传感器的数据类型 人体红外传感器的数据主要包括以下几种类型: 1.1 温度数据
    的头像 发表于 08-20 09:18 790次阅读

    技术干货驿站 ▏深入理解C语言:基本数据类型和变量

    在C语言中,数据类型和变量是编程的基础,也是理解更复杂概念的关键。数据类型决定了变量的内存分配、存储范围和操作方式,而变量则是存储数据的容器。本篇文章将从基本数据类型和变量两个方面,带
    的头像 发表于 07-26 17:53 2092次阅读
    技术干货驿站 ▏深入理解C语言:基本<b class='flag-5'>数据类型</b>和变量

    ESP32-S3是否支持修改控制端点数据类型

    ESP32-S3是否支持修改控制端点数据类型(如标准类型,自定义类型); 我需要在控制传输数据阶段的DATA0包改为我的USB设备规定的8个字节的
    发表于 06-07 06:00

    关于stm32 unsigned int转float数据变化问题求解

    Temp的值是2147553344 (0x80011040)数据类型是unsigned int型 Temp_float的值是2.14755328e+009数据类型是float型
    发表于 05-08 06:48

    C语言结构体史上最详细的讲解【软件干货】

    struct结构体数据类型 前言 我们知道,在C语言中有一些基本的数据类型,如 char int float long double string(c99) 等等数据类型,他们可以表示一些事物
    的头像 发表于 03-28 17:52 746次阅读

    C语言实现Web参数传递

    电子发烧友网站提供《C语言实现Web参数传递.docx》资料免费下载
    发表于 03-24 09:14 2次下载

    C语言数据类型有哪些

    在 C 语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式。
    发表于 03-20 10:56 469次阅读
    C语言<b class='flag-5'>数据类型</b>有哪些

    verilog task和function区别

    : task的语法格式为:task [automatic|static] 数据类型 任务名称 (输入参数列表); function的语法格式为:函数数据类型 函数名称 (输入参数列表)
    的头像 发表于 02-22 15:53 1058次阅读

    XML在HarmonyOS中的生成,解析与转换(下)

    一、XML 解析 对于以 XML 作为载体传递数据,实际使用中需要对相关的节点进行解析,一般包括解析
    的头像 发表于 02-18 10:07 735次阅读