当前位置:   article > 正文

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

fanuc socket

Fanuc Karel编写Socket程序和上位机进行通信。

一:环境配置(ROBOGUIDE)

1.1机器人系统变量设置

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

1.2 IP地址设定

MENU---->SETUP---->Host Comm

选择 F3【DETAIL】进入IP设置界面

备注:按键F3【PORT】可以选择相应的物理网口Port#1 或者Port#2,具体需要看你网线插在哪个物理网口上 

设置IP地址和上位机在同一网段,不同IP地址。如果是ROBOGUIDE软件,此地址需要和电脑网口的IP地址一样。

当前我设置的IP地址是192.168.1.111,我上位机软件设置的是192.168.1.100

1.3 Tcp Server 设定

MENU---->SETUP---->Host Comm

 

 选择 F4【SHOW】--->3  进入SERVER设置界面:

可以看到S1,S2 是FTP服务,S3是我之前设置好的TCP 服务器。这里以S4为例。

选择S4 ,按F3【DETAIL】或者Enter 进入:

在 Protocol 处,按 F4 【CHOICE】,并选择 SM :

 在 Startup  State 处,按 F4 【CHOICE】并选择DEFINE :

在 Server IP/Hostname 处,按 Enter ,输入上位机的 IP 地址:

在 Startup  State 处,按 F4 【CHOICE】并选择Start :

按 F2 【ACTION 】,并选择start ,界面会变成: 

 Server Prot 设置,

方法一:

在Karel 程序中设置:

例如:设置S3的Server Port 端口为59002

SET_VAR(entry, '*SYSTEM*','$HOSTS_CFG[3].$SERVER_PORT',59002,status)

方法二:

MENU-------> SYSTEM------> Variables------->$HOSTS_CFG   Enter键进入如下界面:

注意:$HOSTC_CFG 配置的是客户端,$HOSTS_CFG 是服务器

我们选择S4 对应的变量【4】 按Enter 键进入如下界面:

找到并更改ServerPort,这里我们把ServerPort 改成7894  

然后重启断开Robot电源重新启动Robot生效。

1.4 Tcp Client 设定

按照上面设定IP步骤进入如下界面:

 按 F4 【SHOW】并选择 Clients (机器人将作为 Client ,上位机作为 Server):

进入如下界面:

 选择 Tag 标签号,这里以 C1 为例,按 Enter 或 F3 【DETAIL 】进入如下界面

 在protocol 处,按F4【CHOICE】,并选择  SM

在Startup State处,按F4【CHOICE】并选择DEFINE:

 在Sever IP/Hostname处键入 TCP Server  IP地址:

按F2【ACTION】,并选择 DEFINE:

 Port号的设置

MENU-------> SYSTEM------> Variables------->$HOSTC_CFG Enter键进入如下界面:

 选择C1 对应的【1】 ,按Enter或者DETAIL 进入:

 找到$SERVER_PORT,并设置值,注意这个端口号由上位机服务器决定,我们设定的值需要和服务器端一致。

 完成后重启机器人控制器生效。

二,简单的服务器程序实现Socket 通信。

效果如下(读入10字节,返回10字节):

代码如下:

  1. PROGRAM tcpserv2
  2. %STACKSIZE = 4000
  3. %NOLOCKGROUP
  4. %NOPAUSE = ERROR +COMMAND +TPENABLE
  5. %ENVIRONMENT uif
  6. %ENVIRONMENT sysdef
  7. %ENVIRONMENT memo
  8. %ENVIRONMENT kclop
  9. %ENVIRONMENT bynam
  10. %ENVIRONMENT fdev
  11. %ENVIRONMENT flbt
  12. %INCLUDE klevccdf
  13. %INCLUDE klevkeys
  14. %INCLUDE klevkmsk
  15. VAR
  16. file_var : FILE
  17. tmp_int : INTEGER
  18. tmp_int1 : INTEGER
  19. tmp_str : STRING[128]
  20. tmp_str1 : STRING[128]
  21. status : INTEGER
  22. entry : INTEGER
  23. BEGIN
  24. SET_FILE_ATR(file_var, ATR_IA)
  25. -- set the server port before doing a connect
  26. SET_VAR(entry, '*SYSTEM*','$HOSTS_CFG[3].$SERVER_PORT',59002,status)
  27. WRITE('Connecting..',CR)
  28. MSG_CONNECT('S3:',status)
  29. --WRITE(' CONNECT Status = ',status,CR)
  30. IF status = 0 THEN
  31. -- Open S3:
  32. WRITE ('Opening',CR)
  33. FOR tmp_int1 = 1 TO 20 DO
  34. OPEN FILE file_var( 'rw','S3:')
  35. status = IO_STATUS(file_var)
  36. WRITE (status,CR)
  37. IF status = 0 THEN
  38. -- write an integer
  39. FOR tmp_int = 1 TO 1000 DO
  40. WRITE('Reading',CR)
  41. -- Read 10 bytes
  42. BYTES_AHEAD(file_var, entry, status)
  43. WRITE(entry, status, CR)
  44. READ file_var (tmp_str::10)
  45. status = IO_STATUS(file_var)
  46. WRITE (status, CR)
  47. -- WRITE 10 bytes
  48. WRITE (tmp_str::10, CR)
  49. WRITE file_var (tmp_str::10)
  50. status = IO_STATUS(file_var)
  51. WRITE (status, CR)
  52. ENDFOR
  53. CLOSE FILE file_var
  54. ENDIF
  55. ENDFOR
  56. WRITE('Disconnecting..',CR)
  57. MSG_DISCO('S3:',status)
  58. WRITE('Done.',CR)
  59. else
  60. WRITE('connecting error',CR)
  61. MSG_DISCO('S3:',status)
  62. ENDIF
  63. END tcpserv2

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号