欧姆龙NX1P网络通信控制台达机械手DRS40L

本文介绍了如何使用欧姆龙NX1P PLC作为TCP服务器与台达DRS40L机械手进行通信。通过官方手册中的SktTCPAccept、SktTCPRcv、SktTCPSend等功能块实现连接,并对欧姆龙提供的示例程序进行修改,使其能反复发送和接收信息。在PLC端,发送数据后需要对功能块实例进行初始化,确保数据不冗余。在机械手端,通过SocketClass建立连接,并注意数据分隔符的设置。
摘要由CSDN通过智能技术生成

1.NX1P官方文件:

在欧姆龙官方的手册上我们可以看见TCP通信的如下功能块:

 

我们使用的是以plc作为服务器,机械手作为客户端。

SktTCPAccept :建立TCP服务器的指令。

SktTCPRcv:接受客户端信息指令。

SktTCPSend:服务器发送指令。

SktTCPStatus:链接状态。

2.欧姆龙官网试例子程序:

这个示例程序虽然使用的case指令,但依旧是按照case的选项顺序执行,也就是说这段程序只能执行一次,无法反复执行。

// 在Trigger的上升沿启动时序
IF ( (Trigger=TRUE) AND (DoTCP=FALSE) AND (_Eip_EtnOnlineSta=TRUE) ) THEN
    DoTCP :=TRUE;
    Stage :=INT#1;
    SktTCPConnect_instance(Execute:=FALSE); // 实例初始化
    SktClearBuf_instance(Execute:=FALSE); // 实例初始化
    SktGetTCPStatus_instance(Execute:=FALSE); // 实例初始化
    SktTCPSend_instance( // 实例初始化
    Execute :=FALSE,
    SendDat :=SendSocketDat[0]); // 虚拟
    SktTCPRcv_instance( // 实例初始化
    Execute :=FALSE,
    RcvDat :=RcvSocketDat[0]); // 虚拟
    SktClose_instance(Execute:=FALSE); // 实例初始化
    END_IF;
    IF (DoTCP=TRUE) THEN
    CASE Stage OF
    1 : // 连接请求
    SktTCPConnect_instance(
    Execute :=TRUE,
    SrcTcpPort :=UINT#0, // 本机UDP端口编号 自动分配
    DstAdr := ‘192.168.250.2’, // 对方IP地址
    DstTcpPort :=UINT#6000, // 对方TCP端口编号
    Socket =>WkSocket); // Socket
    IF (SktTCPConnect_instance.Done=TRUE) THEN
    Stage:=INT#2; // 正常结束
    ELSIF (SktTCPConnect_instance.Error=TRUE) THEN
    Stage:=INT#10; // 异常结束
    END_IF;
    2 : // 清除接收缓存
    SktClearBuf_instance(
    Execute :=TRUE,
    Socket :=WkSocket); // Socket
    IF (SktClearBuf_instance.Done=TRUE) THEN
    Stage:=INT#3; // 正常结束
    ELSIF (SktClearBuf_instance.Error=TRUE) THEN
    Stage:=INT#20; // 异常结束
    END_IF
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值