MODBUS SDK用戶手冊_第1頁
MODBUS SDK用戶手冊_第2頁
MODBUS SDK用戶手冊_第3頁
MODBUS SDK用戶手冊_第4頁
MODBUS SDK用戶手冊_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、V1.00ZModbusSdk配置函數(shù)庫使用手冊1函數(shù)庫說明31.1簡介:31.2提供的函數(shù)接口31.2.1以太網(wǎng)鏈路連接31.2.2串口鏈路連接41.2.3以太網(wǎng)與串口鏈路斷開連接51.2.4以太網(wǎng)與串口鏈路的數(shù)據(jù)采集(讀寫)52錯誤代碼111 函數(shù)庫說明 1.1 簡介: ZModbusSdk函數(shù)庫為標(biāo)準(zhǔn)的MODBUS(主機)協(xié)議提供函數(shù)接口。開發(fā)人員可以使用此函數(shù)庫方便開發(fā)出遵循MODBUS協(xié)議的程序。如果需要開發(fā)MODBUS從機程序,開發(fā)人員需要使用其他的函數(shù)庫或方法。 函數(shù)庫在連接時使用對不同的鏈路層提供不同的函數(shù)接口如:以太網(wǎng)的為:ZMB_TCPConnectMDBServer,串口

2、的為:ZMB_SerConnectMDBServer。其他的函數(shù)接口都相同,不區(qū)分連接鏈路。 (本文檔中使用的術(shù)語服務(wù)器對應(yīng)MODBUS協(xié)議里的從機模塊,客戶機對應(yīng)MODBUS協(xié)議里的主機模塊) 1.2 提供的函數(shù)接口 ZModbusSdk提供了連接到從機(服務(wù)器)和讀寫線圈與寄存器的函數(shù)接口。 1.2.1 以太網(wǎng)鏈路連接 Ø ZMB_TCPConnectMDBServer 描述 調(diào)用此函數(shù)連接到從機模塊(或服務(wù)器)。 HANDLE ZMB_TCPConnectMDBServer( char * szIp, int nDstPort, int nConnTimeout); 參數(shù) sz

3、Ip 指定要進行連接的從機(服務(wù)器)的IP地址。 nDstPort 指定從機的端口號。 nConnTimeout 指定連接超時。 返回值 返回“非NULL”表示成功,否則為錯誤。 1.2.2 串口鏈路連接 Ø ZMB_SerConnectMDBServer(串口主機使用) 描述 調(diào)用此函數(shù)連接到從機模塊(或服務(wù)器)。使用者應(yīng)該注意對于串口的操作每個串口在同一時間只能打開一次,因此在操作串口時應(yīng)該控制號程序使它每次只打開一次。 HANDLE ZMB_SerConnectMDBServer (int iRtuAscii, char *szCom, int iBautRate, int i

4、ByteSize, int iParity, int iStopBits, int iDtrCtl, int iRtsCtl, int iCtsCtl, int iDsrCtl, int iResponse); 參數(shù) iRtuAscii 模塊工作方式:RTU:0, ASCII:1 szCom 需要打開的計算機串口?!盋OM1”,”COM2”, iBautRate 模塊工作的波特率。9600,19200, iByteSize 模塊工作的數(shù)據(jù)位。數(shù)據(jù)位數(shù)(字節(jié)表示4-8位) iParity 模塊工作的校驗位,奇偶校驗 0-4:表示:不校驗,奇校驗,偶校驗,標(biāo)號,空格 iStopBits 模塊工作的

5、停止位,0(ONESTOPBIT)表示1個停止位,1(ONE5STOPBITS)表示1.5個停止位,2(TWOSTOPBITS)表示2個停止位 iDtrCtl 模塊是否需要DTR控制,0 不需要,1 需要 iRtsCtl 模塊是否需要RTS控制,0 不需要,1 需要 iCtsCtl 模塊是否需要CTS控制,0 不需要,1 需要 iDsrCtl 模塊是否需要Dsr控制,0 不需要,1 需要 iResponse 模塊的超時響應(yīng),默認(rèn) 1000 ms 返回值 返回“非NULL”表示成功,否則為失敗。 1.2.3 以太網(wǎng)與串口鏈路斷開連接 Ø ZMB_DisConnectMDBServer

6、描述 調(diào)用此函數(shù)斷開和從機的連接。 void ZMB_DisConnectMDBServer(HANDLE hHand); 參數(shù) hHand 此handle是ConnectMDBServer操作的返回值。 返回值 無。 1.2.4 以太網(wǎng)與串口鏈路的數(shù)據(jù)采集(讀寫) Ø ZMB_ReadCoil 描述 調(diào)用此函數(shù)按參數(shù)中的ID號和地址讀取線圈狀態(tài)。 long ZMB_ReadCoil( HANDLE hand, BYTE serID, int nStart, int nCount, BYTE * bRet/*arr of coils*/, WORD TranID); 參數(shù)hand此h

7、andle是ConnectMDBServer操作的返回值。serID設(shè)備ID號。nStart線圈的起始地址。nCount線圈的個數(shù)。bRet 返回的線圈狀態(tài),已分配號的數(shù)組地址。TranID在TCP的MODBUS協(xié)議里需要用到任務(wù)ID號,如果為0使用系統(tǒng)自生成的,串口MODBUS此參數(shù)無效。返回值返回0表示成功,否則為錯誤碼。Ø ZMB_ReadInput描述調(diào)用此函數(shù)按參數(shù)中的ID號和地址讀取線圈狀態(tài)(離散輸入量數(shù)據(jù))。long ZMB_ReadInput(HANDLE hand,BYTE serID, int nStart, int nCount, BYTE * bRet /*a

8、rr of coils*/, WORD TranID); 參數(shù) hand 此handle是ConnectMDBServer操作的返回值。 serID 設(shè)備ID號。 nStart 線圈的起始地址。 nCount 線圈的個數(shù)。 bRet 返回的線圈狀態(tài),已分配號的數(shù)組地址,此數(shù)組的大小應(yīng)該和nCount指定的大小相同。 TranID 在TCP的MODBUS協(xié)議里需要用到任務(wù)ID號,如果為0使用系統(tǒng)自生成的,串口MODBUS此參數(shù)無效。 返回值 返回0表示成功,否則為錯誤碼。 Ø ZMB_ReadHoldReg 描述 調(diào)用此函數(shù)按參數(shù)中的ID號和地址讀取保持寄存器的數(shù)據(jù)。 long ZMB

9、_ReadHoldReg (HANDLE hand, BYTE serID, int nStart, int nCount, WORD * bRet/*arr of reg*/, WORD TranID); 參數(shù) hand 此handle是ConnectMDBServer操作的返回值。 serID 設(shè)備ID號。 nStart 寄存器的起始地址。 nCount 寄存器的個數(shù)。 bRet 返回的寄存器數(shù)據(jù),已分配號的數(shù)組地址,此數(shù)組的大小應(yīng)該和nCount 一樣。 TranID 在TCP的MODBUS協(xié)議里需要用到任務(wù)ID號,如果為0使用系統(tǒng)自生成的,串口MODBUS此參數(shù)無效。 返回值 返回0表

10、示成功,否則為錯誤碼。 Ø ZMB_ReadInputReg 描述 調(diào)用此函數(shù)按參數(shù)中的ID號和地址讀取輸入寄存器的數(shù)據(jù)。 long ZMB_ReadInputReg ( HANDLE hand, BYTE serID, int nStart, int nCount, WORD * Ret/*arr of reg*/, WORD TranID); 參數(shù) hand 此handle是ConnectMDBServer操作的返回值。 serID 設(shè)備ID號。 nStart 寄存器的起始地址。 nCount 寄存器的個數(shù)。 bRet 返回的輸入寄存器數(shù)據(jù),已分配號的數(shù)組地址,此數(shù)組的大小應(yīng)該和

11、nCount一樣大。 TranID 在TCP的MODBUS協(xié)議里需要用到任務(wù)ID號,如果為0使用系統(tǒng)自生成的,串口MODBUS此參數(shù)無效。 返回值 返回0表示成功,否則為錯誤碼。 Ø ZMB_WriteCoilSingle 描述 調(diào)用此函數(shù)按參數(shù)中的ID號和地址修改單個線圈狀態(tài)。 long ZMB_WriteCoilSingle (HANDLE hand, BYTE serID, int nAddress, WORD wWriteData, WORD TranID); 參數(shù) hand 此handle是ConnectMDBServer操作的返回值。 serID 設(shè)備ID號。 nAddr

12、ess 線圈的起始地址。 wWriteData 寫入的線圈數(shù)據(jù):“0”,“1”。 TranID 在TCP的MODBUS協(xié)議里需要用到任務(wù)ID號,如果為0使用系統(tǒng)自生成的,串口MODBUS此參數(shù)無效。 返回值 返回0表示成功,否則為錯誤碼。 Ø ZMB_WriteCoilMulitiple 描述 調(diào)用此函數(shù)按參數(shù)中的ID號和地址修改nCount指定的多個線圈狀態(tài)。 long ZMB_WriteCoilMulitiple (HANDLE hand, BYTE serID, int nAddress, int nCount, BYTE * bWriteDataArr, WORD TranI

13、D); 參數(shù) hand 此handle是ConnectMDBServer操作的返回值。 serID 設(shè)備ID號。 nAddress 線圈的起始地址。 nCount 寫入的線圈的個數(shù)。 bWriteDataArr 寫入的線圈數(shù)據(jù)的數(shù)組,數(shù)組的每個結(jié)構(gòu)保存一個線圈狀態(tài),此數(shù)組大小應(yīng)該和nCount指定的大小相同。 TranID 在TCP的MODBUS協(xié)議里需要用到任務(wù)ID號,如果為0使用系統(tǒng)自生成的,串口MODBUS此參數(shù)無效。 返回值 返回0表示成功,否則為錯誤碼。 Ø ZMB_WriteRegSingle 描述 調(diào)用此函數(shù)按參數(shù)中的ID號和地址修改單個保持寄存器數(shù)據(jù)。 long ZM

14、B_WriteRegSingle (HANDLE hand, BYTE serID, int nAddress, WORD wWriteData, WORD TranID); 參數(shù) hand 此handle是ConnectMDBServer操作的返回值。 serID 設(shè)備ID號。 nAddress 保持寄存器的地址。 wWriteData 寫入的寄存器數(shù)據(jù)。 TranID 在TCP的MODBUS協(xié)議里需要用到任務(wù)ID號,如果為0使用系統(tǒng)自生成的,串口 MODBUS此參數(shù)無效。 返回值 返回0表示成功,否則為錯誤碼。 Ø ZMB_WriteRegMulitiple 描述 調(diào)用此函數(shù)按參

15、數(shù)中的ID號和地址修改nCount指定多個保持寄存器。 long ZMB_WriteRegMulitiple (HANDLE hand, BYTE serID, int nAddress, int nCount, WORD * writeDataArr, WORD TranID); 參數(shù) hand 此handle是ConnectMDBServer操作的返回值。 serID 設(shè)備ID號。 nAddress 保持寄存器的起始地址。 nCount 寫入的寄存器的個數(shù)。 bWriteDataArr 寫入的寄存器數(shù)據(jù)的數(shù)組,數(shù)組的每個結(jié)構(gòu)保存一個寄存器的值,此數(shù)組個數(shù)應(yīng)該和nCount指定的個數(shù)相同,大

16、小應(yīng)該等于 nCount * 2 個字節(jié)。 TranID 在TCP的MODBUS協(xié)議里需要用到任務(wù)ID號,如果為0使用系統(tǒng)自生成的,串口MODBUS此參數(shù)無效。 返回值 返回0表示成功,否則為錯誤碼。Ø ZMB_WriteCmdBuf描述 調(diào)用此函數(shù)寫命令串,根據(jù)nAddCheck參數(shù)決定是否添加校驗。其中TCP Modbus協(xié)議不會添加必要的頭部,而串口Modbus則可以根據(jù)nAddCheck指定是否添加校驗,校驗的格式(CRC或LRC)由打開參數(shù)iRtuAscii指定,這里不需要再指定。 long ZMB_WriteCmdBuf (HANDLE hand, BYTE *pBuf,

17、 int iLen, int nAddCheck ); 參數(shù) hand 此handle是ConnectMDBServer操作的返回值。 pBuf 寫數(shù)據(jù)的緩沖區(qū)。 iLen 緩沖區(qū)長度。 nAddCheck 是否添加校驗,只在串口中有效,如果打開時為RUT,且使用了添加校驗,則添加CRC校驗。如果打開時為ASCII,且使用了添加校驗,則添加LRC校驗。 TranID 在TCP的MODBUS協(xié)議里需要用到任務(wù)ID號,如果為0使用系統(tǒng)自生成的,串口MODBUS此參數(shù)無效。 返回值 返回寫成功的長度。 Ø ZMB_ReadRecBuf 描述 調(diào)用此函數(shù)讀取設(shè)備的響應(yīng)數(shù)據(jù)。 long ZMB

18、_ReadRecBuf (HANDLE hand, BYTE *pBuf, int iBufLen, int *iRecedLen ); 參數(shù) hand 此handle是ConnectMDBServer操作的返回值。 pBuf 讀數(shù)據(jù)的緩沖區(qū)。 iBufLens 緩沖區(qū)的大小。 iRecedLen 接收到的數(shù)據(jù)的長度,(輸出參數(shù))。 TranID 在TCP的MODBUS協(xié)議里需要用到任務(wù)ID號,如果為0使用系統(tǒng)自生成的,串口MODBUS此參數(shù)無效。 返回值 返回讀取到的長度。 2 錯誤代碼 ZModbusSdk使用了標(biāo)準(zhǔn)的MODBUS錯誤代碼和自定義錯誤代碼來描述SDK在操作過程中會出現(xiàn)的錯誤。在使用的過程中應(yīng)該注意錯誤的定義,有些使用0作為成功的標(biāo)志,而有些使用0作為錯誤的標(biāo)志。標(biāo)準(zhǔn)MODBUS的讀寫操作都以ERROR_SUCCESS(0)表示正確,Connect卻以NULL(0)表示錯誤,特殊命令的讀寫返回的讀寫的數(shù)據(jù)長度。 錯誤碼 錯誤含義 自定義錯誤碼 0 成功 100 普通錯誤,未定義 101 不是MODBUS協(xié)議 102 TCP連接出錯(可能主機不存在或本地網(wǎng)絡(luò)有問題) 103 TCP發(fā)送命令出錯(發(fā)送不成功,可能為網(wǎng)絡(luò)問題) 104 TCP接收響應(yīng)出錯(可能指示不正確或網(wǎng)絡(luò)有問題) 10

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論