精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

英創信息技術WinCE下的Modbus主控通訊協議軟件概述

英創信息技術 ? 來源:英創信息技術 ? 作者:英創信息技術 ? 2019-11-14 09:23 ? 次閱讀

Modbus 協議是一種已廣泛應用于當今工業控制領域的通用通訊協議。通過此協議,控制器相互之間、或控制器經由網絡(如以太網)可以和其它設備之間進行通信。Modbus 協議使用的是主從通訊技術,即由主設備主動查詢和操作從設備。一般將主控設備方所使用的協議稱為Modbus Master,從設備方使用的協議稱為Modbus Slave。典型的主設備包括工控機和工業控制器等;典型的從設備如PLC編程控制器等。Modbus通訊物理接口可以選用串口(包括RS232RS485),也可以選擇以太網口。其通信遵循以下的過程:

1、主設備向從設備發送請求;

2、從設備分析并處理主設備的請求,然后向主設備發送結果;

3、如果出現任何差錯,從設備將返回一個異常功能碼。

英創公司提供的ARM9嵌入式主板系列產品,均帶有豐富的串口、網絡資源,同時具有強大的處理能力,非常適用于作為Modbus 主設備的開發應用,為了加快做這類應用的開發速度,英創公司特推出WinCE下的Modbus主控軟件,該軟件的是以C函數加靜態LIB庫的形式提供給客戶。主要特征如下:

·非常適用于實時的工業應用,特別可以廣泛應用于對于PLC的控制。

·可以支持基于串口的Modbus 協議或者基于TCP的Modbus 協議。

·支持RTU傳輸模式。

·支持大多數的Modbus功能碼操作,包括對線圈、離散開關輸入的位操作,以及對寄存器的字節操作。

·支持廣播地址。

·可以獲取通訊中傳輸協議的錯誤代碼的詳細信息

為了方便應用程序的使用,對不同的通訊介質保持一致的代碼形式,英創所提供的ModBus主控軟件包的API函數可以同時支持基于串口和TCP的Modbus Master協議,應用程序只需要在調用初始化函數時,用不同參數區分即可。有關Modbus通訊的具體使用方法,請參考Modbus標準文獻以及被控設備的通訊接口數據手冊。以下介紹英創Modbus主控軟件的相關API函數,各個函數的定義如下:

//////////////////////////////////////////////////////////////////////////////////////////////////////////

描述:通過串口或者網絡TCP打開ModBus協議,連接到ModBus設備。對于串口方式,通過該函數打開串口,并設置相應串口的通訊參數,以滿足數據和控制命令的通訊;對于TCP方式,通過該函數和ModBus設備建立基于Socket方式的TCP連接,利用該連接進行數據和控制命令的通訊。

輸入參數 lpPortName:

該參數為TCHAR類型的字符串,該字符串中包含了打開ModBus協議的需

要設置的通訊參數信息。對于串口模式和TCP兩種模式分別采用不同的格式

的字符串。

(1)串口模式:

字符串必須以COM作為開頭,后面再帶上需要設置的串口通訊參數。格式為:

COMIdx:baudRate-dataBits-stopBits-parity

其中Idx為串口序號,‘:’ 后為串口通訊參數,各個通訊參數均用整型數據來表示,依次為波特率、數據位、停止位、校驗位,校驗位 0-無校驗 1-奇校驗 2-偶校驗。

如COM3作為通訊的協議口,波特率:9600bps、8為數據位、1個停止位、無校驗。其格式如下:

_T( ‘COM3:9600-8-1-0’ );

也可以直接就用 _T( ‘COM3’ )來表示,表明串口所用的為缺省參數:波特率 9600bps 數據位 8 停止位 1 無奇偶校驗。

(2) TCP模式:

字符串以IP地址作為開頭,‘:’后為指定TCP連接的特殊端口號,ModBus協議中缺省端口為502。如果不需要指定特殊端口,可以不帶此參數。格式如:

_T( ‘192.168.201.178’ ),使用端口號為502;

返回值 = NULL: 連接ModBus設備失敗。

!= NULL: 連接ModBus設備成功,并返回相應的操作句柄。

/////////////////////////////////////////////////////////////////////////////////////////////////////////

(1) HANDLE mbusMaster_OpenPortProtocol( LPCTSTR lpPortName );

////////////////////////////////////////////////////////////////////////////////////////////////////////

功能描述: 關閉ModBus設備連接,同時釋放使用的系統資源。

輸入參數 hPort: 連接ModBus設備返回的有效操作句柄。

返回值 = FALSE: 關閉操作失敗。

= TRUE: 關閉操作成功。

/////////////////////////////////////////////////////////////////////////////////////////////////////////////

(2) BOOL mbusMaster_ClosePortProtocol( HANDLE hPort );

/////////////////////////////////////////////////////////////////////////////////////////////////////////////

功能描述: 設置ModBus通訊的超時時間,單位為毫秒。并返回實際設置的超時時間。

輸入參數 hPort: 連接ModBus設備返回的有效操作句柄。

milliseconds: ModBus通訊超時時間,單位為毫秒。

返回值 《 0: 操作失敗。

》 0: 實際設置的超時時間。

//////////////////////////////////////////////////////////////////////////////////////////////////////////

(3) int mbusMaster_SetTimeout( HANDLE hPort, int milliseconds );

//////////////////////////////////////////////////////////////////////////////////////////////////////////

功能描述: 讀取ModBus從機設備的線圈值,實現ModBus功能碼1。

輸入參數 hPort: 連接ModBus設備返回的有效操作句柄。

slaveAddr: ModBus從機設備的地址,地址范圍為: 1~255

startRef: 需要讀取線圈的起始值,其范圍為: 1~0x10000

bitArr: 存放讀取線圈數據的數組

refCnt: 需要讀取的線圈數量,其范圍為: 1~2000

返回值 != 0: 該功能操作失敗,返回值為相應的出錯代碼。

= 0: 該功能操作成功。

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

(4) int mbusMaster_ReadCoils( HANDLE hPort, UCHAR slaveAddr, UINT16 startRef, int bitArr[], UINT16 refCnt);

//////////////////////////////////////////////////////////////////////////////////////////////////////////

功能描述: 讀取ModBus從機設備離散量的輸入值,實現ModBus功能碼2。

輸入參數 hPort: 連接ModBus設備返回的有效操作句柄。

slaveAddr: ModBus從機設備的地址,地址范圍為: 1~255

startRef: 需要讀取離散量的起始值,其范圍為: 1~0x10000

bitArr: 存放讀取離散量輸入數據的數組

refCnt: 需要讀取的離散量數量,其范圍為: 1~2000

返回值 != 0: 該功能操作失敗,返回值為相應的出錯代碼。

= 0: 該功能操作成功。

////////////////////////////////////////////////////////////////////////////////////////////////////

(5) int mbusMaster_ReadInputDiscretes( HANDLE hPort, UCHAR slaveAddr, UINT16 startRef, int bitArr[], UINT16 refCnt);

///////////////////////////////////////////////////////////////////////////////////////////////////

功能描述: ModBus從機設備的單個線圈的寫入操作,實現ModBus功能碼5。

輸入參數 hPort: 連接ModBus設備返回的有效操作句柄。

slaveAddr: ModBus從機設備的地址,地址范圍為: 1~255

bitAddr: 需要操作的線圈地址,其范圍為: 1~0x10000

bitVal: 寫入線圈的值, 1-置位(ON) 0-清(OFF)

返回值 != 0: 該功能操作失敗,返回值為相應的出錯代碼。

= 0: 該功能操作成功。

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

(6) int mbusMaster_WriteCoil( HANDLE hPort, UCHAR slaveAddr, UINT16 bitAddr, int bitVal );

//////////////////////////////////////////////////////////////////////////////////////////////////

功能描述: ModBus從機設備的多個線圈的寫入操作,實現ModBus功能碼15。

輸入參數 hPort: 連接ModBus設備返回的有效操作句柄。

slaveAddr: ModBus從機設備的地址,地址范圍為: 1~255

startRef: 需要設置的線圈起始值,其范圍為: 1~0x10000

bitArr: 需要設置線圈數據的數組

refCnt: 需要設置的線圈數量,其范圍為: 1~800

返回值 != 0: 該功能操作失敗,返回值為相應的出錯代碼。

= 0: 該功能操作成功。

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

(7) int mbusMaster_ForceMultipleCoils( HANDLE hPort, UCHAR slaveAddr, UINT16 startRef, int bitArr[], UINT16 refCnt);

/////////////////////////////////////////////////////////////////////////////////////////////////////////

功能描述: 讀取ModBus從機設備多個寄存器值,實現ModBus功能碼3。

輸入參數 hPort: 連接ModBus設備返回的有效操作句柄。

slaveAddr: ModBus從機設備的地址,地址范圍為: 1~255

startRef: 需要讀取寄存器的起始值,其范圍為: 1~0x10000

regArr: 存放讀取寄存器值的數組

refCnt: 需要讀取的寄存器數量,其范圍為: 1~125

返回值 != 0: 該功能操作失敗,返回值為相應的出錯代碼。

= 0: 該功能操作成功。

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

(8) int mbusMaster_ReadMultipleRegisters( HANDLE hPort, UCHAR slaveAddr, UINT16 startRef, UINT16 regArr[], UINT16 refCnt );

////////////////////////////////////////////////////////////////////////////////////////////////////////

功能描述: 讀取ModBus從機設備輸入寄存器值,實現ModBus功能碼4。

輸入參數 hPort: 連接ModBus設備返回的有效操作句柄。

slaveAddr: ModBus從機設備的地址,地址范圍為: 1~255

startRef: 需要讀取輸入寄存器的起始值,其范圍為: 1~0x10000

regArr: 存放讀取輸入寄存器值的數組

refCnt: 需要讀取的輸入寄存器數量,其范圍為: 1~125

返回值 != 0: 該功能操作失敗,返回值為相應的出錯代碼。

= 0: 該功能操作成功。

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

(9) int mbusMaster_ReadInputRegisters( HANDLE hPort, UCHAR slaveAddr, UINT16 startRef, UINT16 regArr[], UINT16 refCnt);

//////////////////////////////////////////////////////////////////////////////////////////////////////////

功能描述: ModBus從機設備多個寄存器的寫操作,實現ModBus功能碼16。

輸入參數 hPort: 連接ModBus設備返回的有效操作句柄。

slaveAddr: ModBus從機設備的地址,地址范圍為: 1~255

startRef: 需要讀取寄存器的起始值,其范圍為: 1~0x10000

regArr: 需寫入寄存器值的數組

refCnt: 需要操作的寄存器數量,其范圍為: 1~100

返回值 != 0: 該功能操作失敗,返回值為相應的出錯代碼。

= 0: 該功能操作成功。

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

(10) int mbusMaster_WriteMultipleRegisters( HANDLE hPort, UCHAR slaveAddr, UINT16 startRef, UINT16 regArr[], UINT16 refCnt);

/////////////////////////////////////////////////////////////////////////////////////////////////////////

功能描述: 對ModBus從機設備單個寄存器的寫操作,實現ModBus功能碼6。

輸入參數 hPort: 連接ModBus設備返回的有效操作句柄。

slaveAddr: ModBus從機設備的地址,地址范圍為: 1~255

regAddr: 需要操作寄存器的地址,其范圍為: 1~0x10000

regVal: 需寫入寄存器的值

返回值 != 0: 該功能操作失敗,返回值為相應的出錯代碼。

= 0: 該功能操作成功。

//////////////////////////////////////////////////////////////////////////////////////////////////////////

(11) int mbusMaster_WriteSingleRegister( HANDLE hPort, UCHAR slaveAddr, UINT16 regAddr, UINT16 regVal );

//////////////////////////////////////////////////////////////////////////////////////////////////////////

功能描述: 對ModBus從機設備屏蔽寫寄存器,實現ModBus功能碼22。

輸入參數 hPort: 連接ModBus設備返回的有效操作句柄。

slaveAddr: ModBus從機設備的地址,地址范圍為: 1~255

regAddr: 需要操作寄存器的地址,其范圍為: 1~0x10000

andMask: 屏蔽寫與數據

orMask: 屏蔽寫或數據

返回值 != 0: 該功能操作失敗,返回值為相應的出錯代碼。

= 0: 該功能操作成功。

/////////////////////////////////////////////////////////////////////////////////////////////////////////////

(12) int mbusMaster_MaskWriteRegister( HANDLE hPort, UCHAR slaveAddr, UINT16 regAddr, UINT16 andMask, UINT16 orMask);

////////////////////////////////////////////////////////////////////////////////////////////////////////////

功能描述: 對ModBus從機設備讀寫多個寄存器操作,實現ModBus功能碼23。

輸入參數 hPort: 連接ModBus設備返回的有效操作句柄。

slaveAddr: ModBus從機設備的地址,地址范圍為: 1~255

readRef: 需要讀取多個寄存器的起始值,其范圍為: 1~0x10000

readArr: 存放讀取寄存器值的數組

readCnt: 需要讀取的寄存器數量,其范圍為: 1~125

writeRef: 需要寫入多個寄存器的起始值,其范圍為: 1~0x10000

writeArr: 寫入寄存器值的數組

writeCnt: 需要寫入的寄存器數量,其范圍為: 1~125

返回值 != 0: 該功能操作失敗,返回值為相應的出錯代碼。

= 0: 該功能操作成功。

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

(13) int mbusMaster_ReadWriteRegisters( HANDLE hPort, UCHAR slaveAddr, UINT16 readRef, UINT16 readArr[],UINT16 readCnt,UINT16 writeRef,

UINT16 writeArr[], UINT16 writeCnt);

///////////////////////////////////////////////////////////////////////////////////////////////////////

功能描述: 獲取ModBus軟件包的版本信息。

返回值 : TCHAR類型的字符串,為ModBus軟件包的版本信息。

//////////////////////////////////////////////////////////////////////////////////////////////////////

(14) TCHAR * mbusMaster_GetPackageVersion( );

/////////////////////////////////////////////////////////////////////////////////////////////////////

功能描述: 根據錯誤代碼獲取錯誤文本信息。

返回值 : TCHAR類型的字符串,為錯誤文本信息。

/////////////////////////////////////////////////////////////////////////////////////////////////////

(15) TCHAR * mbusMaster_GetErrorText( int errCode );

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式主板
    +關注

    關注

    7

    文章

    6085

    瀏覽量

    35212
收藏 人收藏

    評論

    相關推薦

    主板中預裝Modbus通訊協議

    modbus_Master.h,與原來的靜態庫保持不變,相應各個API函數的說明請參見網站技術天地文章《Wince
    發表于 10-20 10:40

    信息技術WinCE系統多串口擴展方案簡介

     異步串行通訊口(UART)是在工業自動化中應用最為廣泛的通訊接口之一,其接口形式包括RS232C、RS485、RS422。作為以網絡通訊為特色的
    的頭像 發表于 10-31 15:15 ?1650次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創</b><b class='flag-5'>信息技術</b><b class='flag-5'>WinCE</b>系統多串口擴展方案簡介

    信息技術WinCE工控主板簡介

    公司的ARM9嵌入式工控主板產品系列,均預裝了正版WinCE5.0操作系統。微軟的 WinCE實時多任務操作系統是嵌入式領域的主流操作系統之一,它包括了以TCP/IP為特色的完整網
    的頭像 發表于 11-01 09:29 ?1486次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創</b><b class='flag-5'>信息技術</b><b class='flag-5'>WinCE</b>工控主板簡介

    信息技術ARM9工控主板WinCE應用程序遠程控制應用

    公司推出的ARM9嵌入式工控主板產品系列,均預裝了正版的WinCE5.0操作系統。微軟的WINCE實時多任務操作系統是嵌入式領域的主流操作系統之一,它包括了以TCP/IP為特色的完
    的頭像 發表于 11-04 09:28 ?1713次閱讀

    信息技術WinCEModbus設備方協議軟件介紹

     Modbus協議是一種已廣泛應用于當今工業控制領域的通用通訊協議。通過此協議,控制器相互之間、或控制器經由網絡(如以太網)可以和其它設備之間進行通信。
    的頭像 發表于 11-14 09:45 ?1439次閱讀

    信息技術如何實現WinCE系統中USB設備自動檢測概述

    公司ARM9系列工控主板預裝正版WinCE操作系統,提供標準USB接口,本文介紹如何在應用程序中判斷USB存儲設備的插入和移出操作。
    的頭像 發表于 11-18 09:44 ?1361次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創</b><b class='flag-5'>信息技術</b>如何實現<b class='flag-5'>WinCE</b>系統中USB設備自動檢測<b class='flag-5'>概述</b>

    信息技術WinCE工控主板的數據庫配置簡介

    公司的工控主板產品均預裝了正版Windows CE操作系統(簡稱WinCE)。WinCE是嵌入式領域的主流操作系統之一,它不僅在多任務、通訊
    的頭像 發表于 01-14 11:35 ?1433次閱讀

    信息技術主板支持Modbus主控協議軟件

    1、簡述 Modbus 協議是一種已廣泛應用于當今工業控制領域的通用通訊協議。通過此協議,控制器相互之間、或控制器經由網絡(如以太網)可以和
    的頭像 發表于 01-16 10:35 ?1552次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創</b><b class='flag-5'>信息技術</b>主板支持<b class='flag-5'>Modbus</b><b class='flag-5'>主控</b><b class='flag-5'>協議</b><b class='flag-5'>軟件</b>

    信息技術WinCE遠程桌面介紹

    公司WinCE系列工控主板,即可以支持多種格式的單色點陣液晶,也可以支持從320240到1024768的各種分辨率的彩色TFT LCD,借助WinCE強大的GUI,用戶可以很容易的
    的頭像 發表于 01-16 10:24 ?2894次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創</b><b class='flag-5'>信息技術</b><b class='flag-5'>WinCE</b>遠程桌面介紹

    信息技術LinuxModbus設備方協議軟件介紹

    Modbus協議是一種已廣泛應用于當今工業控制領域的通用通訊協議。通過此協議,控制器相互之間、或控制器經由網絡(如以太網)可以和其它設備之間進行通信。
    的頭像 發表于 01-17 08:47 ?1363次閱讀

    信息技術主板WinCE應用程序的FTP遠程更新介紹

    特色的完整網絡通訊協議,并提供了基于TCP/IP應用協議的服務器程序,如FTP Server、Web Server等等很實用的軟件程序。
    的頭像 發表于 02-03 09:00 ?1465次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創</b><b class='flag-5'>信息技術</b>主板<b class='flag-5'>WinCE</b>應用程序的FTP遠程更新介紹

    信息技術主板中預裝Modbus通訊協議

    目前公司提供ModBus通訊協議軟件運行于WinCE
    的頭像 發表于 02-06 10:55 ?1305次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創</b><b class='flag-5'>信息技術</b>主板中預裝<b class='flag-5'>Modbus</b><b class='flag-5'>通訊</b><b class='flag-5'>協議</b>

    信息技術WinCE主板與STM32多功能模塊通訊介紹

    ,STM32F103RCT6通過其USB Device接口與工控主板連接通訊,STM32在WinCE系統中被當做一個串口設備,
    的頭像 發表于 02-06 11:12 ?2036次閱讀

    信息技術WinCE文件系統測試及故障分析簡介

    WINCE文件系統的偶發故障一直是WINCE系統最為棘手的問題,盡管出現故障的幾率不高,但對設備的穩定運行造成嚴重影響。為了保證基于WinCE的嵌入式系統能穩定可靠運行,
    的頭像 發表于 02-07 11:15 ?1419次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創</b><b class='flag-5'>信息技術</b><b class='flag-5'>WinCE</b>文件系統測試及故障分析簡介

    信息技術ModBus通訊協議軟件包簡介

    使用的是主從通訊技術,即由主設備主動查詢和操作從設備。一般將主控設備方所使用的協議稱為Modbus Master,從設備方使用的
    的頭像 發表于 02-14 09:38 ?2253次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創</b><b class='flag-5'>信息技術</b><b class='flag-5'>ModBus</b><b class='flag-5'>通訊</b><b class='flag-5'>協議</b><b class='flag-5'>軟件</b>包簡介