1
什么是socket通讯?
socket通讯是一种无协议的
TCP/IP通讯,
在微软环境下称为socket通讯。
通过socket通讯可以
收发定制数据,
包括sting字符串,byte数组等。
ABB机器人进行socket通讯的前提是
机器人有配置616-1 PL-INTERFACE选项,
ABB机器人的标准配置有包括616-1 PL-INTERFACE选项,
但不排除没有的情况,
所以
进行前期设计时要注意一下。
可以通过机器人示教器查看机器人的系统配置
如下所示:
socket通讯有客户端和服务端的区分。
客户端是:
对被动等待TCP连接的对方设备执行
主动开放处理的一方;
服务端是:
被动等待TCP连接,侦听等待的一方。
socket通讯的三要素:
1、机器人侧的IP地址及端口号;
2、PLC侧的IP地址及端口号;
3、通讯双方哪一侧为开放侧(客户端)
//**********方式的选择**********//
通讯实现的一种方式是:
以机器人作为client(客户)端,
PLC作为server(服务)端来实现;
另一种方式是:
以PLC作为客户端,
机器人作为服务端来实现。
不管哪一侧作为开放侧都可以实现交互通讯
看个人的习惯而定。
///////////////////////////////
当你只负责PLC这一块时:
机器人有另外的人去负责的话,
你可以把PLC侧作为服务端,
只需收发程序就可以,
不需要写socket主动打开open的程序。
///////////////////////////////
当PLC和机器人都是由你负责时:
你可以把PLC作为客户端,
主动打开连接,
PLC作为主控,
机器人作为服务端执行程序,
这样更有利于报警提示人机交互的完善。
☆☆☆☆☆以下为程序代码写法干货
以下我们来介绍
ABB机器人socket通讯方式的程序写法:
机器人作为client(客户)端:
VAR socketdev socket1;
!定义套接字变量socket1
VAR string strsend;
!定义字符串变量strsend
VAR string chrRead;
!定义字符串变量chrRead
TPErase;
!擦除在FlexPendant示教器上印刷的文本
SocketClose socket1;
!关闭套接字
SocketCreate socket1;
!创建连接
SocketConnect socket1, "192.168.1.20", 4096;
!建立连接程序执行将等待,直至连接得以建立、失效或出现超时。
TPWrite "socket clinent connect successful";
!在示教器上显示连接成功
SocketSend socket1 \Str := strsend+"\0D\0A";
!将strsend的数据发送给远程端。
SocketReceive socket1 \Str := chrRead;
!从远程端接收数据,并将其储存在字符串变量chrRead中。
TPWrite "server wrote ="+ chrRead;
!在示教器上显示接收的数据。
机器人作为server(服务)端:
VAR socketdev server_socket;
!定义套接字变量server_socket
VAR socketdev client_socket;
!定义套接字变量client_socket
VAR string receive_string;
!定义字符串变量receive_string
TPErase;
!擦除在FlexPendant示教器上印刷的文本
SocketClose server_socket;
!关闭套接字server_socket
SocketClose client_socket;
!关闭套接字client_socket
SocketCreate server_socket;
!创建套接字连接server_socket
SocketBind server_socket,"192.168.1.22",4096;
!创建服务器套接字,绑定IP及端口
SocketListen server_socket;
!监听是否有client(客户端)连接
socketAccept server_socket,client_socket;
!接受输入连接,client_socket之后可用。
SocketReceive client_socket\Str:=receive_string;
!接收数据,并将其储存在字符串变量receive_string中。
TPWrite "client wrote-"+ receive_string;
!在示教器上显示接收的数据。
SocketSend client_socket\Str:="Server Menting";
!将字符串数据"Server Menting"发送出去。
SocketClose server_socket;
!关闭套接字server_socket
SocketClose client_socket;
!关闭套接字client_socket