发那科USM通讯

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


发那科机器人USM通讯及数据解析存入位置寄存器

提示:这里可以添加本文要记录的大概内容:
所谓的USM就是user socket message,要使用该功能与上位机通讯必须要具备两个插件,在仿真软件的机器人选项里勾选。如下图所示
在这里插入图片描述
因为该通讯程序是用KAREL语言编写的,需要对KAREL的指令和格式稍微熟悉一下就行了,编程跟川崎的AS语言类似。


提示:以下是本篇文章正文内容,下面案例可供参考

一、机器人设置

1:示教器点击菜单,设置,主机通讯。
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
2:点击TCP/IP选项。
在这里插入图片描述
3:设置IP地址,当前使用的是仿真软件,必须要用一个可以PING得通的IP地址,否则通讯不上。
在这里插入图片描述
4:在菜单点击系统,变量。
在这里插入图片描述
5:找到下图的变量,HOSTC_CFG是客户端,HOSTS_CFG是服务器,而该测试使用的是服务器。
在这里插入图片描述
6:这里有8个选项,该测试选用的是4号,可以根据自己喜好选择。
在这里插入图片描述
7:按照下图设置参数,IP地址要设对,对应的是主机通讯的IP。
在这里插入图片描述
8:按照下图设置参数,端口号自行设置,范围不确定,当前测试设置的是502.
在这里插入图片描述
9:如果无法启动KL程序,需要将以下变量设置成1。
在这里插入图片描述

二、导入KL程序并生成PC程序。

1:新建txt文档,复制以下socket程序,将后缀改成kl格式。

-- TCP-Socket socket连接与断开


PROGRAM SOCKET_SET
%COMMENT = 'socket连接与断开'
%NOPAUSESHFT --忽略SHFT
%INCLUDE klevtpe


VAR
status  :INTEGER

-- socket 使用的变量
tag:STRING[254]
socket_file :FILE --端口绑定文件
n_bytes :INTEGER --缓存区的字节数
rec_data:STRING[1] --逐字节读取
con_data:STRING[254] --连接收到的数据
id:STRING[254]

-- 寄存器
type_int, value_int, set_type:INTEGER
value_real : REAL
channel_str: STRING[128]


--ROUTINE check_err
--功能:检查status状态,报警严重度终止
ROUTINE check_err
BEGIN
  IF (status <> 0) THEN
    POST_ERR(status,'',0,2)
  ENDIF
END check_err

--ROUTINE: SM_CONNEC
--功能: 连接Socket
--参数:tag:STRING - 传入标号
ROUTINE SM_CONNEC(tag:STRING)
BEGIN
  WRITE TPDISPLAY('socket连接信息:',tag,CR)
  MSG_DISCO(tag,status)
  WRITE TPDISPLAY('CLOSE STATUS = ',status,CR)
  MSG_CONNECT(tag,status)
  WRITE TPDISPLAY('CONNECT STATUS = ',status,CR)
  CHECK_ERR
  WRITE TPDISPLAY('使用:',tag ,' 连接成功',CR)
END SM_CONNEC

--ROUTINE: SM_DISCONNEC
--功能: 断开Socket
--参数:tag:STRING - 传入标号
ROUTINE SM_DISCONNEC(tag:STRING)
BEGIN
  MSG_DISCO(tag,status)
  WRITE TPDISPLAY('CLOSE STATUS = ',status,CR)
  CHECK_ERR
  WRITE TPDISPLAY('使用:',tag ,' 断开成功',CR)
END SM_DISCONNEC

BEGIN
  
  WRITE TPDISPLAY(CHR(128),CHR(137))
  WRITE TPPROMPT(CHR(128),CHR(137))
  
  -- 获取首位自变量,为socket连接名,如 S3,获取类型为字符串
  GET_TPE_PRM(1,3 ,value_int,value_real,channel_str,status)
  id = channel_str + ':'
  -- 获取第二个自变量,为操作类型,1为连接0为断开
  GET_TPE_PRM(2,1 ,set_type,value_real,channel_str,status)
  IF (set_type = 0) THEN
  	SM_DISCONNEC(id)
  ELSE
  	SM_CONNEC(id)
  ENDIF
  
  FORCE_SPMENU(TP_PANEL,SPI_TPUSER,1)

END SOCKET_SET

2:新建txt文档,复制以下send程序,将后缀改成kl格式。

-- TCP-Socket 发送数据


PROGRAM SOCKET_SEND
%COMMENT = '发送数据'
%NOPAUSESHFT --忽略SHFT
%INCLUDE klevtpe

VAR
status  :INTEGER
socket_file :FILE --端口绑定文件

-- 寄存器
value_int:INTEGER
value_real : REAL
id, send_str: STRING[128] -- socket连接标号和发送的字符串

BEGIN
	
  -- 获取首位自变量,为socket连接名,如 S3,获取类型为字符串
  GET_TPE_PRM(1,3 ,value_int,value_real,id,status)
  id = id + ':'
  -- 获取第二个自变量,为发送的字符串
  GET_TPE_PRM(2,3 ,value_int,value_real,send_str,status)

  --设定文件属性
  SET_FILE_ATR(socket_file,ATR_IA) --交互式
  SET_FILE_ATR(socket_file,ATR_READAHD,2) --256Byte 缓存区
  
  --文件与端口绑定
  OPEN FILE socket_file('RW',id)
  status = IO_STATUS(socket_file) --文件状态查看
  IF (status <> 0) THEN --文件打开错误
    CLOSE FILE socket_file --关闭文件
    CLR_IO_STAT(socket_file) --清除文件状态
    OPEN FILE socket_file('RW',id) --再次打开文件
  ENDIF  
  WRITE socket_file(send_str)  --向上位机发送
  WRITE TPDISPLAY('向',id,'发送数据: ',send_str,'成功',CR)
  CLOSE FILE socket_file
END SOCKET_SEND

3:新建txt文档,复制以下rece程序,将后缀改成kl格式。

-- TCP-Socket 接收数据


PROGRAM SOCKET_RECE
%COMMENT = '接收数据'
%NOPAUSESHFT --忽略SHFT
%INCLUDE klevtpe

VAR
status  :INTEGER
socket_file :FILE --端口绑定文件
n_bytes :INTEGER --缓存区的字节数
rec_data:STRING[1] --逐字节读取
con_data:STRING[254] --连接收到的数据

-- 寄存器
value_int:INTEGER
value_real : REAL
id: STRING[128] -- socket连接标号和发送的字符串
--解析程序的变量定义
startbit1:INTEGER
startbit2:INTEGER
startbit3:INTEGER
startbit4:INTEGER
startbit5:INTEGER
startbit6:INTEGER
--
endbit1:INTEGER
endbit2:INTEGER
endbit3:INTEGER
endbit4:INTEGER
endbit5:INTEGER
endbit6:INTEGER
--
total_lenth:INTEGER
second_lenth:INTEGER
thirdly_lenth:INTEGER
fourthly_lenth:INTEGER
fifth_lenth:INTEGER
sixth_lenth:INTEGER
--
lenbit1:INTEGER
lenbit2:INTEGER
lenbit3:INTEGER
lenbit4:INTEGER
lenbit5:INTEGER
lenbit6:INTEGER
--
tmp_str:STRING[254]
tmp_str2:STRING[254]
tmp_str3:STRING[254]
tmp_str4:STRING[254]
tmp_str5:STRING[254]
tmp_str6:STRING[254]
--
x_str:STRING[254]
y_str:STRING[254]
z_str:STRING[254]
w_str:STRING[254]
p_str:STRING[254]
r_str:STRING[254]
--
x_int:REAL
y_int:REAL
z_int:REAL
w_int:REAL
p_int:REAL
r_int:REAL
--
pos1:XYZWPR

BEGIN
	
  -- 获取首位自变量,为socket连接名,如 S3,获取类型为字符串
  GET_TPE_PRM(1,3 ,value_int,value_real,id,status)
  id = id + ':'

  --设定文件属性
  SET_FILE_ATR(socket_file,ATR_IA) --交互式
  SET_FILE_ATR(socket_file,ATR_READAHD,2) --256Byte 缓存区
  
  --文件与端口绑定
  OPEN FILE socket_file('RW',id)
  status = IO_STATUS(socket_file) --文件状态查看
  IF (status <> 0) THEN --文件打开错误
    CLOSE FILE socket_file --关闭文件
    CLR_IO_STAT(socket_file) --清除文件状态
    OPEN FILE socket_file('RW',id) --再次打开文件
  ENDIF  
  
  WRITE TPDISPLAY('wait message ...: ',CR)
  LABEL_1::
  BYTES_AHEAD(socket_file,n_bytes,status)
  --WRITE my_file('bytes: ',n_bytes,CR)
  IF (UNINIT(n_bytes)=FALSE) THEN
    IF (n_bytes > 0)AND (status = 0) THEN
      rec_data =''
      con_data =''
      REPEAT
      READ socket_file(rec_data::1) --读取单个字符
      n_bytes = n_bytes - 1 --字节数减一
      con_data = con_data +  rec_data --连接
      UNTIL (n_bytes = 0) --读取完毕
        
      FORCE_SPMENU(TP_PANEL,SPI_TPUSER,1)
      --SET_STR_REG(1,con_data,status)
      WRITE TPDISPLAY('收到数据: ',con_data,CR)
      GOTO LABEL_2
    ENDIF
  ENDIF
  
  DELAY 100  
  GOTO LABEL_1
  
  LABEL_2::
  CLOSE FILE socket_file --关闭文件
  
    --解析程序
    tmp_str=con_data
  	startbit1=1
	total_lenth=STR_LEN(tmp_str)
	endbit1=INDEX(tmp_str,',')
	lenbit1=endbit1-startbit1
	--WRITE TPDISPLAY(tmp_str,CR)
	
	startbit2=endbit1+1
	second_lenth=total_lenth-endbit1
	tmp_str2=SUB_STR(tmp_str,startbit2,second_lenth)
	endbit2=INDEX(tmp_str2,',')+endbit1
	lenbit2=endbit2-startbit2
	--WRITE TPDISPLAY(tmp_str2,CR)
	
	startbit3=endbit2+1
	thirdly_lenth=total_lenth-endbit2
	tmp_str3=SUB_STR(tmp_str,startbit3,thirdly_lenth)
	endbit3=INDEX(tmp_str3,',')+endbit2
	lenbit3=endbit3-startbit3
	--WRITE TPDISPLAY(tmp_str3,CR)
	
	startbit4=endbit3+1
	fourthly_lenth=total_lenth-endbit3
	tmp_str4=SUB_STR(tmp_str,startbit4,fourthly_lenth)
	endbit4=INDEX(tmp_str4,',')+endbit3
	lenbit4=endbit4-startbit4
	--WRITE TPDISPLAY(tmp_str4,CR)
	
	startbit5=endbit4+1
	fifth_lenth=total_lenth-endbit4
	tmp_str5=SUB_STR(tmp_str,startbit5,fifth_lenth)
	endbit5=INDEX(tmp_str5,',')+endbit4
	lenbit5=endbit5-startbit5
	--WRITE TPDISPLAY(tmp_str5,CR)
	
	startbit6=endbit5+1
	sixth_lenth=total_lenth-endbit5
	tmp_str6=SUB_STR(tmp_str,startbit6,sixth_lenth)
	endbit6=INDEX(tmp_str6,',')+endbit5
	lenbit6=endbit6-startbit6
	--WRITE TPDISPLAY(tmp_str6,CR)
	
	--提取6组数据的字符串
	x_str=SUB_STR(tmp_str,startbit1,lenbit1)
	y_str=SUB_STR(tmp_str,startbit2,lenbit2)
	z_str=SUB_STR(tmp_str,startbit3,lenbit3)
	w_str=SUB_STR(tmp_str,startbit4,lenbit4)
	p_str=SUB_STR(tmp_str,startbit5,lenbit5)
	r_str=SUB_STR(tmp_str,startbit6,lenbit6)
	
	--将数据的字符串转换成REAL格式
	CNV_STR_REAL(x_str,x_int)
	CNV_STR_REAL(y_str,y_int)
	CNV_STR_REAL(z_str,z_int)
	CNV_STR_REAL(w_str,w_int)
	CNV_STR_REAL(p_str,p_int)
	CNV_STR_REAL(r_str,r_int)
	--将数据写到PR1位置寄存器
	pos1=CURPOS(0,0)
	pos1.x=x_int
	pos1.y=y_int
	pos1.z=z_int
	pos1.w=w_int
	pos1.p=p_int
	pos1.r=r_int
	SET_POS_REG(1,pos1,status)
	
	IF 0<>status THEN
		WRITE('数据写入失败',status,CR)
	ELSE
		WRITE('数据写入成功',status,CR)
		WRITE('PR[1]:',pos1,CR)
	ENDIF
END SOCKET_RECE

三、编写TP程序,调用以上的通讯程序。

1:使用CALL调用通讯程序。
在这里插入图片描述
2:运行程序,并在打开通讯助手连接,一切设置正常,示教器用户界面会弹出以下消息。
在这里插入图片描述
3:接收信息的格式必须是(1,2,3,4,5,6,),格式不对会报错。最终存放位置的寄存器为第一个。
在这里插入图片描述

四、总结

机器人必须安装插件,IP和端口设置正确。KL程序需要编译成PC程序才能被机器人执行。

FANUC机器人Socket通讯全流程:手把手教你搭建工业4.0测试环境 本文详细介绍了FANUC机器人Socket通讯的全流程配置,从硬件连接到软件设置,包括IP设定、通讯协议构建及上位机开发实践。通过实战案例和性能优化技巧,帮助读者快速搭建工业4.0测试环境,实现设备间高效数据互通。 阅读详情

相关推荐

Fanuc Socket Message通讯第二讲

Fanuc Socket Message通讯第二讲 从站Server设定

haier123888的博客 3479

Fanuc机器人 Karel 编程学习(六)---Socket通信,解析坐标字符串

主要内容:Socket通信,解析上位机发送过来的字符串,机器人作为客户端,上位机作为服务端。

u010369432的博客 6091

发那科机器人视觉Socket通信解析

本文深入探讨发那科机器人与机器视觉系统通过TCP/IP Socket通信实现柔性自动化的关键技术,涵盖通信架构、KAREL编程、数据格式设计、常见问题及优化策略,强调稳定性和工程实践要点。

vv45678的博客 1546

Fanuc机器人 Karel 编程学习(五)---简单的Socket通信

MENU-------> SYSTEM------> Variables------->$KERAL_ENB 设置为1。

u010369432的博客 1万+

FANUC机器人 网口通信-TCP-IP -SM(Socket)

FANUC机器人, 网口TCP/IP SM(Socket)通信,极其繁琐并且极易出错,本人经实践几度波折,踩坑无数,才摸索出如下操作流程,希望能帮助到您

FANUC机器人Socket Message通讯设置及使用手册

FANUC机器人Socket Message通讯设置及使用手册

FANUC机器人socket通讯硬件配置

Fanuc机器人要进行socket通讯,需要有机器人通讯的选配包,1A05B-2600-R648 User Socket Msg,1A05B-2600-R632 KAREL,1A05B-2600-R566 KAREL Diagnostic,1A05B-2600-J971 KAREL Use Sprt FCTN。

A567852的博客 6116

FANUC机器人Socket Message通讯设置及使用手册(中文版).pdf

FANUC机器人的TCP/IP通信设置,用于FANUC机器人与第三方(上位机、视觉等)应用通信的指导文档,中文版

FANUC机器人socket通信模块,通过karel语言编写

调用socket.pc程序,c1客户端,发送的字符串,接收个数3(从R1开始);该模块为发那科机器人字符串通信模块包,直接导入机器人TP中即可使用。1、发送格式为x值0,y值0,r值0,0,0,0,3、根据需求选择接收个数(最大为6个数据);2、数值后面需加0;

xxdffdfd的博客 4010

发那科机器人与视觉socket通讯

发那科机器人与上位机 视觉SOCKET通讯,收发数据,套接字通讯,读写寄存器变量,IO信号,系统变量。

FANUC机器人Socket Message通讯设置及使用手册 SM015_01.pdf

本文档介绍了FANUC机器人的socket通信,中文文档。本文档介绍了FANUC机器人的socket通信,中文文档。

fanuc机器人与视觉通信_懒猫答疑 | FANUC工业机器人以太网通信

问题缘由老师,在了解了FANUC工业机器人的外围设备接口之后,如果我还想对工业机器人进行二次开发,除使用I/O通信方式外,还有没有什么其他的方式呢?懒猫答疑当然有!I/O通信方式是最为简单的一种机器人与外围设备通信的方式,很多视觉系统都是基于I/O方式通信实现的,但工业中还有很多网络通信协议,其中以太网通信就是常见的一种。在之前的课程中已经讲解了FANUC工业机器人以太网的设置,并且也实现了基于S...

weixin_39638526的博客 945

Yolov5s可视化网络结构图

Yolov5共有四种网络结构,每种网络深度和宽度上都不相同。 (1) Yolov5s可视化网络结构图:点击查看 (2) Yolov5m可视化网络结构图:点击查看 (3) Yolov5l可视化网络结构图:点击查看 (4) Yolov5x可视化网络结构图:点击查看 ...

江南研习社 15万+

FANUC机器人SOCKET连接指令编写

创建一个KL文本来编写FANUC机器人socket连接指令。

A567852的博客 3466

Prometheus+Grafana部署及企业微信邮件/群消息告警通知配置

本文详细介绍了在Ubuntu 22.04系统上部署普罗米修斯监控系统的完整流程。首先说明了系统配置要求(2核CPU、4G内存、100G硬盘),然后分步骤指导下载、解压和安装普罗米修斯服务。文章包含配置prometheus.yml文件、启动服务、设置系统服务等关键操作,并提供了访问9090端口验证服务的方法。接着介绍了通过node_exporter监控Linux主机的配置过程,包括安装、启动服务和修改普罗米修斯配置文件添加监控项。最后还涉及了mysqld_exporter的部署流程,用于监控MySQL数据库服

m0_58761900的博客 1627

Ardupilot姿态控制详解(完结篇)

本文主要是对过去写的一些APM中姿态控制流程及函数博文的汇总。 按照之前写的博文以及个人认为的学习顺序,给出APM姿态控制器的学习顺序如下: APM姿态旋转理论基础 Ardupilot姿态控制器 PID控制流程(整定后的P控制器) 详解APM的开方控制器sqrt_controller Ardupilot前馈及平滑函数input_euler_angle_roll_pitch_yaw解析 Ardupilot倾转分离函数thrust_heading_rotation_angles Ardupilot四元数姿态控制

moumde的博客 7018

FANUC发那科机器人socket通讯Karel

该程序实现了一个基于Karel语言的Socket数据通信模块,主要功能包括:1) 配置服务器端口为3000;2) 建立/断开连接;3) 通过TPE参数接口进行数据收发;4) 解析接收到的CSV格式数据。程序包含变量声明、端口设置、连接管理、数据收发、字符串解析和寄存器设置等功能模块,支持位置数据和数值的传输处理。当收到"Send"指令时发送数据,收到"Recv"指令时等待响应并以'#'为结束符接收数据,最后将解析后的数据存入相应寄存器。程序采用循环结构保持连接,并通过状态变量监控操作结果。

qq_51365489的博客 794

CKA-CN考试之路----1

后的的任意位置,但-n 和autoscale 必须是相连的.后面不再对命名空间部分做解释了.说明配置正确,如果无法保存退出,再次检查对齐.不用怀疑一定是复制的时候少了字母或者对齐出错.运行以下命令确认红色箭头的值和题目要求是否一致。将文档中的内容复制并粘贴到对应位置.,后续不再提醒yaml的对齐。确认脚本check1.sh。

Q先生 597

Fanuc 机器人二次开发(Socket通讯加数据传输)

但是Karel程序不能主动的控制机器人运动,需要编写额外的示教程序,然后在Karel程序里面进行调用,我之前的项目是通过通信,将机器人当时的位姿记录下来,记录完成后,自动的按照传输的点位进行运动。过段时间,又得去摸Nachi机器人,适配这个工作既不能了解比较深的学问,又得时常去摸别的品牌的机器人,被一些难搞的设计整的头皮发麻,最重要的还是很无聊,适配的经验就是先摸清楚程序怎么运行,怎么能去控制机器人,再考虑逻辑怎么写,测试环境也要考察一下,才能顺利进行下去。

xx_233的博客 3713

YOLO11涨点优化:创新多尺度卷积注意力(MSCA)模块,小目标检测神器!

MSCA模块通过创新的多尺度设计,在保持计算效率的同时显著提升小目标检测能力。实验证明,在YOLOv5/v8等模型上嵌入MSCA后,mAP提升超过2%,小目标检测精度提升近4%,且计算代价增加极小。注意力机制的未来发展方向动态核尺寸:根据输入特征自适应调整卷积核大小跨模态融合:结合RGB与深度/热力图等多模态信息自监督优化:利用对比学习预训练注意力模块尝试在你的YOLO模型中插入MSCA模块,欢迎在评论区分享你的涨点结果!参考文献。

QQ_778132974的博客 461

手把手教你学Simulink——基于电机驱动系统的场景实例:永磁同步电机(PMSM)在电动汽车中的矢量控制仿真

随着全球对环境保护的关注增加,电动汽车(Electric Vehicle, EV)因其环保特性而受到广泛关注。永磁同步电机(Permanent Magnet Synchronous Motor, PMSM)由于其高效率、高功率密度和良好的动态响应性能,在电动汽车驱动系统中得到了广泛应用。矢量控制(Field-Oriented Control, FOC)是实现PMSM高性能控制的关键技术之一,它能够实现对电机转矩和磁场的独立控制,从而达到类似直流电机的控制效果。本文将详细介绍如何使用来构建一个。

MHD0815的博客 1万+

语句

JavaScript程序由语句组成,语句遵守特定的语法规则。例如:if语句, while语句, with语句等等。 语句种类 块 block 块语句常用于组合0 ~ 多个语句。块语句用一对花括号定义。 语法: { 语句1; 语句2; ... 语句n; } 比如 { var str = "hi"; console.log(st...

weixin_34296641的博客 77

【WRF-Chem教程第四期上】运行 WRF-Chem 模型

完整介绍运行 WRF-Chem 模型的详细步骤

WW、forever的博客 3101

具身机器人高温胶选哪种符合要求?机器人粘接胶选型解析

该类产品可长期耐受180°C高温,具有高剥离强度和剪切强度,可保持在高温和低温下的持久粘接,且通过热固化可快速达到高强度,能耐烤漆操作。在众多需求中,高温环境下的粘接可靠性是较为棘手的问题之一:机器人关节模组长期运行产生热量、传感器在高温工况下的稳定性、外壳在高温环境中的耐久性等,都对胶粘剂的耐高温性能提出严苛要求。关节模组高温粘接,可优先考虑3M DP420/DP460系列环氧树脂胶粘剂,可长期耐受180°C高温,剪切强度高,铝材剪切强度>30MPa,兼顾高强度与抗疲劳。第四,工艺版本可选择。

JIAOZHANZHISHIKU的博客 78

基于Simulink的单级式光伏并网系统MPPT控制仿真

本文基于Simulink平台,详细介绍了单级式光伏并网系统的MPPT控制仿真实现。主要内容包括:1)阐述MPPT作为光伏系统"智能大脑"的核心作用;2)解析单级式系统架构及扰动观察法(P&O)算法原理;3)以10kW户用系统为例,分步骤演示建模过程,包括光伏阵列搭建、P&O控制器实现(含MATLAB代码)、并网控制设计等;4)通过仿真验证系统在光照突变下的动态响应性能,MPPT效率达98.3%。文章还提出了变步长P&O等优化方向,为光伏系统仿真与控制提供实用指导。

xiaoheshang_123的博客 108

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

上一篇: 发那科ROBORGUIDE虚拟示教器无法显示界面的处理方法
下一篇: 博图V16隐式转换数据
bobdemigod
博客等级 码龄7年 25粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值