91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Nmodubs4怎么實現單寄存器和多寄存器AO的讀寫

發布時間:2021-10-20 09:51:58 來源:億速云 閱讀:544 作者:柒染 欄目:大數據

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

項目效果圖

Nmodubs4怎么實現單寄存器和多寄存器AO的讀寫

一、創建plc連接

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

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

二、plc連接IP和端口,創建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秒刷新在線測試數據
            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]); //讀取多個寄存器,需用用函數 ModbusUtility 轉換 
                                    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常用方法:

方法名

作用

所需參數

返回值

對應功能碼

ReadCoils

讀取DO的狀態

從站地址(8位)

byte slaveAddress

起始地址(16位)

 

ushort startAddress

讀取數量(16位)

ushort numberOfPoints

bool[]

01

ReadInputs

讀取DI的狀態

從站地址(8位)

byte slaveAddress

起始地址(16位)

 

ushort startAddress

讀取數量(16位)

ushort numberOfPoints

bool[]

02

ReadHoldingRegisters

讀取AO的值

從站地址(8位)

byte slaveAddress

起始地址(16位) 

ushort startAddress

讀取數量(16位)

ushort numberOfPoints

ushort[]

03

ReadInputRegisters

讀取AI的值

從站地址(8 位)

byte slaveAddress

起始地址(16位)

 

ushort startAddress

讀取數量(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

寫入值(布爾型數組)

bool[] data

無返回值

15

WriteMultipleRegisters

寫多個保持寄存器

從站地址(8位)

byte slaveAddress

 

起始地址(16位)

ushort startAddress,

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

ushort[] data

無返回值

16

ReadWriteMultipleRegisters

讀寫多個保持寄存器

從站地址(8位)

byte slaveAddress

讀起始地址(16位)

ushort startReadAddress

 

讀取數量(16位)

ushort numberOfPointsToRead,

寫入起始地址(16位)

ushort startWriteAddress,

寫入值(16位整型數組)

ushort[] writeData

ushort[]

23

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

ao
AI

广饶县| 沙田区| 崇信县| 奉化市| 驻马店市| 霸州市| 长阳| 定日县| 原阳县| 四平市| 嘉义县| 江永县| 大厂| 西平县| 广灵县| 泸水县| 寻乌县| 灵武市| 乌审旗| 巩义市| 平南县| 江孜县| 磐石市| 土默特左旗| 静安区| 怀集县| 治县。| 宣汉县| 钟山县| 双流县| 安福县| 穆棱市| 城步| 灵宝市| 福海县| 两当县| 靖西县| 滨州市| 二手房| 弥渡县| 绥化市|