欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Nmodubs4怎么實現(xiàn)單寄存器和多寄存器AO的讀寫

Nmodubs4怎么實現(xiàn)單寄存器和多寄存器AO的讀寫,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

成都網(wǎng)站建設、成都做網(wǎng)站介紹好的網(wǎng)站是理念、設計和技術(shù)的結(jié)合。成都創(chuàng)新互聯(lián)擁有的網(wǎng)站設計理念、多方位的設計風格、經(jīng)驗豐富的設計團隊。提供PC端+手機端網(wǎng)站建設,用營銷思維進行網(wǎng)站設計、采用先進技術(shù)開源代碼、注重用戶體驗與SEO基礎,將技術(shù)與創(chuàng)意整合到網(wǎng)站之中,以契合客戶的方式做到創(chuàng)意性的視覺化效果。

項目效果圖

Nmodubs4怎么實現(xiàn)單寄存器和多寄存器AO的讀寫

一、創(chuàng)建plc連接

  //用委托對象引用plc_connect方法。
                    Delegate_Connect connect1 = new Delegate_Connect(plc_connect);
                    a_status = 1;
                    connect1();

                    if (a_status == 0)
                    {
                        MessageBox.Show("網(wǎng)關連接失敗!");
                        return;
                    }

二、plc連接IP和端口,創(chuàng)建tcp客戶端

 private void plc_connect()
        {
            wg_ip = INI.InitClass.ReadString("application", "WG_IP", "");
            wg_port = INI.InitClass.ReadString("application", "WG_PORT", "");

            try
            {
                tcp_wg = new TcpClient(wg_ip, Convert.ToInt32(wg_port));
                my_wg = ModbusIpMaster.CreateIp(tcp_wg);
                a_status = 1;
            }
            catch (Exception exception)
            {
                a_status = 0;
            }
        }

三、多線程處理timer

 //啟動timer多線程,每隔1秒刷新在線測試數(shù)據(jù)
            timer_plc_qry.Interval = 2000;
            //timer_plc_qry.Enabled = true;
            timer_plc_qry.Stop();
            timer_plc_qry.Elapsed += TimersTimerHandler;
            timer_plc_qry.Start();

   //多線程timer事件 在線測試
        private void TimersTimerHandler(object sender, EventArgs args)
        {
            if (a_status == 0) return;
            if (Interlocked.Exchange(ref inTimer_plc_qry, 1) == 0 && Start)
            {
                //連接設備
                read_plc();
                read_plc_switch();
            }
            Interlocked.Exchange(ref inTimer_plc_qry, 0);
        }

四、單寄存器和多寄存器

 if (list_core[i].data_type == "word")
                        {
                            try
                            {
                                read_result = my_wg.ReadHoldingRegisters(1, Convert.ToUInt16(list_core[i].address), 1);

                                if (read_result != null)
                                {
                                    read = read_result[0];  //讀取單個寄存器 ushort類型
                                    this.arcScaleComponent1.Value = read;//進度條復制 
                                    Set_main_UAB(read.ToString());//label標簽復制 
                                }

                            }
                            catch (Exception e)
                            {
                              
                            }

                        }
                        else if (list_core[i].data_type == "float")
                        {
                            read_result = my_wg.ReadHoldingRegisters(1, Convert.ToUInt16(list_core[i].address), 2);

                            if (read_result != null)
                            {
                                if (Islow)
                                {  
                                    read_float = ModbusUtility.GetSingle(read_result[1], read_result[0]); //讀取多個寄存器,需用用函數(shù) ModbusUtility 轉(zhuǎn)換 
                                    this.arcScaleComponent1.Value = read_float;
                                    Set_main_UAB(read_float.ToString()); //設置主窗體控件
                                }else
                                {
                                    read_float = ModbusUtility.GetSingle(read_result[0], read_result[1]);
                                    this.arcScaleComponent1.Value = read_float;
                                    Set_main_UAB(read_float.ToString());
                                }
                            }
                        }

五、Nmodbus4常用方法:

方法名

作用

所需參數(shù)

返回值

對應功能碼

ReadCoils

讀取DO的狀態(tài)

從站地址(8位)

byte slaveAddress

起始地址(16位)

 

ushort startAddress

讀取數(shù)量(16位)

ushort numberOfPoints

bool[]

01

ReadInputs

讀取DI的狀態(tài)

從站地址(8位)

byte slaveAddress

起始地址(16位)

 

ushort startAddress

讀取數(shù)量(16位)

ushort numberOfPoints

bool[]

02

ReadHoldingRegisters

讀取AO的值

從站地址(8位)

byte slaveAddress

起始地址(16位) 

ushort startAddress

讀取數(shù)量(16位)

ushort numberOfPoints

ushort[]

03

ReadInputRegisters

讀取AI的值

從站地址(8 位)

byte slaveAddress

起始地址(16位)

 

ushort startAddress

讀取數(shù)量(16位)

ushort numberOfPoints

ushort[]

04

WriteSingleCoil

寫入值到DO

從站地址(8位)

byte slaveAddress

線圈地址(16位)

ushort coilAddress

寫入值(布爾型)

bool value

無返回值

05

WriteSingleRegister

寫入值到AO

從站地址(8位)

byte slaveAddress

寄存器地址(16位)

ushort registerAddress

寫入值(16位)

ushort value

無返回值

06

WriteMultipleCoils

寫多線圈寄存器

從站地址(8位)

byte slaveAddress

起始地址(16位)

ushort startAddress

寫入值(布爾型數(shù)組)

bool[] data

無返回值

15

WriteMultipleRegisters

寫多個保持寄存器

從站地址(8位)

byte slaveAddress

 

起始地址(16位)

ushort startAddress,

寄存器值(16位整型數(shù)組)

ushort[] data

無返回值

16

ReadWriteMultipleRegisters

讀寫多個保持寄存器

從站地址(8位)

byte slaveAddress

讀起始地址(16位)

ushort startReadAddress

 

讀取數(shù)量(16位)

ushort numberOfPointsToRead,

寫入起始地址(16位)

ushort startWriteAddress,

寫入值(16位整型數(shù)組)

ushort[] writeData

ushort[]

23

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。

文章題目:Nmodubs4怎么實現(xiàn)單寄存器和多寄存器AO的讀寫
網(wǎng)址分享:http://chinadenli.net/article22/goijjc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供自適應網(wǎng)站網(wǎng)站設計網(wǎng)站排名企業(yè)網(wǎng)站制作服務器托管網(wǎng)站建設

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設