国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

英創(chuàng)信息技術Linux下的Modbus設備方協(xié)議軟件介紹

英創(chuàng)信息技術 ? 來源:英創(chuàng)信息技術 ? 作者:英創(chuàng)信息技術 ? 2020-01-17 08:47 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

? 主設備向從設備發(fā)送請求;
? 從設備分析并處理主設備的請求,然后向主設備發(fā)送結果;
? 如果出現(xiàn)任何差錯,從設備將返回一個異常功能碼。

英創(chuàng)公司提供的ARM9嵌入式主板系列產品,均帶有豐富的串口、網(wǎng)絡資源、通用GPIO接口等,同時具有強大的處理能力,除了適用于作為Modbus 主設備的開發(fā)應用,還可以作為ModBus從設備的開發(fā)應用。主控協(xié)議軟件在英創(chuàng)的“Linux下的ModBus主控協(xié)議軟件”一文已有介紹, 在本文中主要介紹基于實現(xiàn)ModBus設備方協(xié)議的軟件包“Linux下的ModBus設備方協(xié)議軟件”(以下簡稱mbusslave軟件包)。該軟件的是以C函數(shù)加靜態(tài)庫libmbusslave.a的形式提供給客戶。主要特征如下:

? 非常適用于實時的工業(yè)應用。
? 可以支持基于串口的Modbus協(xié)議應用或者基于TCP的Modbus協(xié)議應用。
? 支持RTU傳輸模式。
? 支持大多數(shù)的Modbus功能碼操作,包括對線圈、離散開關輸入的位操作,以及對寄存器的字節(jié)操作。
? 可以獲取通訊中傳輸協(xié)議的錯誤代碼的詳細信息。

作為ModBus服務器,無論是基于串口還是基于TCP,在英創(chuàng)提供的mbusslave軟件包中,實現(xiàn)了對于ModBus應用報文的分析與響應,這只是ModBus通訊的一部分。另一部分是還需要有對應用數(shù)據(jù)的訪問,這部分的內容則需要用戶自己來進行定義,為了方便客戶的使用,在mbusslave軟件包中通過函數(shù)指針的形式,實現(xiàn)了這些用戶接口函數(shù)的自動加載,將用戶應用數(shù)據(jù)處理和ModBus應用報文響應關聯(lián)起來。用戶只需根據(jù)需求定義這些接口函數(shù)來實現(xiàn)相應的功能,各個函數(shù)具體的定義是通過專門的一個CPP文件:DataProvider.cpp來實現(xiàn)。所以在使用英創(chuàng)的mbusslave軟件包時,有兩個部分組成,一部分是 modbus_slave.h/ libmbusslave.a定義的API函數(shù);另一部分是DataProvider.h /DataProvider.cpp定義的用戶數(shù)據(jù)接口函數(shù),其中接口函數(shù)需要用戶在DataProvider.cpp中具體實現(xiàn)。

一、mbusslave軟件包API函數(shù)

為了方便應用程序的使用,對不同的通訊介質保持一致的代碼形式,英創(chuàng)所提供的mbusslave軟件包的API函數(shù)可以同時支持基于串口和TCP的Modbus協(xié)議,應用程序只需要在調用初始化函數(shù)時,用不同參數(shù)區(qū)分即可。以下介紹英創(chuàng)modbusSlave軟件包的相關API函數(shù),各個函數(shù)的定義如下:

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

功能描述:

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

輸入?yún)?shù) pPortName:

該參數(shù)為char類型的字符串,該字符串中包含了啟動ModBus協(xié)議的需要設置的通訊參數(shù)信息。對于串口模式和TCP兩種模式分別采用不同的格式的字符串。
(1) 串口模式:
字符串必須以ttyS作為開頭,后面再帶上需要設置的串口通訊參數(shù)。格式為: ttySIdx:baudRate-dataBits-stopBits-parity
其中Idx為串口序號,':' 后為串口通訊參數(shù),各個通訊參數(shù)均用整型數(shù)據(jù)來表示,依次為波特率、數(shù)據(jù)位、停止位、校驗位,校驗位 0-無校驗 1-奇校驗 2-偶校驗。
如ttyS2作為通訊的協(xié)議口,波特率:9600bps、8為數(shù)據(jù)位、1個停止位、無校驗。其格式如下:'ttyS2:9600-8-1-0' ;

也可以直接就用 'ttyS2' 來表示,表明串口所用的為缺省參數(shù):波特率 9600bps 數(shù)據(jù)位 8 停止位 1 無奇偶校驗。
(2) TCP模式:
字符串以IP地址或者”*”作為開頭,':'后為指定TCP連接的特殊端口號,ModBus協(xié)議中缺省端口為502。如果不需要指定特殊端口,可以不帶此參數(shù)。格式如:'192.168.201.178' 或者“*”,使用端口號為502;
slaveAddr:
ModBus Slave設備地址。
timeout:
設置ModBus協(xié)議通訊響應的超時時間,單位為毫秒ms
mbusSlave_Interface:
數(shù)據(jù)處理函數(shù)指針結構,即需要加載ModBus Slave設備響應各個功能的用戶數(shù)據(jù)處理接口函數(shù)。這些用戶接口函數(shù)是由用戶自己提供,用戶可以根據(jù)選擇的功能來實現(xiàn)。這些函數(shù)的名稱和定義是固定的。分別為:
(1) 功能:讀保持寄存器/讀寫寄存器,實現(xiàn)功能碼3、23
int ReadHoldingRegistersTable( int startRef, short regArr[], int refCnt );
(2) 功能:寫寄存器,實現(xiàn)功能碼6、16、22、23
int WriteHoldingRegistersTable( int startRef, const short regArr[], int refCnt );
(3) 功能:讀輸入寄存器,實現(xiàn)功能碼4
int ReadInputRegistersTable( int startRef, short regArr[], int refCnt );
(4) 功能:讀線圈,實現(xiàn)功能碼1
int ReadCoilsTable( int startRef, char bitArr[], int refCnt );
(5) 功能:寫線圈,實現(xiàn)功能碼5、15
int WriteCoilsTable( int startRef, const char bitArr[], int refCnt );
(6) 功能:讀離散量,實現(xiàn)功能碼 2
int ReadInputDiscretesTable( int startRef, char bitArr[], int refCnt );
返回值 = NULL: 啟動ModBus設備失敗。
!= NULL: 啟動ModBus設備成功,并返回相應的操作句柄。
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// (1) HANDLE mbusSlave_StartupServer( char* pPortName, int slaveAddr, int timeout, ModBusSlave_Interface mbusSlave_Interface );
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
功能描述: ModBus 服務器執(zhí)行函數(shù),用于對ModBus報文的分析和響應。
該函數(shù)為阻塞模式,阻塞的時間為函數(shù)mbusSlave_StartupServer (…)中設置的ModBus協(xié)議通訊響應的超時時間 timeout,也相當于等待請求響應的超時時間。實際應用中需要在線程中不斷地調用該函數(shù)。
輸入?yún)?shù)
hPort: 啟動ModBus設備后獲取的操作句柄
返回值 0: 相應操作成功
!=0: 錯誤代碼,可調用函數(shù)mbusSlave_GetErrorText(…)獲取錯誤的文本信息
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
(2) int mbusSlave_ServerLoop( HANDLE hPort );
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 功能描述: 關閉ModBus服務器應用。
輸入?yún)?shù)
hPort: 啟動ModBus設備后獲取的操作句柄
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// (3) void mbusSlave_ShutdownServer( HANDLE hPort );
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
功能描述: 獲取ModBus軟件包的版本信息。
返回值 : ModBus軟件包的版本信息。
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
(4) char * mbusSlave_GetPackageVersion( );


/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
功能描述: 根據(jù)錯誤代碼獲取錯誤文本信息。
返回值 :錯誤文本信息。
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
(5) char * mbusSlave_GetErrorText( int errCode );
modbus_Slave API調用的使用范例:

1、啟動modbus設備方協(xié)議

TCP方式:

hPort = mbusSlave_StartupServer( '*', 1, 10000, mbusSlave_Interface );
串口方式:
hPort=mbusSlave_StartupServer( 'ttyS2:9600-8-1-0',1,10000, mbusSlave_Interface );
2、線程中調用Serverloop 響應請求
while( 1 )
{
result = mbusSlave_ServerLoop( hPort );
if( result!=0 ) // 檢查是否返回錯誤
{
// 出錯處理:本例為獲取并打印錯誤代碼的文本信息
strcpy( strText, mbusSlave_GetErrorText( result ) );
i1 = strlen( strText );
if( i1>0 )
{
printf( ' error code: %s!\n', strText );
}
}
}

二、mbusslave軟件包用戶接口函數(shù)

在DataProvider.h中共定義了6個用戶數(shù)據(jù)接口函數(shù)定義如下:

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
功能描述: 讀保持寄存器/讀寫寄存器,實現(xiàn)功能碼3、23
輸入?yún)?shù)
startRef: 寄存器的起始地址,范圍:1-0x10000
regArr: 讀取寄存器的值
refCnt: 需要讀取的寄存器數(shù)目,范圍:1-125
返回值
=1:操作成功
=0:不支持該項操作
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
(1)int ReadHoldingRegistersTable( int startRef, short regArr[], int refCnt );
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
功能描述: 寫寄存器,實現(xiàn)功能碼6、16、22、23
輸入?yún)?shù)
startRef: 寄存器的起始地址,范圍:1-0x10000
regArr: 寫寄存器的值
refCnt: 需要操作的寄存器數(shù)目,范圍:1-125
返回值
=1:操作成功
=0:不支持該項操作
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
(2)int WriteHoldingRegistersTable( int startRef, const short regArr[], int refCnt );
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
功能描述: 讀輸入寄存器,實現(xiàn)功能碼4
輸入?yún)?shù)
startRef: 寄存器的起始地址,范圍:1-0x10000
regArr: 讀取寄存器的值
refCnt: 需要讀取的寄存器數(shù)目,范圍:1-125
返回值
=1:操作成功
=0:不支持該項操作
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
(3)int ReadInputRegistersTable ( int startRef, short regArr[], int refCnt );
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
功能描述: 讀線圈,實現(xiàn)功能碼1
輸入?yún)?shù)
startRef: 寄存器的起始地址,范圍:1-0x10000
bitArr: 讀取線圈的值
refCnt: 需要讀取的線圈數(shù)目,范圍:1-2000
返回值
=1:操作成功
=0:不支持該項操作
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
(4)int ReadCoilsTable( int startRef, char bitArr[], int refCnt );
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
功能描述: 寫線圈,實現(xiàn)功能碼5、15
輸入?yún)?shù)
startRef: 寄存器的起始地址,范圍:1-0x10000
bitArr: 寫線圈的值
refCnt: 需要操作的線圈數(shù)目,范圍:1-2000
返回值
=1:操作成功
=0:不支持該項操作
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
(5)int WriteCoilsTable( int startRef, const char bitArr[], int refCnt );
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
功能描述: 讀離散量,實現(xiàn)功能碼 2
輸入?yún)?shù)
startRef: 寄存器的起始地址,范圍:1-0x10000
bitArr: 讀取離散量的值
refCnt: 需要讀取的離散量數(shù)目,范圍:1-2000
返回值
=1:操作成功
=0:不支持該項操作
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
(6)int ReadInputDiscretesTable( int startRef, char bitArr[], int refCnt );

英創(chuàng)現(xiàn)有的Linux工控主板均可支持該協(xié)議軟件,感興趣的客戶向公司索取相關的測試代碼。

相關閱讀:英創(chuàng)嵌入式Linux工控主板支持Modbus主控協(xié)議軟件

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

    關注

    88

    文章

    11760

    瀏覽量

    219032
  • 嵌入式主板
    +關注

    關注

    7

    文章

    6107

    瀏覽量

    37076
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    協(xié)議“老將”,連接工業(yè)智能的橋梁——一文讀懂ModBus通信協(xié)議

    | 智能樓宇 | 能源監(jiān)控 | 環(huán)境監(jiān)測 ModBus以其穩(wěn)定、開放、易集成的特性,持續(xù)為各類物聯(lián)網(wǎng)與工業(yè)系統(tǒng)提供可靠的通信支撐。 五、結語 從PLC到物聯(lián)網(wǎng),ModBus以其簡潔、開放、可靠的協(xié)議特性,跨越時代仍活躍在工業(yè)通信
    發(fā)表于 12-15 10:08

    OBOO鷗柏|信創(chuàng)觸摸一體機兆芯115寸Linux國產系統(tǒng)技術智造

    BOO鷗柏信創(chuàng)觸摸一體機:兆芯115寸Linux智造新標桿在信息技術應用創(chuàng)新浪潮中,【OBOO鷗柏】推出的信創(chuàng)觸摸一體機以其卓越性能和智能化設計,成為行業(yè)數(shù)字化轉型的重要工具。這款搭載
    的頭像 發(fā)表于 11-16 15:44 ?1258次閱讀
    OBOO鷗柏|信<b class='flag-5'>創(chuàng)</b>觸摸一體機兆芯115寸<b class='flag-5'>Linux</b>國產系統(tǒng)<b class='flag-5'>技術</b>智造

    佛瑞亞如何通過信息技術推動業(yè)務增長

    在數(shù)字化、信息化的浪潮信息技術已經(jīng)不僅是后臺工具,更成為驅動企業(yè)發(fā)展的關鍵力量。本期Women Inspiring Mobility,我們采訪了佛瑞亞中國區(qū)信息技術總監(jiān)馬瑛,了解她
    的頭像 發(fā)表于 07-29 14:00 ?904次閱讀

    用PLC控制使用Modbus RTU協(xié)議的采集模塊

    本文介紹了使用Modbus RTU協(xié)議的采集設備如何與PLC連接。
    的頭像 發(fā)表于 07-25 10:57 ?1265次閱讀
    用PLC控制使用<b class='flag-5'>Modbus</b> RTU<b class='flag-5'>協(xié)議</b>的采集模塊

    DEKRA德凱成為沙特通信和信息技術設備技術法規(guī)認證機構

    近日,DEKRA德凱成功獲得沙特標準、計量和質量組織(SASO)認可,正式成為沙特通信和信息技術設備技術法規(guī)(Technical Regulation for Communications
    的頭像 發(fā)表于 07-15 14:27 ?918次閱讀

    Modbus協(xié)議轉換:讓工業(yè)設備輕松“對話”

    在工業(yè)自動化中,Modbus協(xié)議設備通信的關鍵。本文將聚焦于Modbus協(xié)議的串口與網(wǎng)口轉換需求,并通過ZLG致遠電子PXB-6030D的案例,展示如何輕松實現(xiàn)協(xié)議轉換。
    的頭像 發(fā)表于 07-15 11:47 ?657次閱讀
    <b class='flag-5'>Modbus協(xié)議</b>轉換:讓工業(yè)<b class='flag-5'>設備</b>輕松“對話”

    CC\\-Link IE轉Modbus TCP:風電設備通信的“雙語模式”

    在新能源領域,風力發(fā)電設備的通信協(xié)議兼容性問題一直是工程師需要面對的“技術拼圖”。當CC-Link IE與Modbus TCP這兩種主流工業(yè)協(xié)議
    發(fā)表于 07-07 14:45

    大彩講堂:VisualTFT軟件modbus協(xié)議的告警應用

    VisualTFT軟件modbus協(xié)議的告警應用
    的頭像 發(fā)表于 07-01 17:40 ?1210次閱讀
    大彩講堂:VisualTFT<b class='flag-5'>軟件</b><b class='flag-5'>modbus協(xié)議</b><b class='flag-5'>下</b>的告警應用

    科普|信創(chuàng)是什么?一文讀懂“信息技術應用創(chuàng)新”戰(zhàn)略

    什么是信創(chuàng)?信創(chuàng),即“信息技術應用創(chuàng)新”,是國家推動IT系統(tǒng)自主可控、安全可控的重要戰(zhàn)略工程。它不僅是技術層面的創(chuàng)新,更承載著保障國家網(wǎng)絡安全、推動產業(yè)升級和實現(xiàn)數(shù)字主權的重任。簡單來
    的頭像 發(fā)表于 06-13 10:06 ?8264次閱讀
    科普|信<b class='flag-5'>創(chuàng)</b>是什么?一文讀懂“<b class='flag-5'>信息技術</b>應用創(chuàng)新”戰(zhàn)略

    工業(yè)通信的“超級翻譯官”Modbus轉Profinet如何讓稱重設備實現(xiàn)語言自由

    在競爭激烈的工業(yè)自動化領域,設備間通信協(xié)議的差異常常成為提升生產效率的絆腳石。但別擔心,我們?yōu)槟鷰砹艘粋€卓越的解決方案——VING微硬創(chuàng)新Modbus轉Profinet連接稱重設備
    發(fā)表于 05-21 15:45

    Modbus轉Profinet網(wǎng)關:工控機的“逆襲神器”

    :配置網(wǎng)關設備參數(shù) 1. 進入管理界面:通過瀏覽器或專門的配置軟件進入Modbus轉Profinet網(wǎng)關協(xié)議轉換網(wǎng)關設備的管理界面。不同廠家
    發(fā)表于 05-20 16:50

    告別協(xié)議沖突!Modbus轉Profinet助力風速風向儀無縫對接

    在工業(yè)自動化與物聯(lián)網(wǎng)蓬勃發(fā)展的當下,風速風向儀作為環(huán)境監(jiān)測與工業(yè)生產過程中的關鍵設備,其數(shù)據(jù)的實時準確傳輸對氣象監(jiān)測、風力發(fā)電、港口作業(yè)等領域至關重要。然而,風速風向儀常采用Modbus協(xié)議進行通信
    發(fā)表于 05-19 15:47

    創(chuàng)浪潮,國產主板有什么新的發(fā)展機遇?

    信息技術應用創(chuàng)新浪潮的推動,國產主板迎來了諸多新的發(fā)展機遇。信創(chuàng)產業(yè)旨在實現(xiàn)信息技術領域的自主可控,這一戰(zhàn)略目標為國產主板的發(fā)展提供了廣闊的空間。信
    的頭像 發(fā)表于 05-09 09:24 ?725次閱讀
    信<b class='flag-5'>創(chuàng)</b>浪潮<b class='flag-5'>下</b>,國產主板有什么新的發(fā)展機遇?

    基于 DeviceNet 轉 MODBUS RTU 協(xié)議的施耐德 PLC 與 ABB 電機驅動器倉儲堆垛機的定位控制優(yōu)化方案?

    基于 DeviceNet 轉 MODBUS RTU 協(xié)議的施耐德 PLC 與 ABB 電機驅動器倉儲堆垛機的定位控制優(yōu)化方案? 案例背景? 物流倉儲中心的自動化程度不斷提升,大量設備協(xié)同作業(yè)以實現(xiàn)
    發(fā)表于 05-03 10:45

    Modbus轉以太網(wǎng)終極方案:三步實現(xiàn)老舊設備智能升級

    包率低 典型痛點場景: ? 污水處理廠30個泵站Modbus儀表數(shù)據(jù)無法集中監(jiān)控 ? 紡織車間200臺老設備需投入6人專職抄表 ? 能源集團因協(xié)議不兼容損失百萬級數(shù)據(jù) 二、Modbus
    發(fā)表于 04-24 10:37