通过套接字通信从外部视觉装置读取偏移量的步骤
机器人使用步骤书
那智不二越(上海)貿易有限公司
作成日:2014 年 4 月 18 日
通过套接字通信
从外部视觉装置读取
偏移量的步骤
<目 录>
No.
项 目
备注
No.
项 目
备注
1 概要、目的
2 配线
3 各种设定
4 用户任务程序
5 机器人程序
6 功能确认方法
7 参考资料
8
9
10
修订
编号
revision
No.
年 月 日
Date
主 要 变 更 内 容
Main revision
Rev.1
2014/ 4/18 新規作成
NACHI – FUJIKOSHI Corp. Robot manufacturing division
发生变更
理 由
Reason
作成
DSN’D
承认
APV’D
1/11
第 1 章 概要、目的
通过套接字通信从外部视觉装置读取偏移量的步骤
利用套接字通信功能连接外部视觉装置与机器人,从外部视觉装置读取工件相对于基准位置的偏
移量。将此偏移量写入移动寄存器,机器人程序利用此移动寄存器内的偏移量动作至工件位置。
套接字通信功能是通过用户任务程序使用各种应用指令进行以太网通信的功能。创建进行以太网
通信的用户任务程序后,便可以通过以太网与外部视觉装置进行各种数据的读取与写入。
机器人程序
… … …
… … …
… … …
… … …
调用用户任务程序
… … …
视觉装置
创建套接字
↓
连接视觉装置
↓
请求数据
↓
接收数据
↓
代入移位寄存器
与外部视觉装置的连接实例
NACHI – FUJIKOSHI Corp. Robot manufacturing division
2/11
第 2 章 配线
通过套接字通信从外部视觉装置读取偏移量的步骤
请按照下图用以太网电缆线将机器人控制装置与外部视觉装置间进行连接。
本控制装置
外部视觉装置
以太网电缆
以太网插口位置请参考以下机器人控制装置 USB 插口位置示意图。
如有需要进行 I/O 的连线,请参考【FD 控制装置操作说明书设定篇】的第 3 章[连接]内 I/O 连接
的相关内容进行接线。
CFD 控制装置
FD 控制装置
NACHI – FUJIKOSHI Corp. Robot manufacturing division
3/11
第 3 章 各种设定
通过套接字通信从外部视觉装置读取偏移量的步骤
3.1 TCP/IP 设定
进行以太网通信,需要设定本控制装置的 IP 地址、子网掩码等。请按照[常数设定]→[8 通
信]→[2 以太网]→[TCP/IP]的顺序进行设定。
①、选择示教模式。
②、选择<常数设定> – [8 通信] – [2. 以太网] – [1 TCP/IP]。
≫ 出现如下 TCP/IP 的设定画面。
③、参照"表 8.2.2 TCP/IP 的设定",以便设定必要的参数。
④、设定结束,则按下 f12<写入>。
⑤、为了使新设定有效,重新打开控制装置的电源。
TCP/IP 的设定相关内容可以参见“设定篇”[8 章 对以太网的连接]操作说明书。
3.2 内藏PLC 设定
如应用了内部 PLC 程序,请设定内部 PLC 程序至运行状态。设定方法如下:
①、在示教模式下,选择 f5<常数设定>-[1 控制环境],从显示的菜单当中选择[4 内
藏 PLC]。
≫显示出如下所示的内藏 PLC 的相关设定菜单。
②、同时按下[动作可能]+[左右],选择“启动”。
③、按下 f12<写入>。
≫转成“启动”的控制状态。
内部PLC的相关内容可以参见“软件PLC篇”操作说明书。
NACHI – FUJIKOSHI Corp. Robot manufacturing division
4/11
通过套接字通信从外部视觉装置读取偏移量的步骤
第 4 章 用户任务程序
4.1 用户任务的启动方式
使用函数FN670 FORKMCR、FN671 CALLMCR等从机器人程序中启动用户任务。关于函数FORKMCR的
详细说明请参考“命令参考篇”。
4.2 用户任务程序
外部视觉装置发送的数据结构如下时,
[确认码D + X轴数值 + 空格 + Y轴数值 + 空格] (此时X轴数值、Y轴数值长度均不固定)
相对应编写用户任务程序USERTASK-A.010如下:
'Socket communication
'********************************************************************
'* User name
'* TCP/IP communication program
'* Date: 2014/4/10
'* Copyright(c) 2014 NACHI-Fujikoshi corp.
'********************************************************************
'* Integer variables definition
'* V101% : Receive data size [byte]
'* V108% : Socket error code E1
'* V109% : Socket error code E2
'*-------------------------------------------------------------------
'* Real variables definition
'* V1!-6! : Receive position (X,Y,Z,Roll,Pitch,Yaw)
'*-------------------------------------------------------------------
'* Real variables definition
'* V1$ : Error message
'* V2$ : Socket status
'* V3$ : Downlink message
'* V4$ : Uplink message
'* V6$ : Initial check
'* V11$-16$: Receive string (X,Y,Z,Roll,Pitch,Yaw)
'* V21$-26$: Receive string buffer (X,Y,Z,Roll,Pitch,Yaw)
'*-------------------------------------------------------------------
'* Socket buffer
'* Buffer 1 : Send buffer
'* Buffer 2 : Receive buffer
'********************************************************************
'***** Initialize *****
*INITIAL
'String variables (V1$-V26$)
FOR L100%=1 TO 26 STEP 1
NEXT
'Integer variables (V100%-V118%)
FOR L100%=100 TO 118 STEP 1
NEXT
'Real variables
FOR L100%=1 TO 10 STEP 1
V$[L100%]=""
V%[L100%]=0
(V1!-V10!)
NACHI – FUJIKOSHI Corp. Robot manufacturing division
5/11
通过套接字通信从外部视觉装置读取偏移量的步骤
'Socket#1 & TCP/IP
V![L100%]=0
SOCKCREATE 1,0
IF E1%>=0 THEN *CONNECT
V1$="Socket create fail"
PAUSE 1000
NEXT
'***** Create socket *****
*CREATE
'创建套接字通信接口,如连续3秒未能创建则重新开始
V2$="CREATE SOCKET"
'Retry until about 3sec
FOR L100%=0 TO 3 STEP 1
NEXT
'Socket create error
V1$="Socket create error"
GOTO *RESET
'***** Socket Connect *****
*CONNECT
V1$=""
V2$="CONNECT"
SOCKCONNECT 1,111,3000,5
IF E1%>=0 THEN *TRIGGER
V1$="Connect fail"
V108%=E1%
V109%=E2%
GOTO *RESET
'***** Receive downlink message *****
*TRIGGER
'通过输出信号O1激发相机拍摄
V2$="TRIGGER"
SET O1
PAUSE 200
RESET O1
'如需要通过发送字符串激发相机拍摄,请使以下语句有效
'V10$="|>ONESHOT" + CHR$(13) + CHR$(10)
'SOCKSENDSTR 1,V10$,LEN(V10$),5,V1%
'V2$="TRIGGER"
'PAUSE 200
*DOWNLINK
V108% = 0
V109% = 0
V2$="DOWNLINK PROCESS"
*INI_CK
'起始字节判断,正常数据以D为起始字节
V2$="INITIAL_CK"
'Clear socket error E1
'Clear socket error E2
NACHI – FUJIKOSHI Corp. Robot manufacturing division
6/11
通过套接字通信从外部视觉装置读取偏移量的步骤
SOCKRECV 1,2,1,1,V101%
IF E1%<0 THEN *DLINK_ERROR
GETSTR 2,V6$,0,1
IF V6$="D" THEN *GET_DATA_X
GOTO *INI_CK
*GET_DATA_X
'逐个字节接收X数据,至空格(ASCII码16)结束,开始接收Y数据
V2$="GET_DATA_X"
SOCKRECV 1,2,1,3,V101%
IF E1%<0 THEN *DLINK_ERROR
GETSTR 2,V21$,0,1
IF V21$=CHR$(16) THEN *GET_DATA_Y
V11$ = V11$ + V21$
GOTO *GET_DATA_X
*GET_DATA_Y
'逐个字节接收Y数据,至空格(ASCII码16)结束
V2$="GET_DATA_Y"
SOCKRECV 1,2,1,3,V101%
IF E1%<0 THEN *DLINK_ERROR
GETSTR 2,V22$,0,1
IF V22$=CHR$(16) THEN *GET_DATA_END
V12$ = V12$ + V22$
GOTO *GET_DATA_Y
'如要接收其它轴数据,在此后追加
*GET_DATA_END
V2$="DOWNLINK RECEIVED"
'***** Read Data *****
*DLINK_PROC
'String<->Value
'字符串转换为实数,如相机发送的是浮点型实数则直接接收即可
V1! = VAL(V11$)
V2! = VAL(V12$)
'SHIFT REGISTER
R1=(V1!,V2!,0,0,0,0)
'***** Downlink end *****
*DLINK_END
EXIT
'***** Downlink error *****
*DLINK_ERROR
V1$="Downlink error"
GOTO *ERROR
'***** Reset *****
*RESET
SOCKCLOSE 1
NACHI – FUJIKOSHI Corp. Robot manufacturing division
7/11
通过套接字通信从外部视觉装置读取偏移量的步骤
GOTO *INITIAL
'***** Program end *****
*ERROR
'如通信出错则将移动寄存器R1清零,防止机器人误动作
V108%=E1%
V109%=E2%
R1=(0,0,0,0,0,0)
EXIT
NACHI – FUJIKOSHI Corp. Robot manufacturing division
8/11