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

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

3天内不再提示

命令通道$FCT_CALL 的功能

机器人及PLC自动化应用 来源:机器人及PLC自动化应用 作者:机器人及PLC自动化 2022-06-21 10:54 次阅读


命令通道 $FCT_CALL 的功能

使用 CWRITE 调用命令通道 $FCT_CALL 的文件系统函数。调用时,函数参数必须作为 Var1 … Var10 传送到 CWRITE。此外,CWRITE 传输的写入模式必须是#SYNC。

默认情况下,函数访问的文件存储在本地目录C:KRCROBOTERUserFiles。存储在那里的文件的最大总大小限制为 10 MB,即存储在那里的所有文件的总大小不得超过此限制。也可以通过函数 krl_mount() 使用启用的网络驱动器

可以从机器人解释程序或提交解释程序调用文件系统函数。不允许从一个解释器打开文件,然后从另一个解释器访问它,例如 写入或再次关闭文件。

错误处理

每个文件系统函数通过 CWRITE 提供一个返回值,可以在 KRL 程序中查询和评估。返回值指示函数是成功执行还是因错误而中止。

调用 CWRITE 时传递的变量 State.RET1 用于监控是否发生错误:

State.RET1= #DATA_OK:函数执行成功

State.RET1= #CMD_ABORT: 函数因错误而取消

在发生错误的情况下,返回的错误号可用于定位原因。使用变量 State.MSG_NO 轮询错误号。描述了每个功能的可能错误编号。

$FCT_CALL: 将字符写入文件

bb7cb058-f0a3-11ec-ba43-dac502259ad0.png

命令通道 $FCT_CALL 的管理号(句柄)

CWRITE() 函数可用于通过 $FCT_CALL 命令通道调用函数。变量本身是写保护的。

$FCT_CALL=Number

字符“a”将通过命令通道 $FCT_CALL 写入文件MyTest.TXT。如果文件已经存在,则在打开文件时删除文件的内容。 对于使用 CWRITE 的每个函数调用,都要进行检查以查看函数是成功执行还是因错误而中止。如果发生错误,可以根据错误原因编程相应的错误处理。如果没有发生错误,将写入字符并再次关闭文件. krl_mount()创建和连接挂载点

为了从 KRL 连接到启用的网络驱动器,必须为挂载点分配一个名称,并且必须知道启用目录的完整路径。连接网络驱动器也需要用户的用户名和加密密码。

机器人控制器 C:KRCUTILHash 目录下的程序 khash.exe 可用于加密密码。程序 khash.exe 必须在 Windows shell cmdk.exe 上执行,并且需要输入密码。

例如,如果用户的密码是“kuka”,则 Windows shell 上的加密程序调用如下:khash.exe kuka

在 KRL 程序中调用 krl_mount() 时必须使用的加密密码随后会显示在 Windows shell 上。

krl_mount(CHAR[] Name, CHAR[] Path, CHAR[] User, CHAR[] Password)

例:

使用名称 TransferNet 建立到网络驱动器 \160.160.113.23 ransfer 的挂载点。使用加密密码为用户“Administrator”建立连接:

CWRITE($FCT_CALL, State, Mode, "krl_mount", "/TransferNet","//160.160.113.23/transfer","Administrator","04FF94D4B99A1153C8CF3D479089A77AFE")

krl_unmount()

删除挂载点

此函数可用于终止与使用 krl_mount() 建立的网络驱动器的连接。

krl_unmount(CHAR[] Name)

Name创建的挂载点名称

名称必须以字符“/”开头,并且不得包含另一个“/”字符。

与挂载点 TransferNet 的连接被终止:

CWRITE($FCT_CALL, State, Mode, "krl_unmount", "/TransferNet")

krl_fopen()

打开一个文件

根据选择的模式,文件以文本文件或二进制文件的形式打开以进行读访问和/或写访问。可用模式对应于头文件 stdio.h 的 fopen() 函数。

在 KRL 程序中使用此功能最多可以同时打开 11 个文件。

krl_fopen(CHAR[] Name, CHAR[] Mode, INT Handle <, BUFF_MODE_T Buffering> )

Mode

“r”

作为文本文件打开以进行读取访问

在这种模式下,一个文件可以连续打开多次(包括由机器人和提交解释器同时打开)而无需先关闭。在每种情况下都会返回一个不同的句柄。这些句柄中的每一个都必须在某个时候关闭,因为否则无法以不同的模式打开文件。

“w”

作为文本文件打开以进行写访问

在这种模式下,文件的内容在打开时被删除。如果他的文件不存在,则创建它。

“a”

作为文本文件打开以进行写访问

在这种模式下,文件的内容在打开时不会被删除;相反,写入的值被添加到文件的末尾。如果文件不存在,则创建它。

“rb”

作为二进制文件打开以进行读取访问

“wb”

作为二进制文件打开以进行写访问

“r+”

作为文本文件打开以进行读写访问

注意:打开文件后,文件指针指向文件的开头。为确保在将数据写入文件时不会覆盖任何内容,必须通过函数 krl_fseek() 将文件指针放在文件末尾。

例:

文件 ROBOTERUserFilesMyFile.txt 作为文本文件打开以进行读取访问:

CWRITE($FCT_CALL, State, Mode, "krl_fopen", "MyFile.txt", "r", FileHandle)

文件 ROBOTERUserFiles estMyFile.txt 作为二进制文件打开,用于读写访问。如果该文件已存在,则删除该文件的内容。

如果文件不存在,则创建它:

CWRITE($FCT_CALL, State, Mode, "krl_fopen", "Test/MyFile.txt", "wb+", FileHandle)

MyFile.txt 文件作为文本文件打开,用于读取访问,无需在启用的网络驱动器上进行缓冲。名称为 Net1 的网络驱动器的挂载点必须首先通过 krl_mount() 创建:

CWRITE($FCT_CALL, State, Mode, "krl_fopen", "/Net1/MyFile.txt", "r",

FileHandle, #NO_BUFF)

krl_fclose()

关闭文件

该文件由传输的句柄明确确定。一旦文件被关闭,句柄就无效并且不能用于进一步的文件系统操作。

当文件关闭时,写入缓冲区的内容将写入文件。

krl_fclose(INT Handle)

文件通过文件句柄关闭:CWRITE($FCT_CALL, State, Mode, "krl_fclose", FileHandle)

krl_fputc()

将字符写入文件

文件中写入字符的点取决于打开文件的模式和文件指针的位置。

krl_fputc(INT Handle, CHAR Character)

字符“x”被写入句柄传输的文件中:CWRITE($FCT_CALL, State, Mode, "krl_fputc", FileHandle, "x")

krl_fputs()

将字符串写入文件

该函数可用于将常量字符串或可变字符串写入文件。如果使用变量,则 CHAR 数组的每个元素都必须初始化并包含一个有效值。

文件中写入字符串的点取决于打开文件的模式和文件指针的位置。

krl_fputs(INT Handle, CHAR[] String)

例:

一个常量字符串被写入到句柄传送的文件中:

CWRITE($FCT_CALL, State, Mode, "krl_fputs", FileHandle, "write this!")

将变量“StringVar[]”中包含的字符串写入句柄传送的文件中:

CWRITE($FCT_CALL, State, Mode, "krl_fputs", FileHandle, StringVar[])

krl_fwriteln()

将字符串逐行写入文件

该函数可用于将常量字符串或可变字符串写入文件。将行尾字符附加到要写入的字符串。如果使用变量,则 CHAR 数组的每个元素都必须初始化并包含一个有效值。

文件中写入字符串的行取决于打开文件的模式和文件指针的位置。

krl_fwriteln(INT Handle, CHAR[] String)

将一个空行写入句柄传输的文件中:

CWRITE($FCT_CALL, State, Mode, "krl_fwriteln", FileHandle, " ")

krl_fprintf()

将字符串格式化写入文件

要写入的格式作为字符串传送给函数。要写入的值也会被传送。

可用格式在头文件 stdio.h 的 fprintf() 函数的文档中列出。除了“%o”、“%p”、“%n”和列表“[List]”之外,所有格式都是允许的。

krl_fprintf(INT Handle, CHAR[] Format, Par1, … , Par8)

由字符“;”分隔的 3 个值 被写入由句柄传输的文件并格式化:

CWRITE($FCT_CALL, State, Mode, "krl_fprintf", FileHandle, "%s;%x;%c", "Item1", 'HA0', CharVar)

例:

DECL INTHANDLE DECL STATE_T STAT DECL MODUS_T MODE

...

CHAR MYCHAR

...

MODE =#SYNC HANDLE = 0 MYCHAR = "a"

...

; 在 C:KRCROBOTERUserFiles 下创建一个文件

CWRITE($FCT_CALL, STAT, MODE,"krl_fopen", "MyTest.TXT", "w", HANDLE)

; 检查是否发生错误

IF (STAT.RET1 == #CMD_ABORT)THEN

IF (STAT.MSG_NO == -5) THEN

; 如果有很多文件已经打开,则错误处理...

ELSE

; 如果需要,检查其他错误代码

... ENDIF

ELSE

; 没有发生错误

; 将字符写入文件

CWrite($FCT_CALL, STAT, MODE, "krl_fputc",HANDLE, MYCHAR) IF (STAT.RET1 == #CMD_ABORT) THEN

; 错误处理

... ENDIF

; 关闭文件

CWRITE($FCT_CALL, STAT, MODE,"krl_fclose", HANDLE) IF (STAT.RET1 == #CMD_ABORT) THEN

错误处理

... ENDIF

ENDIF

大家有空可以试试吧!

-------------------END-----------------

审核编辑 :李倩

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

    关注

    52

    文章

    8164

    浏览量

    146033
  • Call
    +关注

    关注

    0

    文章

    9

    浏览量

    8320
  • 变量
    +关注

    关注

    0

    文章

    613

    浏览量

    28331

原文标题:也许使用它会对KUKA编程有一个突破性的认识---$FCT_CALL。

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

收藏 人收藏

    评论

    相关推荐

    瀚海微SD NAND存储功能描述(16)命令类c

    卡状态转换表 下方表格根据接收到的命令定义了卡的状态转换。表中的状态名是命令执行后的下一个状态。“-”表示该命令被视为非法命令。此外,命令
    的头像 发表于 08-21 10:00 235次阅读
    瀚海微SD NAND存储<b class='flag-5'>功能</b>描述(16)<b class='flag-5'>命令</b>类c

    常见的shell命令之其他命令

    1、clear清屏命令命令:clear功能:清除屏幕参数:无 示例:清屏前。执行清屏命令后,终端界面显示信息被清除。2、man帮助命令
    发表于 08-21 09:49

    瀚海微SD NAND存储功能描述(14)命令类a

    命令类 SD Memory Card系统的命令集分为几类,如下表所示。每个类都支持一组卡片功能。表4-20根据卡支持的命令进行设置。一个CCC位对应一个支持的
    的头像 发表于 08-19 10:26 250次阅读
    瀚海微SD NAND存储<b class='flag-5'>功能</b>描述(14)<b class='flag-5'>命令</b>类a

    有没有办法通过AT命令启用WPS功能

    有没有办法通过 AT 命令启用 WPS 功能?如果没有,是否有人已经为此目的创建了一些自定义 AT 命令
    发表于 07-17 08:05

    想使用SDK提供的mDNS功能,有没有机会通过AT命令启动该功能

    我想使用 SDK 提供的 mDNS 功能。有没有机会通过 AT命令启动该功能?我以为我会自己实现这个命令。但是源代码,https://github.com/espressif/esp8
    发表于 07-17 06:24

    通过串行和AT命令使用wps8266,是否可以使用WPS PBC功能和AT命令

    我正在通过串行和 AT 命令使用 wps8266,是否可以使用 WPS PBC 功能和 AT 命令
    发表于 07-16 07:35

    abb机器人编程指令详解中的call什么意思

    ABB机器人编程指令详解中的“call”是一个非常重要的指令,它允许程序员在程序中调用另一个程序或子程序。 概述 在ABB机器人编程中,程序是由一系列的指令组成的,这些指令可以控制机器人的运动、操作
    的头像 发表于 06-17 09:47 1032次阅读

    鸿蒙开发电话服务:【@ohos.telephony.call (拨打电话)】

    call模块提供呼叫管理功能,包括拨打电话、跳转到拨号界面、获取通话状态、格式化电话号码等。
    的头像 发表于 06-15 09:13 689次阅读
    鸿蒙开发电话服务:【@ohos.telephony.<b class='flag-5'>call</b> (拨打电话)】

    请问cubemx中勾选call hal handler有什么作用?

    cubemx中勾选call hal handler有什么作用
    发表于 05-17 11:55

    4位二进制计数器FCT163T数据表

    电子发烧友网站提供《4位二进制计数器FCT163T数据表.pdf》资料免费下载
    发表于 05-16 09:40 0次下载
    4位二进制计数器<b class='flag-5'>FCT</b>163T数据表

    LOTO示波器动作编程功能命令批处理)

    我们定制开放。目前大概分为通道A相关命令,FFT相关命令,时间相关命令,以及数据相关命令,如下图所示: 们可以选择不同
    发表于 05-11 16:41

    浅谈任意波形发生器及通道合并功能

    浅谈任意波形发生器及通道合并功能  任意波形发生器(AWG)是一种能够产生各种复杂波形的信号发生器。它可以通过调节其输出信号的幅值、频率、相位等参数,生成任意形状的波形,包括正弦波、方波、三角波
    的头像 发表于 01-19 15:54 592次阅读

    jvm内存分析命令和工具

    介绍JVM内存分析命令和工具,并详细介绍它们的使用方法和功能。 一、JVM内存分析命令 jps命令:jps命令用于显示当前系统中正在运行的J
    的头像 发表于 12-05 11:07 1131次阅读

    bootm命令的执行流程

    Bootm命令用来从memory启动内核,bootm命令的执行流程如下图所示。 在串口终端输入bootm命令后,执行do_bootm函数来完成相应的功能。Do_bootm函数首先
    的头像 发表于 12-04 17:33 1107次阅读
    bootm<b class='flag-5'>命令</b>的执行流程

    uboot命令的执行过程是什么

    U-boot是通过执行u-boot提供的命令来加载Linux内核的,其中 命令bootm的功能 即为从memory启动Linux内核映像文件。 在讲解bootm加载内核之前,先来看看u-boot中
    的头像 发表于 12-04 17:31 767次阅读