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

下載本文檔

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

文檔簡(jiǎn)介

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

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

3、Ip 指定要進(jìn)行連接的從機(jī)(服務(wù)器)的IP地址。 nDstPort 指定從機(jī)的端口號(hào)。 nConnTimeout 指定連接超時(shí)。 返回值 返回“非NULL”表示成功,否則為錯(cuò)誤。 1.2.2 串口鏈路連接 Ø ZMB_SerConnectMDBServer(串口主機(jī)使用) 描述 調(diào)用此函數(shù)連接到從機(jī)模塊(或服務(wù)器)。使用者應(yīng)該注意對(duì)于串口的操作每個(gè)串口在同一時(shí)間只能打開一次,因此在操作串口時(shí)應(yīng)該控制號(hào)程序使它每次只打開一次。 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 需要打開的計(jì)算機(jī)串口?!盋OM1”,”COM2”, iBautRate 模塊工作的波特率。9600,19200, iByteSize 模塊工作的數(shù)據(jù)位。數(shù)據(jù)位數(shù)(字節(jié)表示4-8位) iParity 模塊工作的校驗(yàn)位,奇偶校驗(yàn) 0-4:表示:不校驗(yàn),奇校驗(yàn),偶校驗(yàn),標(biāo)號(hào),空格 iStopBits 模塊工作的

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

6、描述 調(diào)用此函數(shù)斷開和從機(jī)的連接。 void ZMB_DisConnectMDBServer(HANDLE hHand); 參數(shù) hHand 此handle是ConnectMDBServer操作的返回值。 返回值 無。 1.2.4 以太網(wǎng)與串口鏈路的數(shù)據(jù)采集(讀寫) Ø ZMB_ReadCoil 描述 調(diào)用此函數(shù)按參數(shù)中的ID號(hào)和地址讀取線圈狀態(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號(hào)。nStart線圈的起始地址。nCount線圈的個(gè)數(shù)。bRet 返回的線圈狀態(tài),已分配號(hào)的數(shù)組地址。TranID在TCP的MODBUS協(xié)議里需要用到任務(wù)ID號(hào),如果為0使用系統(tǒng)自生成的,串口MODBUS此參數(shù)無效。返回值返回0表示成功,否則為錯(cuò)誤碼。Ø ZMB_ReadInput描述調(diào)用此函數(shù)按參數(shù)中的ID號(hào)和地址讀取線圈狀態(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號(hào)。 nStart 線圈的起始地址。 nCount 線圈的個(gè)數(shù)。 bRet 返回的線圈狀態(tài),已分配號(hào)的數(shù)組地址,此數(shù)組的大小應(yīng)該和nCount指定的大小相同。 TranID 在TCP的MODBUS協(xié)議里需要用到任務(wù)ID號(hào),如果為0使用系統(tǒng)自生成的,串口MODBUS此參數(shù)無效。 返回值 返回0表示成功,否則為錯(cuò)誤碼。 Ø ZMB_ReadHoldReg 描述 調(diào)用此函數(shù)按參數(shù)中的ID號(hào)和地址讀取保持寄存器的數(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號(hào)。 nStart 寄存器的起始地址。 nCount 寄存器的個(gè)數(shù)。 bRet 返回的寄存器數(shù)據(jù),已分配號(hào)的數(shù)組地址,此數(shù)組的大小應(yīng)該和nCount 一樣。 TranID 在TCP的MODBUS協(xié)議里需要用到任務(wù)ID號(hào),如果為0使用系統(tǒng)自生成的,串口MODBUS此參數(shù)無效。 返回值 返回0表

10、示成功,否則為錯(cuò)誤碼。 Ø ZMB_ReadInputReg 描述 調(diào)用此函數(shù)按參數(shù)中的ID號(hào)和地址讀取輸入寄存器的數(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號(hào)。 nStart 寄存器的起始地址。 nCount 寄存器的個(gè)數(shù)。 bRet 返回的輸入寄存器數(shù)據(jù),已分配號(hào)的數(shù)組地址,此數(shù)組的大小應(yīng)該和

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

12、ess 線圈的起始地址。 wWriteData 寫入的線圈數(shù)據(jù):“0”,“1”。 TranID 在TCP的MODBUS協(xié)議里需要用到任務(wù)ID號(hào),如果為0使用系統(tǒng)自生成的,串口MODBUS此參數(shù)無效。 返回值 返回0表示成功,否則為錯(cuò)誤碼。 Ø ZMB_WriteCoilMulitiple 描述 調(diào)用此函數(shù)按參數(shù)中的ID號(hào)和地址修改nCount指定的多個(gè)線圈狀態(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號(hào)。 nAddress 線圈的起始地址。 nCount 寫入的線圈的個(gè)數(shù)。 bWriteDataArr 寫入的線圈數(shù)據(jù)的數(shù)組,數(shù)組的每個(gè)結(jié)構(gòu)保存一個(gè)線圈狀態(tài),此數(shù)組大小應(yīng)該和nCount指定的大小相同。 TranID 在TCP的MODBUS協(xié)議里需要用到任務(wù)ID號(hào),如果為0使用系統(tǒng)自生成的,串口MODBUS此參數(shù)無效。 返回值 返回0表示成功,否則為錯(cuò)誤碼。 Ø ZMB_WriteRegSingle 描述 調(diào)用此函數(shù)按參數(shù)中的ID號(hào)和地址修改單個(gè)保持寄存器數(shù)據(jù)。 long ZM

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

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

16、小應(yīng)該等于 nCount * 2 個(gè)字節(jié)。 TranID 在TCP的MODBUS協(xié)議里需要用到任務(wù)ID號(hào),如果為0使用系統(tǒng)自生成的,串口MODBUS此參數(shù)無效。 返回值 返回0表示成功,否則為錯(cuò)誤碼。Ø ZMB_WriteCmdBuf描述 調(diào)用此函數(shù)寫命令串,根據(jù)nAddCheck參數(shù)決定是否添加校驗(yàn)。其中TCP Modbus協(xié)議不會(huì)添加必要的頭部,而串口Modbus則可以根據(jù)nAddCheck指定是否添加校驗(yàn),校驗(yàn)的格式(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ū)長(zhǎng)度。 nAddCheck 是否添加校驗(yàn),只在串口中有效,如果打開時(shí)為RUT,且使用了添加校驗(yàn),則添加CRC校驗(yàn)。如果打開時(shí)為ASCII,且使用了添加校驗(yàn),則添加LRC校驗(yàn)。 TranID 在TCP的MODBUS協(xié)議里需要用到任務(wù)ID號(hào),如果為0使用系統(tǒng)自生成的,串口MODBUS此參數(shù)無效。 返回值 返回寫成功的長(zhǎng)度。 Ø 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ù)的長(zhǎng)度,(輸出參數(shù))。 TranID 在TCP的MODBUS協(xié)議里需要用到任務(wù)ID號(hào),如果為0使用系統(tǒng)自生成的,串口MODBUS此參數(shù)無效。 返回值 返回讀取到的長(zhǎng)度。 2 錯(cuò)誤代碼 ZModbusSdk使用了標(biāo)準(zhǔn)的MODBUS錯(cuò)誤代碼和自定義錯(cuò)誤代碼來描述SDK在操作過程中會(huì)出現(xiàn)的錯(cuò)誤。在使用的過程中應(yīng)該注意錯(cuò)誤的定義,有些使用0作為成功的標(biāo)志,而有些使用0作為錯(cuò)誤的標(biāo)志。標(biāo)準(zhǔn)MODBUS的讀寫操作都以ERROR_SUCCESS(0)表示正確,Connect卻以NULL(0)表示錯(cuò)誤,特殊命令的讀寫返回的讀寫的數(shù)據(jù)長(zhǎng)度。 錯(cuò)誤碼 錯(cuò)誤含義 自定義錯(cuò)誤碼 0 成功 100 普通錯(cuò)誤,未定義 101 不是MODBUS協(xié)議 102 TCP連接出錯(cuò)(可能主機(jī)不存在或本地網(wǎng)絡(luò)有問題) 103 TCP發(fā)送命令出錯(cuò)(發(fā)送不成功,可能為網(wǎng)絡(luò)問題) 104 TCP接收響應(yīng)出錯(cuò)(可能指示不正確或網(wǎng)絡(luò)有問題) 10

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論