精华内容
下载资源
问答
  • Qt Modbus TCP 通讯读写操作

    千次阅读 热门讨论 2019-11-16 21:36:01
    Qt Modbus TCP通讯读写Modbus TCP 协议Modbus TCP/IP协议格式Qt Modbus 模块 读写 Modbus TCP 协议 Modbus协议是一个master/slave架构的协议。有一个节点是master节点,其他使用Modbus协议参与通信的节点是slave节点...

    Modbus TCP 协议

    Modbus协议是一个master/slave架构的协议。有一个节点是master节点,其他使用Modbus协议参与通信的节点是slave节点。每一个slave设备都有一个唯一的地址。在串行和MB+网络中,只有被指定为主节点的节点可以启动一个命令(在以太网上,任何一个设备都能发送一个Modbus命令,但是通常也只有一个主节点设备启动指令)。

    Modbus TCP/IP协议格式

    ModbusTCP协议组成

    • 主机poll端发送读写报文样例如下,该报文对应的功能码选择的10
    • 如上图所示,报文主要分为两部分。协议头(MBAP Header)和PDU。PDU 又包含功能码(Function code)和数据(Data)两部分。
    0232 0000 0009 01 10 9C490001020000
    

    协议头: 0232 0000 0009 01
    PDU: 10 9C490001020000

    数据 含义
    0232 主机发出的检验信息,从机slave将这个两个字节放在响应报文中
    0000 表示协议标识符,00 00为modbus的TCP/IP协议
    0009 数据长度,用来指示接下来数据的长度,单位字
    01 设备地址,用以标识连接在串行线或者网络上的远程服务端的地址
    10 功能码,此时代码10为WriteMultipleRegisters写多个寄存器数据
    9C49 写入的起始地址40009
    0001 写入寄存器长度,16进制
    02 0000 写入的数据,02 表示数据长度为两个字节; 0000表示两个字节的数据

    Qt Modbus 模块 读写

    • 引入模块
    QT       += serialbus serialport
    
    • 引入头文件
    #include <QModbusTcpClient>
    #include <QModbusReply>
    
    • 建立连接
    	QModbusClient *modbusDevice=new QModbusTcpClient();
     	modbusDevice->setConnectionParameter(QModbusDevice::NetworkPortParameter,1502);
        modbusDevice->setConnectionParameter(QModbusDevice::NetworkAddressParameter, "127.0.0.1");
        modbusDevice->setTimeout(2000);
        modbusDevice->setNumberOfRetries(3);
        modbusDevice->connectDevice();
    
    • 读取
    //发送请求
    QModbusDataUnit readUnit(QModbusDataUnit::HoldingRegisters,30001,1);
    
        if (auto *reply = modbusDevice->sendReadRequest(readUnit, 1))
        {
            if (!reply->isFinished())
            {
                connect(reply, &QModbusReply::finished,this,&ThisClass::readReady);
            }
            else
            {
                delete reply;
            }
        }
    //处理请求
    void ThisClass::readReady()
    {
        QModbusReply *reply = qobject_cast<QModbusReply *>(sender());
        if (!reply)
            return;
    
        if (reply->error() == QModbusDevice::NoError)
        {
            const QModbusDataUnit unit = reply->result();
    //        if(unit.startAddress()==30001){
                qint16 res=unit.value(0)//        }
    
        }
        else
        {
        }
        reply->deleteLater(); // delete the reply
    }
    
    • 向40009寄存器地址写入1 (0232 0000 0009 01 10 9C49 0001 02 0001)
    //写请求
    // 9C490001020001 :数据部分
     	QByteArray data=QByteArray::fromHex("9c490001020001");
       // QModbusRequest::WriteMultipleRegisters:功能码 10
        QModbusRequest request(QModbusRequest::WriteMultipleRegisters,
            data);
    // 1 :设备地址
        if (auto *reply = modbusDevice->sendRawRequest(request,1))
        {
            if (!reply->isFinished())
            {
                connect(reply, &QModbusReply::finished,this,&ThisClass::writeReady);
            }
            else
            {
                delete reply;
            }
        }
        //响应处理
        void ThisClass::writeReady()
    {
        QModbusReply *reply = qobject_cast<QModbusReply *>(sender());
        if (!reply)
            return;
    
         reply->deleteLater(); // delete the reply
    }
    
    展开全文
  • C# TcpListener的TCP通讯

    千次阅读 2018-05-31 09:23:29
    Socket的TCP通讯一、 socket的通讯原理服务器端的步骤如下。(1)建立服务器端的Socket,开始侦听整个网络中的连接请求。(2)当检测到来自客户端的连接请求时,向客户端发送收到连接请求的信息,并建立与客户端...

    Socket的TCP通讯

    一、 socket的通讯原理

    服务器端的步骤如下。

    (1)建立服务器端的Socket,开始侦听整个网络中的连接请求。

    (2)当检测到来自客户端的连接请求时,向客户端发送收到连接请求的信息,并建立与客户端之间的连接。

    (3)当完成通信后,服务器关闭与客户端的Socket连接。

    客户端的步骤如下。

    (1)建立客户端的Socket,确定要连接的服务器的主机名和端口。

    (2)发送连接请求到服务器,并等待服务器的回馈信息。

    (3)连接成功后,与服务器进行数据的交互。

    (4)数据处理完毕后,关闭自身的Socket连接。

    二、 socket的通讯方式

    socket通讯方式有两种:同步和异步

    同步工作方式:

    用TCP协议进行编程时程序执行到发送、接收和监听语句的时候,在未完成工作前不再继续往下执行,即处于阻塞状态,直到该语句完成某个工作后才继续执行下一条语句。

    异步工作方式

    程序执行到发送、接收和监听语句的时候,不论工作是否完成,都会继续往下执行。

    三、 socket的C#实现

    1. 1.      同步: 

    服务端客户端通信

    在与服务端的连接建立以后,我们就可以通过此连接来发送和接收数据。端口与端口之间以流(Stream)的形式传输数据,因为几乎任何对象都可以保存到流中,所以实际上可以在客户端与服务端之间传输任何类型的数据。对客户端来说,往流中写入数据,即为向服务器传送数据;从流中读取数据,即为从服务端接收数据。对服务端来说,往流中写入数据,即为向客户端发送数据;从流中读取数据,即为从客户端接收数据。

     

    服务端: 

    (1)服务端对端口进行侦听:

    服务器端建立一个socket,设置好本机的ip和监听的端口与socket进行绑定,开始监听连接请求,当接收到连接请求后,发送确认,同客户端建立连接,开始与客户端进行通信。

    [csharp] view plain copy
    1. TcpListener listener =new TcpListener(new IPEndPoint(IPAddress.Parse(ip), port));//ip为服务器IP地址,port为监听的端口  
    2.   
    3. Listener.Start();//开启监听  


     

    (2)检测来自客户端的连接请求

    TcpClient remoteClient = listener.AcceptTcpClient();

    //接收客户端  这里体现了同步的含义,如果客户端对该服务端发起连接的时候,程序在这里就会等待(阻塞),直到有客户端的连接请求为止

    (3)建立和连接的客户端的数据流(传输数据)

    NetworkStream streamToClient = remoteClient.GetStream();

     

    该数据流只要是用来接收和发送数据,同步也分多客户端和单个客户端,如果分的详细一点的话,还有客户端的一条以及多条数据的情况,如果是单个客户端的多条数据的话,连接客户端之后,在建立数据流的前面添加一个循环就可以了,如果是多个客户端的话,在(2)前面加个循环就可以了。为了接收数据的效率,建议不管是同步还是异步,服务端都做成线程,详细见Demo

    (4)接收客户端发送过来的数据(用缓存来接收)

    byte[] buffer = new byte[BufferSize]; // BufferSize为缓存的大小
     
     int bytesRead;
     try
     {
        lock (streamToClient)//为了保证数据的完整性以及安全性  锁定数据流
         {
             bytesRead = streamToClient.Read(buffer, 0, BufferSize);
    }

    (5)向连接的客户端发送数据

    lock (streamToClient)
                          {
                          streamToClient.Write(buffer, 0, buffer.Length);//buffer为发送的字符数组  
    }

          (6)释放数据流和TcpClient(以便下次的数据以及客户端的收发)

    streamToClient.Dispose();//释放数据流中的数据
    remoteClient.Close();//释放TcpClient实例

    客户端 

    (1)   连接服务器

    TcpClient tcp = new TcpClient();
     
    tcp.Connect(IP,Port);//根据服务器的IP地址和侦听的端口连接
     
    if (tcp.Connected)
     
    {
     
    //连接成功的消息机制  详细见DEMO
     
    ShowGetData("成功连接上了服务器:",this.strIP.Text.ToString());
     
     }

    这里需要注意的是,不管是使用有参数的构造函数与服务器连接,或者是通过Connect()方法与服务器建立连接,都是同步方法(或者说是阻塞的,英文叫block)。它的意思是说,客户端在与服务端连接成功、从而方法返回,或者是服务端不存、从而抛出异常之前,是无法继续进行后继操作的。这里还有一个名为BeginConnect()的方法,用于实施异步的连接,这样程序不会被阻塞,可以立即执行后面的操作,这是因为可能由于网络拥塞等问题,连接需要较长时间才能完成。网络编程中有非常多的异步操作,凡事都是由简入难,关于异步操作,我们后面再讨论,现在只看同步操作。

    (2)   建立连接服务端的数据流

    NetworkStream streamToServer = tcp.GetStream();

    (3)   接收和发送数据

    //发送字符串
     
            byte[] buffer = Encoding.Unicode.GetBytes(msg); //msg为发送的字符串  
     
            try
     
              {
     
                 lock (streamToServer)
     
                {
     
                streamToServer.Write(buffer, 0, buffer.Length);     // 发往服务器
     
                 }
              //接收字符串
     
                   buffer = new byte[BufferSize];
     
                   lock (streamToServer)
     
                {
     
                   bytesRead = streamToServer.Read(buffer, 0, BufferSize);
     
                }
     
    }
    1. 2.      异步 

            相对于同步,异步中的连接,接收和发送数据的方法都不一样,都有一个回调函数,就是即使不能连接或者接收不到数据,程序还是会一直执行下去,如果连接上了或者接到数据,程序会回到这个回调函数的地方重新往下执行。详细见下面:

    服务器

    1、 开启侦听接口

    private TcpListener listener;               //监听类
     
    listener = new TcpListener(new IPEndPoint(IPAddress.Parse(ip), port));
     
    listener.Start();//开启侦听,对连接的客户端的数目没有限制
     
    或者
     
    listener.Start(int i);// 开启侦听,最多只能连接i个客户端数目

    2、 接收客户端

    [csharp] view plain copy
    1. <pre name="code" class="csharp">listener.BeginAcceptSocket(clientConnect, listener);//异步接受客户端的连接请求  clientConnect为连接的回调函数  
    2.    
    3. /// <summary>  
    4.    
    5.         /// 接收回调函数  
    6.    
    7.         /// </summary>  
    8.    
    9.         /// <param name="ar"></param>  
    10.    
    11. private void clientConnect(IAsyncResult ar)  
    12.    
    13.         {  
    14.    
    15.             try  
    16.    
    17.             {  
    18.    
    19.                 TcpListener listener = (TcpListener)ar.AsyncState;  
    20.    
    21.                 //接受客户的连接,得到连接的Socket  
    22.    
    23.                 Socket client = listener.EndAcceptSocket(ar);  
    24.    
    25.    
    26.    
    27.             }  
    28.    
    29.             catch { }  
    30.    
    31.         }  


    3、 接收客户端发送的数据

    [csharp] view plain copy
    1. /// <summary>  
    2.    
    3.         /// 异步接收数据  
    4.         /// </summary>  
    5.         private void receiveData(Socket client)  
    6.    
    7.         {  
    8.                 // 调用异步方法 BeginReceive 来告知 socket 如何接收数据  
    9.                 IAsyncResult iar = client.BeginReceive(buffer, 0, BagSize, SocketFlags.None, out errorCode, receiveCallback, buffer);  
    10.             }  
    11.      }  
    12.         /// <summary>  
    13.    
    14.         /// 接收数据回调函数  
    15.    
    16.         /// </summary>  
    17.    
    18.         /// <param name="ar"></param>  
    19.    
    20.         private void receiveCallback(IAsyncResult ar)  
    21.    
    22.         {           
    23.    
    24.                 //接收到的数据长度.  
    25.    
    26.                 int receLen = 0;  
    27.    
    28.                 try  
    29.    
    30.                 {  
    31.    
    32.                     receLen = client.EndReceive(ar, out errorCode);         
    [csharp] view plain copy
    1. if (receLen > 0)  
    2.                     {  
    3.                         OnReceiveData(client);//接收到数据之后的处理函数  
    4.    
    5.                     }  
    6.    
    7.                 }  
    8.                 catch {     }  
    9.             }  
    10.    
    11.             else { }  
    12.    
    13.         }  


    4、接收成功之后,回发数据给客户端

    [csharp] view plain copy
    1. <pre name="code" class="csharp">/// <summary>  
    2.         /// 异步发送报文  
    3.         /// </summary>  
    4.         /// <param name="data"></param>  
    5.         private void OnReceiveData (Socket socket)  
    6.         {   
    7. string strLogin = “succeed recived”;  
    8. byte[] data = Encoding.ASCII.GetBytes(strLogin);          
    9. socket.BeginSend(data, 0, data.Length, SocketFlags.None, out errorCode, sendCallBack, socket);//异步发送数据  
    10.             }  
    11.             else  
    12.             { }  
    13.         }   
    14. /// <summary>  
    15.         /// 异步发送回调事件  
    16.         /// </summary>  
    17.         /// <param name="ar"></param>  
    18.         private void sendCallBack(IAsyncResult ar)  
    19.         {   
    20. socket.EndSend(ar,out errorCode);  
    21.           }  


    客户端 

    1、连接服务器

    [csharp] view plain copy
    1. private TcpClient tcpcz = null  
    2.          tcpcz = new TcpClient()  
    3.     tcpcz.BeginConnect(ipaddress, Convert.ToInt32(port), new AsyncCallback(ConnectCallback), tcpcz);//根据服务器的IP地址和端口号 异步连接服务器    
    4.         /// <summary>  
    5.         /// 异步连接的回调函数  
    6.         /// </summary>  
    7.         /// <param name="ar"></param>  
    8.         private void ConnectCallback(IAsyncResult ar)  
    9.         {   
    10.             TcpClient t = (TcpClient)ar.AsyncState;  
    11.             try  
    12.             {  
    13.                 if (t.Connected)  
    14.                 {  
    15.                     t.EndConnect(ar);//函数运行到这里就说明连接成功  
    16.                 }  
    17.                 else  
    18.                 {  
    19.                 }  
    20.             }  
    21.             catch () {    }  
    22.         }  


    2、发送和接收字符串

       

    [csharp] view plain copy
    1. NetworkStream stream = tcp.GetStream();//创建于服务器连接的数据流  
    2.    
    3.    
    4.    
    5.                   //发送字符串  
    6.    
    7.                   string strLogin = “this is socket example”;  
    8.    
    9.              byte[] data = Encoding.ASCII.GetBytes(strLogin);  
    10.    
    11.           stream.BeginWrite(data, 0, data.Length, new AsyncCallback(SendCallback),stream);//异步发送数据  
    12.    
    13.                   //接收字符串  
    14.    
    15.                 byte[] result = new byte[tcp.Available];// tcp.Available为接受的字符串大小  
    16.                   try  
    17.                   {  
    18.    
    19.                       stream.BeginRead(result, 0, result.Length, new AsyncCallback(ReadCallback), stream);//异步接受服务器回报的字符串  
    20.    
    21.                   }  
    22.                   catch { }  
    23.                   string strResponse = Encoding.ASCII.GetString(result).Trim();//从服务器接受到的字符串  
    24.    
    25.               }  
    26.    
    27.           }  
    28.           catch ()  
    29.           {  
    30.           }  
    31.       }  

              

    以上是这一段时间对socket的一些心得,还在不断学习中,如果上面的讲解有什么不到位的或者错误的,可以交流一下。

    展开全文
  • c#与PLC通过SocketTcp通讯代码

    热门讨论 2013-07-01 09:29:37
    c#与PLC通过SocketTcp通讯代码.仅通讯部分,不包含协议解析
  • LABVIEW学习之MODBUS-TCP通讯

    千次阅读 2020-10-17 21:09:47
    LABVIEW学习之MODBUS-TCP通讯 1,MODBUS-TCP通讯介绍: MODBUS通讯是工业上面经常用到的一种通讯协议。该协议的原理及介绍不在此累述,下面直接介绍LABVIEW对此协议的应用。 2,MODBUS通讯所需的函数: 安装了...

    LABVIEW学习之MODBUS-TCP通讯

     

    1,MODBUS-TCP通讯介绍:

    MODBUS通讯是工业上面经常用到的一种通讯协议。该协议的原理及介绍不在此累述,下面直接介绍LABVIEW对此协议的应用。

    2,MODBUS通讯所需的函数:

    安装了DSC模块之后可以在数据通信内找到相关函数

     3 ,主VI

     主要思路就是使用状态机来进行连接 读取 写入 断开。使用枚举类型来选择状态:

    1,连接

    2,写入多个M继电器:

    3,写入单个M继电器

    4,写入双字节D寄存器

    5,写入多个D寄存器:

    6,写入单个D寄存器:

    7,读取M继电器:

    8,读取双字节D寄存器:

    9,读取单字节D寄存器:

    10,断开:

     以上即为全部程序。在使用时作为子VI被调用即可。

    展开全文
  • TCP通讯与Tomcat

    千次阅读 2016-11-19 15:47:34
    TCP通讯协议特点: 1. tcp是基于IO流进行数据 的传输 的,面向连接。  2. tcp进行数据传输的时候是没有大小限制的。  3. tcp是面向连接,通过三次握手的机制保证数据的完整性。 可靠协议。  4. tcp是面向连接...
    TCP通讯协议特点:
    1. tcp是基于IO流进行数据 的传输 的,面向连接。
      2. tcp进行数据传输的时候是没有大小限制的。
      3. tcp是面向连接,通过三次握手的机制保证数据的完整性。 可靠协议。
      4. tcp是面向连接的,所以速度慢。
      5. tcp是区分客户端与服务端 的。

    三次握手机制 


      比如: 打电话、 QQ\feiQ的文件传输、 迅雷下载.... 
     
    tcp协议下的Socket:
    Socket(客户端) , tcp的客户端一旦启动马上要与服务端进行连接。
    ServerSocket(服务端类)


    tcp的客户端使用步骤:
    1. 建立tcp的客户端服务。
    2. 获取到对应的流对象。
    3.写出或读取数据

    4. 关闭资源。

    tcp的服务端
    java.net.BindException:   端口被占用。

    ServerSocket的使用 步骤
    1. 建立tcp服务端 的服务。
    2. 接受客户端的连接产生一个Socket.
    3. 获取对应的流对象读取或者写出数据。
    4. 关闭资源。

    //tcp客户端
    public class Demo1Clinet {
    	
    	public static void main(String[] args) throws IOException{
    		//建立tcp的服务
    		Socket socket  = new Socket(InetAddress.getLocalHost(),9090);//因为一启动马上要与服务端进行连接,所以需要服务端的地址
    		//获取到Socket的输出流对象
    		OutputStream outputStream = socket.getOutputStream();  //客户端要向服务端输出数据
    		//利用输出流对象把数据写出即可。
    		outputStream.write("服务端你好".getBytes());
    		
    		//获取到输入流对象,读取服务端回送的数据。
    		InputStream inputStream = socket.getInputStream();
    		byte[] buf = new byte[1024];
    		int length = inputStream.read(buf);
    		System.out.println("客户端接收到的数据:"+ new String(buf,0,length));
    		
    		//关闭资源
    		socket.close();		
    	}
    }

    //服务端
    public class Demo1Server {
    
    	public static void main(String[] args) throws Exception {
    		//建立Tcp的服务端,并且监听一个端口。
    		ServerSocket serverSocket = new ServerSocket(9090);//因为服务器是等着客户端来连接的,所以不需要ip地址,只需要监听一个端口
    		//接受客户端的连接     要通过serverSocket.accept()这个方法获取到socket,再通过socket或啊去输入流对象
    		Socket socket  =  serverSocket.accept(); //accept()  接受客户端的连接 该方法也是一个阻塞型的方法,没有客户端与其连接时,会一直等待下去。
    		//获取输入流对象,读取客户端发送的内容。
    		InputStream inputStream = socket.getInputStream();
    		byte[] buf = new byte[1024];
    		int length = 0;
    		length = inputStream.read(buf);
    		System.out.println("服务端接收:"+ new String(buf,0,length));
    		
    		//获取socket输出流对象,想客户端发送数据
    		OutputStream outputStream = socket.getOutputStream();
    		outputStream.write("客户端你好啊!".getBytes());
    		
    		
    		//关闭资源
    		serverSocket.close();
    		
    	}
    	
    }

    为什么ServerSocket不设计一个getInputStream与getOutputStream 呢? 


     需求: 客户端与服务端一问一答聊天。

     1.如果使用BuffrerdReader的readline方法一定要加上\r\n才把数据写出。
     2.使用字符流一定要调用flush方法数据才会写出。

    //聊天的客户端
    public class ChatClient {
    
    	public static void main(String[] args) throws IOException {
    		//建立tcp的客户端服务
    		Socket socket = new Socket(InetAddress.getLocalHost(),9090);
    		//获取socket的输出流对象。
    		OutputStreamWriter socketOut =	new OutputStreamWriter(socket.getOutputStream());
    		//获取socket的输入流对象
    		BufferedReader socketReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    		
    		//获取键盘的输入流对象,读取数据
    		BufferedReader keyReader = new BufferedReader(new InputStreamReader(System.in));
    		
    		String line = null;
    		//不断的读取键盘录入的数据,然后把数据写出
    		while((line = keyReader.readLine())!=null){
    			socketOut.write(line+"\r\n");
    			//刷新
    			socketOut.flush();
    			
    			//读取服务端回送的数据
    			line = socketReader.readLine();
    			System.out.println("服务端回送的数据是:"+line);
    		}
    		//关闭资源
    		socket.close();
    	}
    	
    	
    }
    // 聊天的服务端
    public class ChatServer {
    
    	public static void main(String[] args) throws IOException {
    		//建立tcp的服务端
    		ServerSocket serverSocket = new ServerSocket(9090);
    		//接受客户端的连接,产生一个SOcket
    		Socket socket = serverSocket.accept();
    		//获取到Socket的输入流对象
    		BufferedReader socketReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    		
    		//获取到Socket输出流对象
    		OutputStreamWriter socketOut =  new OutputStreamWriter(socket.getOutputStream());
    		
    		//获取键盘的输入流对象
    		BufferedReader keyReader = new BufferedReader(new InputStreamReader(System.in));
    		
    		
    		//读取客户端的数据
    		String line = null;
    		while((line = socketReader.readLine())!=null){
    			System.out.println("服务端接收到的数据:"+ line);
    			
    			System.out.println("请输入回送给客户端的数据:");
    			line = keyReader.readLine();
    			socketOut.write(line+"\r\n");
    			socketOut.flush();
    		}
    		
    		//关闭资源
    		serverSocket.close();
    	}
    	
    }

    package cn.itcast.tcp;
    
    import java.io.IOException;
    import java.io.OutputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    //模拟Tomcat服务器
    public class TomcatDemo extends Thread {
    	
    	Socket socket;
    	
    	public TomcatDemo(Socket socket){
    		this.socket = socket;
    	}
    	
    	
    	public void run() {
    		try {
    			//获取socket的输出流对象
    			OutputStream outputStream = socket.getOutputStream();
    			//把数据写到浏览器上
    			outputStream.write("<html><head><title>aaa</title></head><body>你好啊浏览器</body></html>".getBytes());
    			socket.close();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    	
    
    	public static void main(String[] args) throws IOException {
    		//建立tcp的服务端
    		ServerSocket serverSocket = new ServerSocket(9090);
    		//不断的接受客户端的连接
    		while(true){
    			Socket socket = serverSocket.accept();
    			new TomcatDemo(socket).start();   //当有一个socket产生,就应该一个线程诞生,专门为这个用户服务
    		}
    	}
    	
    }
    







    展开全文
  • 松下FP系列PLC以太网modbusTCP通讯

    千次阅读 2020-06-13 12:03:01
    松下FP系列PLC以太网modbusTCP通讯 摘要 BCNet-FP针对松下PLC以太网通讯处理器,用于松下FP-XH、FP-X、FP-X0、FP0、FP0R、FP2SH等系列PLC,BCNet-FP模块内部集成ModbusTCP通讯服务器,可不用PLC内编写通讯程序; ...
  • 上位机PC与欧姆龙FINS TCP通讯

    千次阅读 2019-10-02 10:40:15
    最近在做一个视觉项目,需要与欧姆龙PLC建立Fins TCP通讯。刚开始也没搞明白,其实很简单。 1.建议先下载一个Socket Tool 调试工具,与PLC连接后即可以开始测试啦。 2.,测试先握手: 握手 46494E530000000C...
  • C#实现TCP通讯协议

    千次阅读 2018-03-15 12:56:54
    O(∩_∩)O谢谢项目需求:公司锡膏室有四台冰箱,需要对该四台冰箱的温湿度实时采集同时以曲线图方式Show到一块看板上思路:1,需要将设备发送的数据实时存储至数据库(使用TCP通讯协议实时抓取数据) 2,将数据以...
  • Unity 与 Python 实现TCP通讯

    千次阅读 2018-06-19 20:44:35
    前言: 由于最近在做一个项目,要使用到python和Unity 进行TCP通讯,这里介绍以Python端为Server,unity端为Client的例子。Server: 服务端使用的是PyQt中的QTcpServer,用Qt的机制可以实现比较高的效率。 代码...
  • Simotion TCP 通讯数据发送方式

    千次阅读 2018-03-30 20:27:30
    由下图可知,西门子Simotion的TCP通讯为Profinet IO时,是通过IO进行通讯的。所以上位机应该同样以Datastream的方式进行收发数据。...
  • 西门子1200与组态王TCP通讯

    千次阅读 2020-09-07 09:27:04
    西门子1200与组态王TCP通讯 1.0 首先打开组态王软件,这里测试用的是6.6版本的 2.0 点击菜单栏的新建项目,然后下一步 3.0 这一步是选择项目存放的目录,找到存放位置就下一步 4.0 接下来就是设置工程...
  • 1.简述 工业控制中一般采用PLC进行一些简单的运动控制和IO控制,很多时候需要PC端能够操作PLC一些数据。在1979年MODICON公司定义了一种工业现场总线协议标准——Modbus(最初...优势:相比于PLC内部的TCP通讯MODBUS直接
  • [工具.tcp]测试TCP通讯的网络延迟

    千次阅读 2016-09-14 10:23:11
    TCP通讯方式,如果怀疑网络因素导致传输慢,可以使用微软的psping工具,测试tcp的网络延迟。 下载地址:https://download.sysinternals.com/files/PSTools.zip 基本使用: 1. 下载后,将psping.exe拷贝到Windows的...
  • ESP8266与电脑端的TCP通讯例子二

    千次阅读 2018-06-21 19:46:32
    我们讲解ESP8266与电脑端的TCP通讯例子二:ESP8266模块为TCP Client模式,电脑为TCP AP模式。只需将例子一中的Step4进行更改如下:l 首先电脑端接接入一个路由,我连接的教研室的无线网“zonewander_robot”,然后...
  • TCP通讯例程一:固定数据长度的简单数据服务器/客户端通讯 TCP通讯协议提供了可靠的网络连接。其基本过程为:首先服务器通过主机名、端口号建立侦听,等待客户端的连接;客户端根据主机的ip地址和端口号发出连接...
  • .NET Core 实现的 TCP 通讯组件 BeetleX

    千次阅读 2018-09-29 14:49:07
    beetleX是基于dotnet core实现的轻量级高性能的TCP通讯组件,使用方便、性能高效和安全可靠是组件设计的出发点!开发人员可以在Beetlx组件的支持下快带地构建高性能的TCP通讯服务程序,在安全通讯方面只需要简单地...
  • 西门子PLC的TCP通讯(不同项目下)④--TCP测试 上期我们对TSEND_C和TRCV_C组合指令,进行了TCP测试,先置位接收端的EN_R和CONT,然后置位发送端的CONT,然后看到STATUS指令状态显示7004,然后又通过T_DAIG测试...
  • 西门子PLC的TCP通讯(不同项目下)③--TCP测试 上期主要了解了TRCV_C指令的各项参数的意义,如下图 本期将把前面讲的TSEND_C和TRCV_C组合测试,大概准备情况先说下,2个西门子1200PLC,每个PLC放一组TSEND_C和...
  • 使用Socket实现TCP通讯时,服务端响应数据给客户端时,客户端接收数据的端口是随机的。如果想指定客户端接收数据的端口,那么可以在客户端创建Socket时使用如下API: socket = new Socket(ip, serverPort, ...
  • QT模块学习——TCP通讯(工作过程) 工作流程 对于通讯来说,通俗点讲就是客户端先去与服务器建立通讯,也就是发出请求,而在此时一直监听着的服务器收到请求就是响应请求并同意连接,随后发送,在发送成功后...
  • 欧姆龙PLC以太网modbusTCP通讯

    千次阅读 2020-06-30 10:23:04
    摘要 工业通讯桥接器NET30-CS,可以用于欧姆龙CP和CJ系列PLC的以太网通讯...一、通讯桥接器内部集成了Modbustcp的服务器,支持标准的modbus协议,支持功能码包括,FC1,FC2,FC3,FC5,FC6,FC16。所有支持ModbusT...
  • 大家好,今天的测试内容是两个TRIO之间实现modbusTCP通讯。 modbusTCP通讯协议这块就不在这里详细介绍。我们之间看我们配置: 主站: IP地址:192.168.0.251 从站: IP地址:192.168.0.250 作为从站,TRIO...
  • Objective C TCP 通讯实例

    千次阅读 2013-01-23 00:50:49
    TCP通讯实例 Communicator.h  #import @interface Communicator : NSObject { @public NSString *host; int port; } - (void)setup; - (void)open; - (void)close; - (void)stream:(NSStream *)...
  • visionpro TCP通讯

    千次阅读 2019-10-06 20:17:46
    主要是利用工控机作为客户端,自己笔记本的Visionpro作为服务器,来实现通讯; 1.c# 中第一个框中的填的是 工控机的IP 7001是服务器监听的端口 这里的IP地址,如果服务器中地址是笔记本本机地址,那本这里相应的也...
  • FX5U 与 FX5U Modbus TCP 协议通讯。(通讯协议支持功能) 参考手册:FX5U 用户手册(Modbus 通讯篇) 测试样例思路:主站读取从站 Y0-Y7 的状态到以 D17 开始的数 据寄存器中(此例为 D17),主站读从站 D0,D1,D2...
  • 基于STM32和W5500的Modbus TCP通讯

    千次阅读 热门讨论 2016-07-29 12:31:30
    在最近的一个项目中需要实现Modbus TCP通讯,而选用的硬件平台则是STM32F103和W5500,软件平台则选用IAR EWAR6.4来实现。 1、移植前的准备工作 为了实现Modbus TCP通讯首先需要下载W5500的驱动源码,可以到WIZnet...
  • UDP、TCP通讯例程汇总

    千次阅读 2014-12-31 22:55:35
    最近项目需要,学习了UDP、TCP通讯,关于这部分的原理解释可以参考我之前的博客:TCP通信原理及封包问题(详细,案例解析)。深入了解之后发现其实UDP、TCP各自都存在缺陷。UDP是无连接的通信,不可靠会造成丢包问题...
  • Netty实现tcp通讯(telent发送消息)

    千次阅读 2018-11-30 11:01:27
    实现了简单的tcp通讯。 代码很简单,最后我们会用Linux下的Telnet命令连接到服务端。并且给服务端发送消息。 代码 tcp服务端 package netty; import io.netty.bootstrap.ServerBootstrap; import io.netty....
  • Android端与服务端TCP通讯

    热门讨论 2012-12-09 11:40:46
    利用TCP/IP协议,使用Socket在Android端与服务端进行简单的输入通讯

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 188,434
精华内容 75,373
关键字:

tcp通讯