PC高階語言與施耐德、羅克韋爾、臺達等PLC的Modbus通訊原始碼(ModbusTCP.DLL/ModbusRTU.DLL)

Endv發表於2018-03-26

1.0  通訊元件概述

該類通訊元件適用於基於PC高階語言的工業自動化控制系統,用於PC與可程式設計控制器(PLC)、智慧儀表等進行資料通訊。元件採用動態連結庫檔案(*.DLL)的形式,在PC系統的專案工程裡引用該元件,呼叫相應的屬性與方法函式,即可快速實現PC與PLC的資料高效交換。

DLL通訊元件無須安裝,直接複製到工程檔案目錄,方便打包安裝部署;無須任何配置,直接呼叫函式,與應用開發無縫銜接;多年工程經驗的軟體團隊開發測試,經過本公司及客戶的海量實際應用檢驗,穩定可靠;採用穩定高效的內部協議,無須編寫PLC內部程式配合,直接訪問PLC的記憶體,通訊響應快速;內建動態管理的多獨立執行緒連線,同時支援外部應用的多執行緒結構呼叫;相容WINDOWS系統下的所有開發環境,包括各種版本的VB.NET、C#、VC++,以及DEIPHI 、VB、LabView等;支援幾乎所有PLC的CPU自帶通訊口、通訊擴充套件模組。

 

2.0  相關資料下載地址

ModbusTCP 客戶端DLL:      ModbusTCP.DLL

ModbusTCP 服務端DLL:      ModbusTCP_Server.DLL

ModbusRTU DLL程式:       ModbusRTU.DLL

網口透傳RTU DLL程式:      TransModRTU.DLL

臺達、永巨集、信捷等PLC的Modbus地址表:   PLC地址表

 

3.0  資料型別

INT16:    16位有符號整數;         DINT32:   32位有符號整數;     

UINT16:   16位無符號整數;         HEX32:    32位16進位制字元;

BIN16:   16位二進位制字串;       REAL32:  32位單精度浮點資料;

 

4.0  DLL支援的功能

    01  讀取線圈狀態     取得一組邏輯線圈的當前狀態( ON/OFF)       

    02   讀取輸入狀態     取得一組開關輸入的當前狀態( ON/OFF)       

    03   讀取保持暫存器 在一個或多個保持暫存器中取得當前的二進位制值       

    04    讀取輸入暫存器 在一個或多個輸入暫存器中取得當前的二進位制值  

    15    強置多線圈 強置一串連續邏輯線圈的通斷       

    16   預置多暫存器 把具體的二進位制值裝入一串連續的保持暫存器  

 

5.0  函式與引數

     5.1  函式引數 

[EntLink]   設定PC、PLC的通訊引數,建立與PLC的乙太網聯接;  

引數:pcIP,String,PC端的IP地址

pcPort , Uint16, PC端的網路埠

plcIP , String ,PLC的IP地址

plcPort ,Uint16,  PLC的通訊埠

 Rack ,Uint16,  PLC的機架號碼(除西門子外,其它品牌為0)

Slot ,Uint16, PLC的CPU的插槽號碼(除西門子外,其它品牌為0)

Handle, Integer ,返回網路控制程式碼,多PLC網路時通過該控制程式碼操作不同的PLC

SN , String,呼叫系列號碼,與DLL成對使用,可聯絡本公司獲取

返回值: Int16,函式執行結果,見5.3詳細說明。

 

[ComLink]   設定PC、PLC的通訊引數,建立與PLC的串列埠聯接; 

引數:CommPort,Uint16,聯接PLC的PC通訊埠

CommRate,Int32,與PLC通訊的速率

DataBit, Uint16, 通訊資料位數

StopBit,Uint16, 資料的停止位數

Parity,PrtType, 資料校驗方式

Station, Uint16, PLC的站號碼

OverTime,Uint16, 通訊超時時間限制,毫秒單位

SN , String,呼叫系列號碼,通過聯絡本公司獲取

返回值: Int16,函式執行結果,見5.3詳細說明。

 

[DeLink]    斷開與PLC的連線;

    引數:Handle, Integer , 網路控制程式碼,多PLC網路時通過該控制程式碼操作對應的PLC

返回值: Int16,函式執行結果,見5.3詳細說明

   

[CmdRead]   讀取多個PLC記憶體資料;

引數:Handle, Integer , 網路控制程式碼,多PLC網路時通過該控制程式碼操作對應的PLC

Memory , PlcMemory, PLC資料區域列舉,見5.2詳細說明

ValType, DataType, 資料型別列舉,見5.2詳細說明

Block ,Uint16, DB塊的號碼,非DB資料為0

Address ,Uint16, 要操作的字的起始地址

Count ,Uint16, 要操作的字的個數

ReData() , Object,讀取到的資料(傳址引數)

返回值: Int16,函式執行結果,見5.3詳細說明

 

[CmdWrite]    批量寫入資料到PLC記憶體;

引數:Handle, Integer , 網路控制程式碼,多PLC網路時通過該控制程式碼操作對應的PLC

Memory , PlcMemory, PLC資料區域列舉,見5.2詳細說明

ValType, DataType, 資料型別列舉,見5.2詳細說明

Block ,Uint16, DB塊的號碼,非DB資料為0

Address ,Uint16, 要操作的字的起始地址

Count ,Uint16, 要操作的字的個數

Data() , Object,要寫入PLC的資料(傳址引數)

返回值: Int16,函式執行結果,見5.3詳細說明

 

[Bit_Test]   以Bit(位)的方式讀取其狀態;

引數:Handle, Integer , 網路控制程式碼,多PLC網路時通過該控制程式碼操作對應的PLC

Memory , PlcMemory, PLC資料區域列舉,見5.2詳細說明

Block ,Uint16, DB塊的號碼,非DB資料為0

Address ,Uint16, 要操作的位所在的字地址

Bit,Uint16, 要操作的位在字地址內的位號碼

State , Boolean,讀取到的位的狀態(傳址引數)

返回值: Int16,函式執行結果,見5.3詳細說明

 

[Bit_Set]    以Bit(位)的方式設定其狀態為ON;

引數:Handle, Integer ,網路控制程式碼,多PLC網路時通過該控制程式碼操作對應的PLC

Memory , PlcMemory, PLC資料區域列舉,見5.2詳細說明

Block ,Uint16, DB塊的號碼,非DB資料為0

Address ,Uint16, 要操作的位所在的字地址

Bit,Uint16, 要操作的位在字地址內的位號碼

返回值: Int16,函式執行結果,見5.3詳細說明

 

[Bit_Reset]   以Bit(位)的方式復位其狀態為OFF;

引數:Handle, Integer ,連線控制程式碼,多PLC網路時通過該控制程式碼操作對應的PLC

Memory , PlcMemory, PLC資料區域列舉,見5.2詳細說明

Block ,Uint16, DB塊的號碼,非DB資料為0

Address ,Uint16, 要操作的位在字地址內的位號碼

Bit,Uint16, 要操作的位號碼

返回值: Int16,函式執行結果,見5.3詳細說明

 

   5.2  列舉結構體引數說明:

--PlcMemory   要操作的PLC的記憶體區域型別:

DI:   輸入埠;

DQ:   輸出埠;

DR:   資料暫存器D區域

HR:   保持區域H區域

 

5.3  返回值說明:

 0 執行成功;

-1  IP地址或埠引數錯誤;

-2  網路連線錯誤;

-3  連線引數錯誤導致連線失敗;

-4  PLC握手連線異常;

-5  PLC握手無響應;

-6  PLC握手響應錯誤;

-10 讀資料超過最大資料量限制;

-11 讀資料時資料傳送異常;

-12 讀資料時PLC響應超時;

-13 讀資料PLC返回格式錯誤;

-14 讀資料PLC返回資料錯誤;

 -15 讀資料PLC返回資料校驗錯誤;

-20 寫資料超過最大資料量限制;

-21 寫資料時資料傳送異常;

-22 寫資料PLC響應超時;

-23 寫資料PLC返回格式錯誤;

-24 寫資料PLC返回資料錯誤;

-25 寫資料PLC返回資料校驗錯誤;

-31 資料轉換時源資料處理錯誤;

-32 資料轉換時目標資料處理錯誤;

-70 PLC記憶體區域的功能受限制;

-80 PC系統中無網路卡;

-81 PC的IP地址格式錯誤;

-82 PLC的IP地址格式錯誤;

-83 PING命令返回錯誤;

-99 連線序列號錯誤或測試次數超過試用限制;

 

6.0  元件使用步驟

a. 複製DLL檔案到需要用到該元件的工程專案目錄下;

b. 註冊DLL及其相關資源(DotNet框架的DLL程式集元件無需註冊);

c. 在專案程式設計軟體裡面引用該元件,不同的程式語言引用方式有區別,具體參見所用語言的MSDN幫助文件;

d.  參照例程定義、例項化通訊元件,編寫相關通訊程式碼;

  

7.0   技術支援

    該類DLL元件適用於具有高階語言基礎的自動化軟體工程師,同時本公司提供定製開發更為簡便的PC與PLC通訊的解決方案,包括定製化的OPC資料伺服器軟體、乙太網資料伺服器軟體等,工業資料採集專案等歡迎交流諮詢。

任意一款DLL通訊元件,以及本公司的OPC資料伺服器開發包等工業資料服務產品都會隨產品提供多種語言的例程,同時通過以下方式提供24小時技術支援:

相關文章