【工控通信】ModbusTCP通讯之ModbusPoll客户端工具配置

这篇具有很好参考价值的文章主要介绍了【工控通信】ModbusTCP通讯之ModbusPoll客户端工具配置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


一、 Modbus Poll客户端工具安装

1.安装Modbus Poll客户端工具
modbus tcp客户端和服务器软件,工业控制,tcp/ip

2.Modbus Poll客户端工具安装好以后的界面
modbus tcp客户端和服务器软件,工业控制,tcp/ip

二、Modbus Poll客户端工具自带使用说明

Overview

Modbus Poll uses a multiple windows user interface. That means you can open several windows showing different data areas or data from different slave ID’s at the same time. You can write any text in the Alias cells.

In any dialog box you can press the F1 key for more help on that specific topic.


modbus tcp客户端和服务器软件,工业控制,tcp/ip
This picture shows two open windows one reading 10 holding registers from ID 1, address 0 and one reading 10 holding registers from ID 2.

If your slave device allows you to change a Holding register then
youdouble click the cell or just start typing a new value in the
cell.Then an edit dialog box is shown.

Change the read/write definition

To change the read/write definition of a window you can press F8 or select “read/write definition” from the Setup menu.

modbus tcp客户端和服务器软件,工业控制,tcp/ip
Here you define which data to show in the window. This setup shows how toread 10 Holding Registers from address 0. Address 40001 in someprotocol descriptions. Note that Modbus Poll uses Modbus addresseswhich always counts from 0.

modbus tcp客户端和服务器软件,工业控制,tcp/ip
modbus tcp客户端和服务器软件,工业控制,tcp/ip

How to make a connection

There is no data to display if you have not made a connection. To do so press F3 or select connect from the connection menu. For more detailed help press F1.
modbus tcp客户端和服务器软件,工业控制,tcp/ip
This connection use Modbus TCP/IP.

5 different connection types are available however only 2 of them are standard Modbus connections:
•Serial port
•Modbus TCP/IP

For serial connection you may need an USB to RS485, or an RS232 to RS485 converter.

三、 创建自己的Modbus TCP服务端程序

1、我在自己的程序中做了个ModbusTCP服务器,在服务器开启之后,并且ModbusTCP客户端与服务端通讯成功之后,向ModbusTCP客户端写数据。ModbusPull作为客户端。

服务端程序:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using System.Net.Sockets;
using Modbus.Device;
using Modbus.Data;

namespace ModbusTCPServer
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        
        //定义公共变量
        public static bool isModBusServerEnable = true;
        public static ModbusSlave modbusTcpSlave = null;
        public static TcpListener tcpListener;
        public static bool slaveCon = false;
        public static DataStore dataStore;

        private void timer1_Tick(object sender, EventArgs e)
        {
            for (int i = 1; i < 1000000; i++)
            {
                SetValueToModBusTcpServer(i, i);//第一个参数为写入的地址,从1开始,第二个为写入的数值
            }

            bool valueBool = true;
            SetValueToModBusTcpServer(1, valueBool);//给地址的第1位写入bool值1
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //创建并开启ModbusTcp服务器
            try
            {
                //dataStore = DataStoreFactory.CreateDefaultDataStore();//初始化服务数据区
                tcpListener = new TcpListener(System.Net.IPAddress.Parse("本地电脑IP"), 502);
                modbusTcpSlave = ModbusTcpSlave.CreateTcp(1, tcpListener);
                //modbusTcpSlave.DataStore = dataStore;
                modbusTcpSlave.Listen();
                slaveCon = true;
            }
            catch (Exception)
            {
                slaveCon = false;
            }
        }

        /// <summary>
        /// 向ModBusTcp服务写入模拟量
        /// </summary>
        /// <param name="index"></param>
        /// <param name="value"></param>
        private void SetValueToModBusTcpServer(int index, float value)
        {
            byte[] buffer = BitConverter.GetBytes(value);
            ushort highValue = BitConverter.ToUInt16(buffer, 0);
            ushort lowValue = BitConverter.ToUInt16(buffer, 2);
            ModbusDataCollection<ushort> data = modbusTcpSlave.DataStore.InputRegisters;
            data[index] = lowValue;
            data[index + 1] = highValue;
        }

        /// <summary>
        /// 向ModBusTcp服务写入数字量
        /// </summary>
        /// <param name="index"></param>
        /// <param name="value"></param>
        private void SetValueToModBusTcpServer(int index, bool value)
        {
            ModbusDataCollection<bool> data = modbusTcpSlave.DataStore.InputDiscretes;
            lock (modbusTcpSlave.DataStore.SyncRoot)
            {
                data[index] = value;
            }

        }
    }
}

四、Modbus TCP服务端(自建)与Modbus Poll客户端工具进行Modbus TCP通讯

1、客户端配置

(1)选择通讯方式
modbus tcp客户端和服务器软件,工业控制,tcp/ip

(2)选择数据传输寄存器类型

modbus tcp客户端和服务器软件,工业控制,tcp/ip

(3)运行Modbus TCP自己创建的服务端程序之后,与Modbus Poll客户端工具建立通信联系,读到的数据如下:

通信不成功Modbus Poll客户端工具界面会有红色字体出现。

获取数据区域(部分字节/双字节)

modbus tcp客户端和服务器软件,工业控制,tcp/ip

读到数据,没有红色字体,说明通信成功!

总结

这里Modbus TCP通讯客户端使用了自带的客户端工具Modbus Poll,服务端程序是自己写的。后续也可以自己写一个Modbus TCP通讯的客户端程序。文章来源地址https://www.toymoban.com/news/detail-640937.html

到了这里,关于【工控通信】ModbusTCP通讯之ModbusPoll客户端工具配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • QT5.14 实现ModbusTCP客户端 Demo

    本文在QT5.14平台,基于QModbusClientTcp类,实现了客户端对单个寄存器的读写,用ModbusSlave做服务器做测试。 1.界面 (1)更改读按钮的名称为bt_Read (2)更改写按钮的名称为bt_Write 2.修改pro文件的第三行 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets  serialbus   3.修改mainWindow.h #ifndef MAINWINDOW_H

    2024年01月22日
    浏览(43)
  • Modbus协议及基于Python的ModbusTCP客户端实现

    Modbus 协议是由 Modicon 公司(现在的施耐德电气 Schneider Electric )于1979年为使用可编程逻辑控制器(PLC)通信而推出,主要建立在物理串口、以太网 TCP/IP 层之上,目前已经成为工业领域通信协议的业界标准,广泛应用在工业电子设备之间的互联。 Modbus技术文档 Modbus 是OSI模型

    2024年02月07日
    浏览(31)
  • 一种基于QT5.12+VS2015的ModbusTcp客户端轮询方法

    一种基于QT5.12+VS2015的ModbusTcp客户端轮询方法 服务端:西门子PLC-1200 客户端:Win10+QT5.12.1+VS2015 (1)客户端00000(线圈:可读可写) - 服务端10000(离散输入) (2)客户端10000(离散输入:只读) - 服务端00000(线圈) (3)客户端30000(输入寄存器:只读) - 服务端40000(保持

    2024年02月08日
    浏览(32)
  • UDP通讯(服务器/客户端)

    前言:UDP通讯实现比较简单,单某些情况下也会使用,建议先看一下说明,然后运行代码感受一下。         传输层主要应用的协议模型有两种,一种是TCP协议,另外一种则是UDP协议。TCP协议在网络通信中占主导地位,绝大多数的网络通信借助TCP协议完成数据传输。但U

    2024年02月03日
    浏览(48)
  • 【网络】UDP通讯(服务器/客户端)

    前言:UDP通讯实现比较简单,单某些情况下也会使用,建议先看一下说明,然后运行代码感受一下。         传输层主要应用的协议模型有两种,一种是TCP协议,另外一种则是UDP协议。TCP协议在网络通信中占主导地位,绝大多数的网络通信借助TCP协议完成数据传输。但U

    2024年02月12日
    浏览(46)
  • Qt 服务器/客户端TCP通讯

    最近需要用到TCP/IP通讯,这边就先找个简单的例程学习一下。Qt的TCP通讯编程可以使用QtNetwork模块,QtNetwork模块提供的类能够创建基于TCP/IP的客户端与服务端应用程序,一般会使用QTcpSocket、QTcpServer类 网络通信方式主要有两种:TCP与UDP。以下拷贝网络上总结两者之间的区别:

    2023年04月26日
    浏览(57)
  • 「Java」Socket实现简单的客户端和服务端通讯 | 公网环境通讯

    💛前情提要💛 本章节是 番外篇 的 Socket 的相关知识~ 接下来我们即将进入一个全新的空间,对代码有一个全新的视角~ 以下的内容一定会让你对 Socket 有一个颠覆性的认识哦!!! 以下内容干货满满,跟上步伐吧~ 作者介绍: 🎓 作者: 热爱编程不起眼的小人物🐐 🔎 作者

    2023年04月16日
    浏览(37)
  • 【计算机网络】 基于TCP的简单通讯(客户端)

    加载库 创建套接字 连接服务端 连接服务端我们使用的是connect()函数,分别为连接使用的socket,连接的地址信息,连接的地址信息长度。返回值为int类型,如果没有错误返回0,否则返回SOCKET_ERROR。 收发数据 关闭套接字、卸载库 这样我们的TCP协议简单通讯就写好了。 先运行

    2024年02月07日
    浏览(44)
  • 客户端与服务端实时通讯(轮询、websocket、SSE)

    在某些项目中,某些数据需要展示最新的,实时的,这时候就需要和服务端进行长时间通讯 对于数据实时获取,我们一般会有4种方案: 1.短轮询:使用浏览器的定时器发起http请求,每隔一段时间就请求一次 2.长轮询:客户端向服务器发送Ajax请求,服务器接到请求后hold住连

    2024年02月08日
    浏览(34)
  • TCP通信—客户端与客户端的双向通信

    1.实现客户端与客户端之间的TCP双向通信; 2.服务器记录客户端实名连接,并显示客户端数据记录; 3.客户端退出,服务器和另一客户端显示相应提示; 1.定义数组保存客户端文件描述符; 2.主程序负责接收客户端1的数据发送给客户端2; 3.开展一个线程负责接收到客户端2的

    2024年02月15日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包