国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C#和西門子PLC使用Udp通信

這篇具有很好參考價值的文章主要介紹了C#和西門子PLC使用Udp通信。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

一、PLC程序工程創(chuàng)建

1、硬件配置

2、程序編程

3、添加監(jiān)控表

二、C#程序工程創(chuàng)建

1、界面UI

2、代碼編寫

(1)創(chuàng)建本地Udp

(2)讀PLC的線程函數(shù)

(3)定時器

(4)上位機寫寄存器操作

(5)StringToByte()方法封裝

(6)窗口關(guān)閉

3、C#和PLC測試

(1)C#上位機寫操作1

(2)C#上位機寫操作2

(3)C#控制PLC中的繼電器輸出

(4)C#上位機讀操作

?(5)串口調(diào)試助手和PLC通信測試

三、工程合并下載連接


一、PLC程序工程創(chuàng)建

1、硬件配置

C#和西門子PLC使用Udp通信

2、程序編程

Main程序

C#和西門子PLC使用Udp通信

?C#和西門子PLC使用Udp通信

?C#和西門子PLC使用Udp通信

?"TSEND_C_DB"功能塊配置如下:

"TURCV_DB"功能塊不需要配置,ADDR地址和"TSEND_C_DB"相同即可

C#和西門子PLC使用Udp通信

3、添加監(jiān)控表

?雙擊添加新監(jiān)控表,在監(jiān)控表中分別添加MB20-MB29、MB30-MB39寄存器。在監(jiān)控狀態(tài)下,可以實時的讀取、修改當前寄存器值

C#和西門子PLC使用Udp通信

?

二、C#程序工程創(chuàng)建

1、界面UI

C#和西門子PLC使用Udp通信

2、代碼編寫

(1)創(chuàng)建本地Udp

注意的是,本地Udp創(chuàng)建成功后,先給PLC寄存器發(fā)送0做數(shù)據(jù)測試。PLC只有在接收到到一次上位機發(fā)送的程序,PLC才會啟動對上位機發(fā)送功能,因為共用的功能塊ADDR中的地址。

        private void btnConnect_Click(object sender, EventArgs e)
        {
            try
            {
                LocalIp = txtLocalIp.Text;
                LocalPort = int.Parse(txtLocalPort.Text);

                TargetIp = txtPlcIp.Text;
                TargetPort = int.Parse(txtPlcPort.Text);

                client = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
                client.Bind(new IPEndPoint(IPAddress.Parse(LocalIp), LocalPort));
                Thread.Sleep(50);
                MessageBox.Show("本地Udp創(chuàng)建成功");
                txtUdpState.Text = "本地Udp創(chuàng)建成功";
                isUdpConnected = true;

                //本地Udp創(chuàng)建成功后,先給PLC寄存器發(fā)送0做數(shù)據(jù)測試
                byte[] sendBytes = new byte[10];
                sendBytes[0] = 0x00;
                sendBytes[1] = 0x00;
                sendBytes[2] = 0x00;
                sendBytes[3] = 0x00;
                sendBytes[4] = 0x00;
                sendBytes[5] = 0x00;
                sendBytes[6] = 0x00;
                sendBytes[7] = 0x00;
                sendBytes[8] = 0x00;
                sendBytes[9] = 0x00;
                EndPoint point = new IPEndPoint(IPAddress.Parse(TargetIp), TargetPort);
                client.SendTo(sendBytes, point);

                threadRecv = new Thread(ReciveMsg);
                threadRecv.Start();

                timer1.Start();
            }
            catch 
            {
                txtUdpState.Text = "本地Udp創(chuàng)建失敗";
            }
        }

(2)讀PLC的線程函數(shù)

        void ReciveMsg()
        {
            while (true)
            {
                if(isUdpConnected)
                {
                    EndPoint point = new IPEndPoint(IPAddress.Any, 0);//用來保存發(fā)送方的ip和端口號
                    byte[] buffer = new byte[1024];
                    int length = client.ReceiveFrom(buffer, ref point);//接收數(shù)據(jù)報
                    if(length>0)
                    {
                        for(int i=0;i<10;i++)
                        {
                            byteRecvs[i] = buffer[i];
                        }
                    }

                }

            }
        }

(3)定時器

        private void timer1_Tick(object sender, EventArgs e)
        {
            //將線程中接收到PLC的byte數(shù)據(jù),轉(zhuǎn)換成16進制的字符串顯示
            txtReadMB20.Text = byteRecvs[0].ToString("X");
            txtReadMB21.Text = byteRecvs[1].ToString("X");
            txtReadMB22.Text = byteRecvs[2].ToString("X");
            txtReadMB23.Text = byteRecvs[3].ToString("X");
            txtReadMB24.Text = byteRecvs[4].ToString("X");
            txtReadMB25.Text = byteRecvs[5].ToString("X");
            txtReadMB26.Text = byteRecvs[6].ToString("X");
            txtReadMB27.Text = byteRecvs[7].ToString("X");
            txtReadMB28.Text = byteRecvs[8].ToString("X");
            txtReadMB29.Text = byteRecvs[9].ToString("X");
            
        }

(4)上位機寫寄存器操作

         private void btnWriteValue_Click(object sender, EventArgs e)
        {
            try
            {
                if(isUdpConnected==false)
                {
                    MessageBox.Show("請先創(chuàng)建本地Udp", "提示");
                    return;
                }

                byte[] sendBytes = new byte[10];
                //sendBytes[0] = 0x10;
                //sendBytes[1] = 0x10;
                //sendBytes[2] = 0x10;
                //sendBytes[3] = 0x10;
                //sendBytes[4] = 0x10;
                //sendBytes[5] = 0x10;
                //sendBytes[6] = 0x10;
                //sendBytes[7] = 0x10;
                //sendBytes[8] = 0x10;
                //sendBytes[9] = 0x10;

                sendBytes[0] = StringToByte(txtWriteMB30.Text);
                sendBytes[1] = StringToByte(txtWriteMB31.Text);
                sendBytes[2] = StringToByte(txtWriteMB32.Text);
                sendBytes[3] = StringToByte(txtWriteMB33.Text);
                sendBytes[4] = StringToByte(txtWriteMB34.Text);
                sendBytes[5] = StringToByte(txtWriteMB35.Text);
                sendBytes[6] = StringToByte(txtWriteMB36.Text);
                sendBytes[7] = StringToByte(txtWriteMB37.Text);
                sendBytes[8] = StringToByte(txtWriteMB38.Text);
                sendBytes[9] = StringToByte(txtWriteMB39.Text);


                EndPoint point = new IPEndPoint(IPAddress.Parse(TargetIp), TargetPort);
                client.SendTo(sendBytes, point);
                MessageBox.Show("發(fā)送成功");

            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }

        }

(5)StringToByte()方法封裝

封裝方法需要注意的是,PLC寄存器最大只能支持兩位的16進制FF。所以,需要將測寫入的字符串不能超過3兩位、同時也不能超過F。

        /// <summary>
        /// 字符串轉(zhuǎn)byte數(shù)據(jù)
        /// </summary>
        /// <param name="s"></param>
        /// <returns></returns>
        private byte StringToByte(string s)
        {
            if(s.Length>2)
            {
                throw new ArgumentNullException("超過兩位或者不是16進制字符!");
            }
            byte b;
            try
            {
                string str;
                str = "0x" + s;
                b = Convert.ToByte(str, 16);
            }
            catch
            {
                throw new ArgumentNullException("不是指定的16進制字符");
            }            
            return b;
        }

(6)窗口關(guān)閉

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            System.Environment.Exit(0);         //強制關(guān)閉所有線程
        }

3、C#和PLC測試

(1)C#上位機寫操作1

C#和西門子PLC使用Udp通信

?

(2)C#上位機寫操作2

C#和西門子PLC使用Udp通信

(3)C#控制PLC中的繼電器輸出

C#和西門子PLC使用Udp通信

(4)C#上位機讀操作

在PLC程序中,將M60.0強制TRUE

C#和西門子PLC使用Udp通信

?PLC即將數(shù)據(jù)以0.5秒的時間周期發(fā)送上位機C#,時間可以調(diào)快一點比如50毫秒、100毫秒都可以

C#和西門子PLC使用Udp通信

?

?(5)串口調(diào)試助手和PLC通信測試

對于不會C#上位機編程的電氣工程師來說,也可以使用網(wǎng)絡(luò)調(diào)試助手來做測試。測試方法參加另一篇博客西門子S7-1200 PLC和上位機通信_Big_潘大師的博客-CSDN博客_西門子1200與上位機s7通訊

三、工程合并下載連接

https://download.csdn.net/download/panjinliang066333/86508006文章來源地址http://www.zghlxwxcb.cn/news/detail-443044.html

到了這里,關(guān)于C#和西門子PLC使用Udp通信的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • C#與西門子PLC1500的ModbusTcp服務(wù)器通信3--搭建ModbusTcp服務(wù)器

    C#與西門子PLC1500的ModbusTcp服務(wù)器通信3--搭建ModbusTcp服務(wù)器

    ?注意,這個IP地址必須與西門子虛擬網(wǎng)卡的IP地址及虛擬機的網(wǎng)卡IP地址同一網(wǎng)段 ? ? ? ? ? 找到程序塊main,找到右邊的指令,找到通信,找到其它,拖到MB_SERVER到程序段1中 ? ?重點看mb_hold_reg和connect參數(shù),disconnet為false表示被動連接,意思是說服務(wù)器等待客戶機來連接,而

    2024年02月11日
    瀏覽(31)
  • C#與西門子PLC1500的ModbusTcp服務(wù)器通信4--搭建ModbusTcp客戶端

    C#與西門子PLC1500的ModbusTcp服務(wù)器通信4--搭建ModbusTcp客戶端

    客戶端可以是一個程序或一個設(shè)備,這里我以C#WINFORM程序來實現(xiàn)客戶機與PLC的Modbustcp服務(wù)器通信,開發(fā)環(huán)境是VS2019,.NET Framework版本是4.7.2 ?創(chuàng)建類庫 ? 編寫C#各種類的轉(zhuǎn)換庫,該庫由我提供,不用操心,文章最后提供。 項目引入這個類庫? 找到項目,找到引用,右鍵“管理

    2024年02月11日
    瀏覽(22)
  • 編寫C#程序?qū)崿F(xiàn)和西門子1500PLC進行Modbus Tcp通訊仿真

    編寫C#程序?qū)崿F(xiàn)和西門子1500PLC進行Modbus Tcp通訊仿真

    前言 本文章的主題是介紹Modbus Tcp通訊仿真,其中C#編寫的程序充當客戶端(Client),西門子1500PLC充當?shù)姆?wù)器端(Server),有關(guān)Modbus Tcp協(xié)議的具體內(nèi)容在此也不再贅述,大家可以自行閱讀官方文檔。 注:在實現(xiàn)其基本功能的條件下,本文的代碼編寫以及軟件配置均簡化。

    2024年02月11日
    瀏覽(84)
  • 西門子PLC1200自由口通信

    西門子PLC1200自由口通信

    文章目錄 前言 自由口通信 二、使用步驟 組態(tài) 編程 總結(jié) 項目里需要使用PLC和某公司液體泵通信,液體泵采用RS485,支持OEM協(xié)議和DT協(xié)議,因此PLC采用自由口通信 提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 擴展了CB1241通信板,RS485連線如下圖所示 TRB為+,TRA為-,M為接

    2024年02月07日
    瀏覽(39)
  • MATLAB和西門子SMART PLC OPC通信

    西門子S7-200SMART PLC OPC軟件的下載和使用,請查看下面文章 Smart 200PLC PC Access SMART OPC通信_基于pc access smart的opc通信_RXXW_Dor的博客-CSDN博客 文章瀏覽閱讀2.7k次,點贊2次,收藏5次。OPC是一種利用微軟COM/DCOM技術(shù)達成自動控制的協(xié)議,采用典型的C/S模式,針對硬件設(shè)備的驅(qū)動程序由

    2024年02月06日
    瀏覽(19)
  • C#上位機與西門子PLC數(shù)據(jù)交互

    C#上位機與西門子PLC數(shù)據(jù)交互

    拉了換一個簡單的界面 我新建了一個DB數(shù)據(jù)塊【DB1】,右鍵【DB1】,點擊【屬性】項,【優(yōu)化的塊訪問】默認是勾選,要想顯示數(shù)據(jù)塊中地址偏移量,需要把【優(yōu)化的塊訪問】勾選取消 1、右鍵項目名,選擇圖中【管理NuGet程序包】 2、在搜索框輸入【S7netplus】,我安裝的是第

    2024年02月13日
    瀏覽(28)
  • 西門子PLC1500大型程序fanuc機器人焊裝 包括1臺 西門子1500PLC程序

    西門子PLC1500大型程序fanuc機器人焊裝 包括1臺 西門子1500PLC程序

    西門子PLC1500大型程序fanuc機器人焊裝 包括1臺 西門子1500PLC程序,2臺觸摸屏TP1500程序? 9個智能遠程終端ET200SP Profinet連接? 15個Festo智能模塊Profinet通訊? 10臺Fanuc發(fā)那科機器人Profinet通訊? 3臺G120變頻器Profinet通訊? 2臺智能電能管理儀表PAC3200? 4個GRAPH順控程序? 圖爾克RFID總線模

    2024年01月18日
    瀏覽(35)
  • C# 讀取西門子S7系列PLC教程及源碼

    若要創(chuàng)建驅(qū)動程序的實例,需要使用此構(gòu)造函數(shù): CPU:這指定您要連接到的? CPU 。支持的 CPU 包括: ip :指定 CPU 或外部以太網(wǎng)卡的 IP 地址 機架:它包含PLC的 機架 ,您可以在Step7的硬件配置中找到 插槽 :這是CPU的插槽,您可以在Step7的硬件配置中找到 例: 此代碼為 IP 地

    2024年02月08日
    瀏覽(23)
  • C#與西門子PLC通訊——手搓S7通訊協(xié)議

    C#與西門子PLC通訊——手搓S7通訊協(xié)議

    本文將嘗試從源碼角度,使用Tcp/Ip的方式直接與西門子PLC進行交互通訊。 往期博客參考 C#與西門子PLC通訊——新手快速入門 C#與西門子PLC通訊——熟手快速入門 建議先看一下這兩篇,了解預(yù)設(shè)背景。 知其然,知其所以然。 這篇文章,我們就嘗試重復(fù)造一個輪子。通過對通訊

    2024年02月04日
    瀏覽(28)
  • MCGS物聯(lián)網(wǎng)觸摸屏與西門子1200PLC通信穿透

    MCGS物聯(lián)網(wǎng)觸摸屏與西門子1200PLC通信穿透

    產(chǎn)品型號 昆侖通態(tài)MCGS觸摸屏:TPC7022Nt WiFi版,有線ip地址:192.168.0.100; 西門子1200系列PLC:CPU1215C DC/DC/DC,ip地址:192.168.0.10; 電腦系統(tǒng):Windows 10 家庭中文版,電腦以太網(wǎng)口ip地址:192.168.0.50。 (1)觸摸屏上電后連續(xù)點擊觸摸屏面板,進入“系統(tǒng)參數(shù)設(shè)置”界面,點擊進入

    2024年02月03日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包