PC高級語言與施耐德、羅克韋爾、臺達等PLC的Modbus通訊源代碼(ModbusTCP.DLL/ModbusRTU.DLL)
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小時技術支持:
PC高級語言與施耐德、羅克韋爾、臺達等PLC的Modbus通訊源代碼(ModbusTCP.DLL/ModbusRTU.DLL)