97人妻精品一区二区三区软件,人妻偷拍在线,插丝袜美女小穴视频,美女午夜福利在线

      • <i id="89dc3"></i>
        當(dāng)前位置: 首頁 >應(yīng)用方案 >技術(shù)應(yīng)用 >

        0基礎(chǔ)5分鐘快速搭建modbus主站上位機(jī)教程

        如何在Windows平臺(tái)上面快速搭建一個(gè)Modbus TCP/UDP主站上位機(jī)demo

        現(xiàn)如今,Modbus協(xié)議可以說是工業(yè)控制,現(xiàn)場(chǎng)數(shù)據(jù)采集鄰域各種控制設(shè)備與傳感器應(yīng)用最為廣泛的數(shù)據(jù)交互協(xié)議,不管是簡(jiǎn)單方便的UART串口通信,還是高速穩(wěn)定的以太網(wǎng),Modbus協(xié)議都有相應(yīng)的適配其傳輸特點(diǎn)的協(xié)議。雖然目前主流的Modbus人機(jī)交互主站是組態(tài)王或者各種工控廠家生產(chǎn)的觸摸屏,但如果你想做一些帶邏輯控制,或者界面比較自由的上位機(jī),那么該文章將在Visual Studio集成開發(fā)環(huán)境下,使用C#語言和Visual StudioWinform框架,從環(huán)境安裝,創(chuàng)建工程,Modbus庫的安裝,代碼編寫,程序調(diào)試等幾個(gè)步驟,帶你快速開發(fā)出一個(gè)Window平臺(tái)環(huán)境下的Modbus主站上位機(jī)demo。(該文檔以Visual Studio 2017為例)

        一、搭建開發(fā)環(huán)境

        “工作負(fù)荷”菜單處勾選“.NET桌面開發(fā)”(已省略安裝具體步驟)與你需要的其他組件。

        安裝完成后,我們進(jìn)入下一步。

        搭建開發(fā)環(huán)境

        二、創(chuàng)建工程

        1、打開Visual Studio依次點(diǎn)擊“文件”->“新建”->“項(xiàng)目”

        創(chuàng)建工程1

        2、創(chuàng)建Visual C#Windows窗體應(yīng)用,按如下步驟創(chuàng)建Windows窗體應(yīng)用,下面第四步我們可以自定義工程名稱,這里我將該工程命名成“Modbus Master”,完成后點(diǎn)擊“確定。

        創(chuàng)建工程2

        三、安裝Modbus

        工程創(chuàng)建完成后,中間紅色部分窗體就是我們?cè)摴こ棠J(rèn)生成的界面,默認(rèn)程序運(yùn)行起來后會(huì)加載該界面,但我們先不管界面,我們先為工程安裝Easy ModbusTcp庫。

        Easy Modbus TCP是基于.NET FrameworkJava平臺(tái)上的Modbus TCP/UDP/RTU通訊協(xié)議庫。它主要用于工業(yè)自動(dòng)化領(lǐng)域,幫助用戶實(shí)現(xiàn)遠(yuǎn)程控制和數(shù)據(jù)采集。

        EasyModbusTCP的特點(diǎn)如下:

        簡(jiǎn)單易用:EasyModbusTCP提供了簡(jiǎn)單易用的API,使得用戶可以輕松地實(shí)現(xiàn)與Modbus設(shè)備的通信。

        支持多種編程語言:EasyModbusTCP支持多種編程語言,如C#、VB.NETJava、C++以及更多C#的變體,如UnityMono、.NET Core等。

        支持多種Modbus協(xié)議EasyModbusTCP不僅支持Modbus TCP協(xié)議,還支持Modbus UDPModbus RTU協(xié)議。

        支持點(diǎn)對(duì)點(diǎn)通信:EasyModbusTCP支持點(diǎn)對(duì)點(diǎn)通信,每個(gè)設(shè)備都有一個(gè)唯一的IP地址,使得用戶可以直接與特定設(shè)備進(jìn)行通信。

        支持Modbus報(bào)文兩種類型EasyModbusTCP支持Modbus報(bào)文的兩種類型,包括讀取請(qǐng)求和寫入請(qǐng)求。讀取請(qǐng)求用于獲取服務(wù)器上的數(shù)據(jù),寫入請(qǐng)求用于向服務(wù)器寫入數(shù)據(jù)。

        可靠的數(shù)據(jù)傳輸:EasyModbusTCP使用TCP連接來確??煽康臄?shù)據(jù)傳輸。在通信之前,需要建立TCP連接,并在通信結(jié)束后關(guān)閉連接。

        安裝Modbus庫1

        1、在上圖紅色區(qū)域點(diǎn)擊鼠標(biāo)右鍵然后點(diǎn)擊“查看代碼”(或者鍵盤單機(jī)“F7”),進(jìn)入工程代碼文件,然后點(diǎn)擊”項(xiàng)目”->“管理NuGet程序包”

        安裝Modbus庫2

        2、“瀏覽”菜單欄的搜索框中輸入“easy modbusTCP”,找到如下圖擴(kuò)展庫后點(diǎn)擊“下載”

        安裝Modbus庫3

        3、安裝成功后我們可以在解決方案資源管理器中,引用中找到該擴(kuò)展庫

        安裝Modbus庫4

        四、代碼編寫

        1、界面設(shè)計(jì)

        代碼編寫

        2、源碼

        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 EasyModbus;


        namespace ModbusMaster

        {    public partial class Form1 : Form

           {        public Form1()

               {            InitializeComponent();

                   this.Master = new ModbusClient();

                   this.slaveIP.Text = "192.168.3.7";

                   this.serverPort.Text = "502";

                   Master.UnitIdentifier = 2;        }

               EasyModbus.ModbusClient Master = null;

               private bool SlaveCoilWrite(int regaddr , bool status)

               {            try

                   {                Master.WriteSingleCoil(regaddr, status);            }

                  catch

                   {                return false;            }

                   return true;        }

               private void btn_connect_Click(object sender, EventArgs e)

               {            if (Master.Connected) return;

                    Master.Connect(this.slaveIP.Text, int.Parse(this.serverPort.Text));        }

               private void Form1_FormClosing(object sender, FormClosingEventArgs e)

               {            Master.Disconnect();        }

               private void btn_do1_on_Click(object sender, EventArgs e)

               {            SlaveCoilWrite(0, true);        }

               private void btn_do2_on_Click(object sender, EventArgs e)

               {            SlaveCoilWrite(1, true);        }

               private void btn_do3_on_Click(object sender, EventArgs e)

               {            SlaveCoilWrite(2, true);        }

               private void btn_do4_on_Click(object sender, EventArgs e)

               {            SlaveCoilWrite(3, true);        }

               private void btn_do1_4_on_Click(object sender, EventArgs e)

               {            //for (int i = 0; i < 4; i++)

                   //{            //    SlaveCoilWrite(i, true);            //}

                   bool[] sta = new bool[4] { true , true , true , true};

                   try

                   {                Master.WriteMultipleCoils(0, sta);            }

                   catch

                   {

                   }

               }


               private void btn_do1_off_Click(object sender, EventArgs e)

               {            SlaveCoilWrite(0, false);        }

               private void btn_do2_off_Click(object sender, EventArgs e)

               {            SlaveCoilWrite(1, false);        }


               private void btn_do3_off_Click(object sender, EventArgs e)

               {            SlaveCoilWrite(2, false);        }

               private void btn_do4_off_Click(object sender, EventArgs e)

               {            SlaveCoilWrite(3, false);       }

               private void btn_do1_4_off_Click(object sender, EventArgs e)

               {           //for (int i = 0; i < 4; i++)

                   //{            //    SlaveCoilWrite(i, false);            //}

                   bool[] sta = new bool[4] { false, false, false, false };

                   try

                   {                Master.WriteMultipleCoils(0, sta);            }

                   catch

                   {

                   }

               }

           }

        }

        今天的分享就到這里啦,EBYTE每一天都致力于更好的助力物聯(lián)化、智能化、自動(dòng)化的發(fā)展,提升資源利用率,更多產(chǎn)品更多資料,感興趣的小伙伴可以登錄我們的億佰特官網(wǎng)和企業(yè)公眾號(hào)(微信號(hào):cdebyte進(jìn)行了解,也可以直接撥打400電話咨詢技術(shù)專員!


        點(diǎn)擊撥打: 億佰特官網(wǎng) 4000-330-990