C# 机器视觉工控通讯------三菱机器人上位机通讯

该文介绍了一种在Windows环境下,使用C#的Socket功能与机器人控制器进行通信的方法。由于防火墙和网关限制,通信需通过同一网络内的HTTP服务器作为中介。文章详细阐述了连接控制器服务器、发送数据的步骤,并提到了安全性和响应性的注意事项。具体包括利用TcpClient建立连接,发送视觉数组数据,并处理接收的响应。
Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本


前言

本实列使用Windows下 Socked功能与机器人控制器通信的计算机,需要在相同网络上。防火墙穿越(从因特网)及网关穿越(从邻近的其他网络等)无法进行 通信。此时,应探讨经由已连接至与机器人控制器相同的网络的服务器(例如 HTTP 服务器等)进行通信的形态下的运用。 此时,应充分注意安全性、响应性。 其通讯框图如下:

 

二、使用步骤

1.引入库

using System.Net.Sockets;

2.连接控制器服务器

代码如下(示例):

        public static TcpClient robotClient = new TcpClient();
        public static bool connectSvr(string ip, int port)
        {
            const int BufferSize = 8192;    // 缓存大小,8192Bytes
            IPAddress SvrIp = IPAddress.Parse(ip);
            try
            {
                Thread.Sleep(100);
                robotClient.Connect(SvrIp, port);
                return true;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                return false;
            }
        }

3. 发送视觉数组数据给机器人

    public static bool SendAdnRec(string sendStr)
        {
            const int BufferSize = 8192;    // 缓存大小,8192Bytes
            NetworkStream streamToServer = robotClient.GetStream();
            byte[] buffer = Encoding.ASCII.GetBytes(sendStr);     // 获得缓存
            if (robotClient.Connected)
                streamToServer.Write(buffer, 0, buffer.Length);     // 发往服务器
            string[] ssend = sendStr.Split(',');
            int bytesRead;
            buffer = new byte[BufferSize];
            //streamToServer.ReadTimeout = -1;//永久等待
            streamToServer.ReadTimeout = 500;
            lock (streamToServer)
            {
                try
                {
                    bytesRead = streamToServer.Read(buffer, 0, BufferSize);//等待接收
                    msg = string.Empty;
                    msg = ASCIIEncoding.UTF8.GetString(buffer, 0, bytesRead);
                    //char[] cmsg = msg.ToCharArray();
                    String LogMSg = msg;
                    cPublic.saveDataLog(LogMSg);
                    return true;
                }
                catch
                {
                    String LogMSg = "机器人通讯超时";
                    cPublic.saveDataLog(LogMSg);
                    return false;
                }
            }
      
        }

总结

本功能是C#下上位机和三菱机械手控制器在以太网通信机器中,通过以太网 UDP 通信对机器人控制器的直交/关节位置数据等机器人的当前位置及前端速度 等进行实时监视的功能

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值