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

    文章

    1870

    浏览量

    34031
  • 指针
    +关注

    关注

    1

    文章

    484

    浏览量

    71956

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    组态屏变量地址映射 / 数据类型不匹配解决方法

    在工业自动化领域,组态屏作为人机交互的核心设备,其与控制器(如PLC、单片机)之间的数据交换依赖于准确的变量地址映射与数据类型匹配。然而,实际工程中,因地址规划混乱或数据类型不一致导致的显示异常
    的头像 发表于 04-22 10:41 114次阅读
    组态屏变量地址映射 / <b class='flag-5'>数据类型</b>不匹配解决方法

    风华贴片电阻料号编码的详细解析

    风华贴片电阻的料号编码通常遵循一套系统化的命名规则,涵盖了产品类型、封装尺寸、温度系数、阻值、精度、额定功率及包装方式等关键参数。以下是对风华贴片电阻料号编码的详细解析: 一、编码结构
    的头像 发表于 03-04 16:23 391次阅读
    风华贴片电阻料号编码的<b class='flag-5'>详细</b><b class='flag-5'>解析</b>

    基于凌羽派的OpenHarmony北向应用开发:ArkTS语法-数据类型和变量声明

    可以在程序执行期间具有不同的值。使用TS风格,声明的时候使用冒号给出数据类型。 let hi: string = \'hello\'; let num: number = 0; 2.2 常量声明
    发表于 02-26 14:24

    传递、指针传递、引用传递介绍

    1、值传递:形参时实参的拷贝,改变函数形参并不影响函数外部的实参,这是最常用的一种传递方式,也是最简单的一种传递方式。只需要传递参数,返回值
    发表于 01-21 06:48

    睿远研究院丨IO-Link规范解读(十五):数据类型详解

    前言 本篇对IO-Link规范的附录F的数据类型做个详细解释,附录定义了  基本数据类型 (Basic Data Types) 和  组合数据类型 (Composite Data Ty
    的头像 发表于 01-14 18:25 5989次阅读
    睿远研究院丨IO-Link规范解读(十五):<b class='flag-5'>数据类型</b>详解

    LabVIEW 变体:万能数据容器的艺术

    属性的附加与管理。与常规数据类型需明确指定类型不同,变体数据传递过程中无需预先确定具体类型,可在目标节点通过专用函数转换为所需
    发表于 01-05 11:06

    C语言自动类型转换

    一、自动类型转换 数据类型存在自动转换的情况. 自动转换发生在不同数据类型运算时,在编译的时候自动完成。 char类型数据转换为int
    发表于 11-25 08:04

    C语言强制类型转换

    强制类型转换是通过定义类型转换运算来实现的。其一般形式为: (数据类型) (表达式) 其作用是把表达式的运算结果强制转换成类型说明符所表示的类型
    发表于 11-24 06:32

    通过优化代码来提高MCU运行效率

    调用开销。 使用 const 和 volatile 关键字,帮助编译器进行更好的优化。 数据类型选择 使用与MCU字长匹配的数据类型。在32位MCU上,int 和 uint32_t 的处理效率通常
    发表于 11-12 08:21

    SQL 通用数据类型

    SQL 通用数据类型 数据库表中的每个列都要求有名称和数据类型。Each column in a database table is required to have a name and a
    的头像 发表于 08-18 09:46 856次阅读

    AIcube1.4目标检测模型导入yolotxt格式数据集后一直显示数据正在解析,为什么?

    AIcube1.4目标检测模型导入yolotxt格式数据集后一直显示数据正在解析 数据有问题,把数据情况说的
    发表于 08-13 07:16

    ArkUI-X平台桥接Bridge说明

    数据类型支持 平台桥接通过JSON格式或二进制格式序列化编解码传递数据,支持基础数据类型、数组类型和结构化
    发表于 06-19 23:12

    IEC101协议可以传输什么类型数据

    IEC101协议作为电力系统远动通信的核心标准,其核心能力在于支持多种类型数据的传输,满足调度端与场站端(如变电站、发电厂)的实时监控、控制及状态感知需求。以下从数据类型、传输模式及典型应用场景三个
    的头像 发表于 05-21 11:37 1244次阅读

    详解Prometheus的数据类型

    对于 Prometheus 生态的监控系统,PromQL 是必备技能,本文着重点讲解这个查询语言,掺杂一些生产实践场景,希望对你有所帮助。
    的头像 发表于 05-13 09:50 1588次阅读
    详解Prometheus的<b class='flag-5'>数据类型</b>

    在KaihongOS应用开发中,如何通过HTTP发起一个数据请求

    {name: \"Part1\", // 数据名,自API 11开始支持该属性contentType: \'text/plain\', // 数据类型,自API 11开始支持该属性
    发表于 05-08 06:44