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

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

3天内不再提示

移动字符串的规则

机器人及PLC自动化应用 来源:机器人及PLC自动化应用 作者:机器人及PLC自动化 2022-07-25 17:42 次阅读

BLKMOV:存储区移动(SFC20)

使用“块移动”指令,可将存储区(源区域)的内容移动到其它存储区(目标区域)。移动操作沿地址升序方向执行。可使用 ANY 指针定义源区域和目标区域。

7a8268b6-04e6-11ed-ba43-dac502259ad0.png

移动操作的通用规则

源区域和目标区域不得重叠。如果源和目标区域长度不同,则只能移动较小长度的区域。

如果源区域小于目标区域,则将整个源区域的数据都写入到目标区域中。而目标区域的其余字节则保持不变。

如果目标区域小于源区域,将写满整个目标区域。而忽略源区域的剩余字节。

如果复制 BOOL 数据类型的区域,则此区域的指定长度必须是 8 的整数倍,否则将无法执行指令。

移动字符串的规则

还可以使用“块移动”指令移动 STRING 数据类型的源区域和目标区域。如果只有源区域为 STRING 数据类型,则移动字符串中实际包含的字符。有关实际和最大长度的信息,将写入目标区域。如果源和目标区域都是 STRING 数据类型,则将目标区域中字符串的当前长度设置为实际移动的字符数。

如果要移动字符串实际长度和最大长度的信息,则需要以字节为单位将相关区域指定给 SRCBLK 和DSTBLK 参数

函数值 (RET_VAL) INT 错误信息

0000 无错误

8092 源或目标区域只能在装载存储器中。

8xyy 有关错误的更多信息,

使用复杂参数类型ANY:

STEP 7以10个字节存储参数类型ANY。当构造类型为ANY的参数时,必须确保所有10个字节都被占用,因为调用块估计参数整个内容的值。例如,如果以字节4指定DB编号,也必须以字节6明确地指定存储器区。

7a9b4fb6-04e6-11ed-ba43-dac502259ad0.png

参数类型的ANY格式

对于参数类型,STEP 7存储数据类型和参数的地址。重复因子始终是1。字节4、5和7始终是0。字节8和9指示定时器、计数器或块的编号。

重复因子识别由参数类型ANY传送的指示数据类型的数量。这意味着可以指定数据区,也可以和参数类型ANY结合使用数组和结构。STEP 7将数组和结构识别为数据类型的编号(借助重复因数)。例如,如果要传送10个字,必须为重复因子输入数值10,并且必须为数据类型输入数值04。

地址以格式Byte.Bit存储,此处字节寻址存储在字节7的位0 - 2,节字8的位0 - 7,节字9的位3 - 7。位地址存储在字节9的位0 - 2。

建立一个存储机器人信号的功能块FB5

7ab17e9e-04e6-11ed-ba43-dac502259ad0.png

FUNCTION_BLOCK FB5

VAR_INPUT

Rob_A:POINTER; 机器人的地址

pRobAAT Rob_A: STRUCT 拆分地址

DBNR :WORD;

BZ :DWORD;

END_STRUCT;

END_VAR

VAR_OUTPUT

ST_ROB: ST_Rob;

END_VAR

VAR_TEMP

Adr_Rob_A :INT ;

AnyRob_A :ANY;

pRob_AAT AnyRob_A: STRUCT

SyntaxId:BYTE; // Byte 0

DataType:BYTE; // Byte 1

DataCount:WORD; // Byte 2+3

DBNR :WORD; // Byte 4+5

BZ :DWORD;// Byte 6

END_STRUCT;

AnyST_ROB :ANY;

pST_ROBAT AnyST_ROB: STRUCT

SyntaxId: BYTE; // Byte 0

DataType: BYTE; // Byte 1

DataCount:WORD; // Byte 2+3

DBNR :WORD; // Byte 4+5

BZ :DWORD; // Byte 6

END_STRUCT;

AnyST_ROB_A_Rob:ANY;

pST_ROB_A_RobAT AnyST_ROB_A_Rob: STRUCT

SyntaxId: BYTE; // Byte 0

DataType: BYTE; // Byte 1

DataCount:WORD; // Byte 2+3

DBNR :WORD; // Byte 4+5

BZ :DWORD; // Byte 6

END_STRUCT;

erg_SFC20 :INT;用于SFC20的变量反馈点

END_VAR

VAR

END_VAR

Adr_Rob_A := WORD_TO_INT(DWORD_TO_WORD(SHR(IN:=pRobA.BZ,N:=3))); 提取IO点地址

pRob_A.SyntaxId := B#16#10;

pRob_A.DataType := 02;

pRob_A.DataCount := W#16#22;

pRob_A.DBNR := pRobA.DBNR;

pRob_A.BZ := pRobA.BZ;

AnyST_ROB := ST_ROB.A1_8_Folgespiegelung;DB块首位

pST_ROB.SyntaxId := B#16#10;

pST_ROB.DataType := 02;

pST_ROB.DataCount := W#16#22;

AnyST_ROB_A_Rob := ST_ROB.A_Rob;

pST_ROB_A_Rob.SyntaxId := B#16#10;

pST_ROB_A_Rob.DataType := 02;

pST_ROB_A_Rob.DataCount := W#16#22;

erg_SFC20 := BLKMOV(SRCBLK := AnyRob_A

,DSTBLK:= AnyST_ROB

);传输机器人的输出状态

erg_SFC20 := BLKMOV(SRCBLK := AnyST_ROB

,DSTBLK:= AnyST_ROB_A_Rob

);

END_FUNCTION_BLOCK

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

    关注

    8

    文章

    7015

    浏览量

    88984
  • 存储
    +关注

    关注

    13

    文章

    4308

    浏览量

    85821
  • 定时器
    +关注

    关注

    23

    文章

    3247

    浏览量

    114755

原文标题:使用复杂参数类型

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

收藏 人收藏

    评论

    相关推荐

    base64字符串转换为二进制文件

    Base64是一种编码方法,用于将二进制数据转换为ASCII字符串。这种编码通常用于在不支持二进制数据的系统中传输数据,例如电子邮件或网页。将Base64字符串转换为二进制文件的过程相对简单,但需要
    的头像 发表于 11-10 10:55 1001次阅读

    MATLAB(5)--字符串处理

    字符串表示 在MATLAB中,字符串是用单引号括起来的字符序列,是把一个字符串当做一个行向量,这个行向量中,每个元素对应一个字符。 若
    发表于 09-06 10:22

    labview字符串数组转化为数值数组

    在LabVIEW中,将字符串数组转换为数值数组是一项常见的任务,尤其是在处理数据采集、信号处理或用户输入时。 1. 理解LabVIEW的数据类型 在开始之前,了解LabVIEW中的数据类型是非
    的头像 发表于 09-04 17:47 2287次阅读

    labview字符串如何转换为16进制字符串

    在LabVIEW中,将字符串转换为16进制字符串是一个常见的需求,尤其是在处理数据通信和硬件接口时。LabVIEW提供了多种方法来实现这一转换,包括使用内置函数、编写VI(Virtual
    的头像 发表于 09-04 15:54 2378次阅读

    labview中如何实现字符串换行

    1. 字符串换行的基本概念 在LabVIEW中,字符串换行通常指的是在字符串中插入换行符,使得字符串在显示或输出时能够自动换行。这在创建用户界面或处理文本数据时非常有用。 2.
    的头像 发表于 09-04 15:47 1672次阅读

    labview中如何实现字符串选择输出

    在LabVIEW中实现字符串选择输出是一项常见的任务,它涉及到字符串处理、条件判断和用户界面设计等多个方面。由于LabVIEW是一种图形化编程语言,其编程方式与传统的文本编程语言有所不同,因此实现
    的头像 发表于 09-04 15:44 921次阅读

    labview中常用的字符串函数有哪些?

    在LabVIEW中,常用的字符串函数广泛覆盖了对字符串的各种操作,包括但不限于格式化、搜索、替换、连接、计算长度等。以下是一些常用的字符串函数及其简要说明: 字符串长度(String
    的头像 发表于 09-04 15:43 687次阅读

    labview字符串的四种表示各有什么特点

    。在LabVIEW中,字符串是一种基本的数据类型,用于表示文本信息。字符串在LabVIEW中有多种表示方式,每种方式都有其特定的应用场景和特点。以下是对LabVIEW中四种字符串表示方式的分析: 1.
    的头像 发表于 09-04 15:40 553次阅读

    鸿蒙TypeScript学习第10天:【String(字符串)】

    String 对象用于处理文本(字符串)。
    的头像 发表于 04-08 14:32 811次阅读
    鸿蒙TypeScript学习第10天:【String(<b class='flag-5'>字符串</b>)】

    C语言字符串编译函数介绍

    在C语言中,字符串实际上是使用null字符O'终止的一维字符数组。因此,一个以null结尾的字符串,包含了组成字符串
    的头像 发表于 03-07 16:18 506次阅读
    C语言<b class='flag-5'>字符串</b>编译函数介绍

    labview二进制字符串转数值

    字符串是一种常见的数据类型,它表示了以二进制形式存储的数据。当我们需要将这些二进制字符串转换为数值时,LabVIEW提供了一些常用的函数和方法,可以帮助我们完成这个任务。 首先,我们需要明确二进制字符串的格式。在LabVIEW中
    的头像 发表于 01-05 16:20 2668次阅读

    labview扫描字符串怎么用

    LabVIEW 是一种流程化编程语言和开发环境,主要用于控制、测量和监测系统。在 LabVIEW 中,扫描字符串是一项常见的任务,它允许用户按照一定的模式从输入字符串中提取所需的信息。下面我将详细
    的头像 发表于 12-29 10:12 1999次阅读

    KUKA 机器人系统函数StrFind()-在字符串里查找

    搜索字符串变量 用功能 StrFind() 可以搜索字符串变量的字符串。 Result = StrFind( StartAt, StrVar[], StrFind[], CaseSens )
    的头像 发表于 12-27 10:36 684次阅读

    labview扫描字符串怎么用

    LabVIEW是一种图形化编程语言,用于开发控制、测量和监控系统。虽然它主要用于工程和科学领域,但也可以用于处理文本和字符串。 在LabVIEW中,可以使用字符串处理函数来扫描字符串。以下是一些常用
    的头像 发表于 12-26 16:58 1992次阅读

    labview中怎么对字符串中的进行实时处理

    LabVIEW是一种用于开发控制、测试和测量系统的可视化编程环境,它提供了许多处理字符串的功能。在LabVIEW中,可以使用不同的函数和工具来实时处理字符串。下面我将详细介绍一些常见的方法和技术
    的头像 发表于 12-26 14:12 1870次阅读