Fanuc机器人 Karel 编程学习(五) |
您所在的位置:网站首页 › fanuc机器人程序实例 › Fanuc机器人 Karel 编程学习(五) |
Fanuc Karel编写Socket程序和上位机进行通信。
一:环境配置(ROBOGUIDE)
1.1机器人系统变量设置
MENU-------> SYSTEM------> Variables------->$KERAL_ENB 设置为1 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字节): 代码如下: PROGRAM tcpserv2 %STACKSIZE = 4000 %NOLOCKGROUP %NOPAUSE = ERROR +COMMAND +TPENABLE %ENVIRONMENT uif %ENVIRONMENT sysdef %ENVIRONMENT memo %ENVIRONMENT kclop %ENVIRONMENT bynam %ENVIRONMENT fdev %ENVIRONMENT flbt %INCLUDE klevccdf %INCLUDE klevkeys %INCLUDE klevkmsk VAR file_var : FILE tmp_int : INTEGER tmp_int1 : INTEGER tmp_str : STRING[128] tmp_str1 : STRING[128] status : INTEGER entry : INTEGER BEGIN SET_FILE_ATR(file_var, ATR_IA) -- set the server port before doing a connect SET_VAR(entry, '*SYSTEM*','$HOSTS_CFG[3].$SERVER_PORT',59002,status) WRITE('Connecting..',CR) MSG_CONNECT('S3:',status) --WRITE(' CONNECT Status = ',status,CR) IF status = 0 THEN -- Open S3: WRITE ('Opening',CR) FOR tmp_int1 = 1 TO 20 DO OPEN FILE file_var( 'rw','S3:') status = IO_STATUS(file_var) WRITE (status,CR) IF status = 0 THEN -- write an integer FOR tmp_int = 1 TO 1000 DO WRITE('Reading',CR) -- Read 10 bytes BYTES_AHEAD(file_var, entry, status) WRITE(entry, status, CR) READ file_var (tmp_str::10) status = IO_STATUS(file_var) WRITE (status, CR) -- WRITE 10 bytes WRITE (tmp_str::10, CR) WRITE file_var (tmp_str::10) status = IO_STATUS(file_var) WRITE (status, CR) ENDFOR CLOSE FILE file_var ENDIF ENDFOR WRITE('Disconnecting..',CR) MSG_DISCO('S3:',status) WRITE('Done.',CR) else WRITE('connecting error',CR) MSG_DISCO('S3:',status) ENDIF END tcpserv2 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |