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

    文章

    7317

    浏览量

    94094
  • 存储
    +关注

    关注

    13

    文章

    4712

    浏览量

    89652
  • 定时器
    +关注

    关注

    23

    文章

    3361

    浏览量

    121883

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    字符串关联数字变量如何使用?我们的地址都是16位数据,可以使用16位数字变量显示字符串吗?

    字符串关联数字变量如何使用?我们的地址都是16位数据,可以使用16位数字变量显示字符串吗?
    发表于 12-15 08:24

    如何使用 NuMaker 板和 Mbed OS 上的连接字符串连接到 Azure IoT?

    使用 NuMaker 板和 Mbed OS 上的连接字符串连接到 Azure IoT
    发表于 09-04 07:46

    LM3466 多 LED 电流平衡器技术手册

    到电源的数或每个 LED 的正向电压 字符串。 如果任何 LED 灯在运行过程中打开,LM3466 会自动平衡通过所有剩余活动 LED 灯的电源电流。 如 因此,即使一些 LED
    的头像 发表于 08-29 14:27 872次阅读
    LM3466 多<b class='flag-5'>串</b> LED 电流平衡器技术手册

    labview如何生成一个带字符串返回的dll

    labview如何生成一个dll,如下图,要求一个输入,类型是字符串,返回类型也是字符串
    发表于 08-28 23:20

    在Python中字符串逆序有几种方式,代码是什么

    对于一个给定的字符串,逆序输出,这个任务对于python来说是一种很简单的操作,毕竟强大的列表和字符串处理的一些列函数足以应付这些问题 了,今天总结了一下python中对于字符串的逆序输出的几种常用
    的头像 发表于 08-28 14:44 804次阅读

    SQL 通用数据类型

    如何与存储的数据进行交互。 下面的表格列出了 SQL 中通用的数据类型: 数据类型 描述 CHARACTER(n) 字符/字符串。固定长度 n。 VARCHAR(n) 或 CHARACTER VARYING(n) 字符/
    的头像 发表于 08-18 09:46 593次阅读

    为啥51单片机能搞,峰岹的就会报错呢?

    如图图1是stc系列单片机的代码,发送字符串都可以,但是图二峰岹的代码发送字符串就不行,会报错
    发表于 07-09 13:39

    harmony-utils之StrUtil,字符串工具类

    harmony-utils之StrUtil,字符串工具类 harmony-utils 简介与说明 [harmony-utils] 一款功能丰富且极易上手的HarmonyOS工具库,借助众多实用工具类
    的头像 发表于 07-03 11:32 402次阅读

    STM32C031C6使用的是UART2通讯,通过printf()函数发送字符串时,汉字错码怎么解决?

    使用的是UART2通讯,通过printf()函数发送字符串时,汉字错码(见下图),应该是KEIL哪里没有设置好的问题。 启用了UART2的中断接收,可以接收到串口调试助手的数据,但是缓存区的指针没有归零,下次接收时缓存区中的内容接续(如下图所示),不知道用什么命令来清除缓存区(即让指针归零)。
    发表于 03-07 12:30

    请问如何用Verilog实现将ascaii码数值字符串转换成定点数?

    我需要接收一个ascaii码字符串,内容是12位有效数字的数值,带小数。我不知道怎么把小数部分转换成定点数。
    发表于 01-23 21:57

    字符串在数据库中的存储方式

    数据库是现代信息技术中存储和管理数据的核心组件。字符串作为最常见的数据类型之一,在数据库中的存储方式对其性能和可扩展性有着重要影响。 数据类型 固定长度字符串 :如CHAR类型,它为每个字符串分配
    的头像 发表于 01-07 15:41 1278次阅读

    字符串在编程中的应用实例

    字符串在编程中有着广泛的应用,它们被用于表示文本数据、处理用户输入、构建动态内容等。以下是一些字符串在编程中的应用实例: 1. 用户输入与输出 用户输入 :程序通常需要从用户那里获取输入,这些输入通
    的头像 发表于 01-07 15:33 1156次阅读

    字符串字符数组的区别

    在编程语言中,字符串字符数组是两种基本的数据结构,它们都用于存储和处理文本数据。尽管它们在功能上有一定的重叠,但在内部表示、操作方式和使用场景上存在显著差异。 1. 内部表示 字符串 字符串
    的头像 发表于 01-07 15:29 1719次阅读

    字符串反转的实现方式

    在编程中,字符串反转是一个基础而重要的操作,它涉及到将一个字符串中的字符顺序颠倒过来。这个操作在多种编程语言中都有不同的实现方式,本文将探讨几种常见的字符串反转方法。 1. 递归方法
    的头像 发表于 01-07 15:27 1276次阅读

    字符串处理方法 字符串转数字的实现

    在编程中,将字符串转换为数字是一个常见的需求。不同的编程语言有不同的方法来实现这一功能。以下是一些常见编程语言中的字符串转数字的实现方法: Python 在Python中,可以使用内置的 int
    的头像 发表于 01-07 15:26 1428次阅读