浓毛老太交欧美老妇热爱乱,蜜臀性色av免费,妺妺窝人体色www看美女,久久久久久久久久久大尺度免费视频,麻豆人妻无码性色av专区

位置:51電子網(wǎng) » 技術(shù)資料 » 通信網(wǎng)絡(luò)

基于Modbus協(xié)議實現(xiàn)單片機與PLC之間的通訊

發(fā)布時間:2007/8/28 0:00:00 訪問次數(shù):1282

來源:PLC&FA   作者:蔡曉燕 趙興群 萬遂人 董鵬云


關(guān)鍵詞: 可編程控制器   Modbus   通訊協(xié)議


1  引言
HMI(人機界面)以其體積小,高性能,強實時等特點,越來越多的應(yīng)用于工業(yè)自動化系統(tǒng)和設(shè)備中。它有字母、漢字、圖形和圖片等不同的顯示,界面簡單友好。配有長壽命的薄膜按鈕鍵盤,操作簡單。它一般采用具有集成度高、速度快、高可靠且價格低等優(yōu)點的單片機[1]作為其核心控制器,以實現(xiàn)實時快速處理。 PLC和單片機結(jié)合不僅可以提PLC的數(shù)據(jù)處理能力,還可以給用戶帶來友好簡潔的界面。本文以Modbus通訊協(xié)議為例,詳細討論了一個人機系統(tǒng)中,如何用C51實現(xiàn)單片機和PLC之間通訊的實例。


2  Modbus通訊協(xié)議[4]
Modbus協(xié)議是應(yīng)用于電子控制器上的一種通用語言。通過此協(xié)議,控制器相互之間、控制器經(jīng)由網(wǎng)絡(luò)和其它設(shè)備之間可以通信。

Modbus協(xié)議提供了主—從原則,即僅一設(shè)備(主設(shè)備)能初始化傳輸(查詢)。其它設(shè)備(從設(shè)備)根據(jù)主設(shè)備查詢提供的數(shù)據(jù)作出相應(yīng)反應(yīng)。主設(shè)備查詢的格式:設(shè)備地址(或廣播,此時不需要回應(yīng))、功能代碼、所有要發(fā)送的數(shù)據(jù)、和一錯誤檢測域。從設(shè)備回應(yīng)消息包括確認地址、功能碼、任何要返回的數(shù)據(jù)、和一錯誤檢測域。如果在消息接收過程中發(fā)生一錯誤,或從設(shè)備不能執(zhí)行其命令,從設(shè)備將建立一錯誤消息并把它作為回應(yīng)發(fā)送出去。

控制器能設(shè)置為兩種傳輸模式:ASCII和RTU,在同樣的波特率下,RTU可比ASCII方式傳送更多的數(shù)據(jù),所以采用KTU模式。

(1) 典型的RTU消息幀
典型的RTU消息幀如表1所示。




RTU消息幀的地址域包含8bit?赡艿膹脑O(shè)備地址是0...127(十進制)。其中地址0是用作廣播地址,以使所有的從設(shè)備都能認識。主設(shè)備通過將要聯(lián)絡(luò)的從設(shè)備的地址放入消息中的地址域來選通從設(shè)備。當從設(shè)備發(fā)送回應(yīng)消息時,它把自己的地址放入回應(yīng)的地址域中,以便主設(shè)備知道是哪一個設(shè)備作出回應(yīng)。

RTU消息幀中的功能代碼域包含了8bits,當消息從主設(shè)備發(fā)往從設(shè)備時,功能代碼域?qū)⒏嬷畯脑O(shè)備需要執(zhí)行哪些行為;當從設(shè)備回應(yīng)時,它使用功能代碼域來指示是正;貞(yīng)(無誤)還是有某種錯誤發(fā)生(稱作異議回應(yīng),一般是將功能碼的最高位由0改為1)。

從主設(shè)備發(fā)給從設(shè)備消息的數(shù)據(jù)域包含附加的信息:從設(shè)備必須用于進行執(zhí)行由功能代碼所定義的行為。這包括了像不連續(xù)的寄存器地址,要處理項的數(shù)目,域中實際數(shù)據(jù)字節(jié)數(shù)。如果沒有錯誤發(fā)生,從從設(shè)備返回的數(shù)據(jù)域包含請求的數(shù)據(jù)。如果有錯誤發(fā)生,此域包含一異議代碼,主設(shè)備應(yīng)用程序可以用來判斷采取下一步行動。

當選用RTU模式作字符幀時,錯誤檢測域包含一16Bits值(用兩個8位的字符來實現(xiàn))。錯誤檢測域的內(nèi)容是通過對消息內(nèi)容進行循環(huán)冗長檢測(CRC)方法得出的。CRC域附加在消息的最后,添加時先是低字節(jié)然后是高字節(jié)。

(2) 所有的Modbus功能碼
Modbus的功能碼定義如表2所示。



 


3  常用功能通訊程序的設(shè)計[5]
本文介紹了幾個Modbus常用功能程序的設(shè)計。筆者采用單片機作為主機,在單片機上編寫程序?qū)崿F(xiàn)單片機與PLC之間的通訊。由單片機向PLC發(fā)出命令信息,PLC自動作出回應(yīng)。PLC通過單片機的串行通訊口通訊,程序用C51實現(xiàn)。程序的子函數(shù)及其功能:

(1) 串口初始化
void ProtocolInit(void)
函數(shù)功能:串口設(shè)置為異步通訊方式1(起始位1位,數(shù)據(jù)位8位,停止位1位);定時/計數(shù)器1設(shè)置為波特率發(fā)生器,通訊速率 9600bps;開串行中斷,并把串行中斷設(shè)置為高優(yōu)先級。

(2) CRC簡單函數(shù)
unsigned char Crc16(unsigned char *puchMsg, unsigned char usDataLen)
函數(shù)功能:先調(diào)入一值是全“1”的16位寄存器,然后調(diào)用一過程將消息中連續(xù)的8位字節(jié)各當前寄存器中的值進行處理。每個8位字符都單獨和寄存器內(nèi)容相或 (OR),結(jié)果向最低有效位方向移動,最高有效位以0填充。LSB被提取出來檢測,如果LSB為1,寄存器單獨和預(yù)置的值或一下,如果LSB為0,則不進行。整個過程要重復(fù)8次。在最后一位(第8位)完成后,下一個8位字節(jié)又單獨和寄存器的當前值相或。最終寄存器中的值,是消息中所有的字節(jié)都執(zhí)行之后的 CRC值。

(3) 初始化變量
void Initvar(void)
函數(shù)功能:初始化所有過程變量。

(4) 串行中斷

來源:PLC&FA   作者:蔡曉燕 趙興群 萬遂人 董鵬云


關(guān)鍵詞: 可編程控制器   Modbus   通訊協(xié)議


1  引言
HMI(人機界面)以其體積小,高性能,強實時等特點,越來越多的應(yīng)用于工業(yè)自動化系統(tǒng)和設(shè)備中。它有字母、漢字、圖形和圖片等不同的顯示,界面簡單友好。配有長壽命的薄膜按鈕鍵盤,操作簡單。它一般采用具有集成度高、速度快、高可靠且價格低等優(yōu)點的單片機[1]作為其核心控制器,以實現(xiàn)實時快速處理。 PLC和單片機結(jié)合不僅可以提PLC的數(shù)據(jù)處理能力,還可以給用戶帶來友好簡潔的界面。本文以Modbus通訊協(xié)議為例,詳細討論了一個人機系統(tǒng)中,如何用C51實現(xiàn)單片機和PLC之間通訊的實例。


2  Modbus通訊協(xié)議[4]
Modbus協(xié)議是應(yīng)用于電子控制器上的一種通用語言。通過此協(xié)議,控制器相互之間、控制器經(jīng)由網(wǎng)絡(luò)和其它設(shè)備之間可以通信。

Modbus協(xié)議提供了主—從原則,即僅一設(shè)備(主設(shè)備)能初始化傳輸(查詢)。其它設(shè)備(從設(shè)備)根據(jù)主設(shè)備查詢提供的數(shù)據(jù)作出相應(yīng)反應(yīng)。主設(shè)備查詢的格式:設(shè)備地址(或廣播,此時不需要回應(yīng))、功能代碼、所有要發(fā)送的數(shù)據(jù)、和一錯誤檢測域。從設(shè)備回應(yīng)消息包括確認地址、功能碼、任何要返回的數(shù)據(jù)、和一錯誤檢測域。如果在消息接收過程中發(fā)生一錯誤,或從設(shè)備不能執(zhí)行其命令,從設(shè)備將建立一錯誤消息并把它作為回應(yīng)發(fā)送出去。

控制器能設(shè)置為兩種傳輸模式:ASCII和RTU,在同樣的波特率下,RTU可比ASCII方式傳送更多的數(shù)據(jù),所以采用KTU模式。

(1) 典型的RTU消息幀
典型的RTU消息幀如表1所示。




RTU消息幀的地址域包含8bit?赡艿膹脑O(shè)備地址是0...127(十進制)。其中地址0是用作廣播地址,以使所有的從設(shè)備都能認識。主設(shè)備通過將要聯(lián)絡(luò)的從設(shè)備的地址放入消息中的地址域來選通從設(shè)備。當從設(shè)備發(fā)送回應(yīng)消息時,它把自己的地址放入回應(yīng)的地址域中,以便主設(shè)備知道是哪一個設(shè)備作出回應(yīng)。

RTU消息幀中的功能代碼域包含了8bits,當消息從主設(shè)備發(fā)往從設(shè)備時,功能代碼域?qū)⒏嬷畯脑O(shè)備需要執(zhí)行哪些行為;當從設(shè)備回應(yīng)時,它使用功能代碼域來指示是正;貞(yīng)(無誤)還是有某種錯誤發(fā)生(稱作異議回應(yīng),一般是將功能碼的最高位由0改為1)。

從主設(shè)備發(fā)給從設(shè)備消息的數(shù)據(jù)域包含附加的信息:從設(shè)備必須用于進行執(zhí)行由功能代碼所定義的行為。這包括了像不連續(xù)的寄存器地址,要處理項的數(shù)目,域中實際數(shù)據(jù)字節(jié)數(shù)。如果沒有錯誤發(fā)生,從從設(shè)備返回的數(shù)據(jù)域包含請求的數(shù)據(jù)。如果有錯誤發(fā)生,此域包含一異議代碼,主設(shè)備應(yīng)用程序可以用來判斷采取下一步行動。

當選用RTU模式作字符幀時,錯誤檢測域包含一16Bits值(用兩個8位的字符來實現(xiàn))。錯誤檢測域的內(nèi)容是通過對消息內(nèi)容進行循環(huán)冗長檢測(CRC)方法得出的。CRC域附加在消息的最后,添加時先是低字節(jié)然后是高字節(jié)。

(2) 所有的Modbus功能碼
Modbus的功能碼定義如表2所示。



 


3  常用功能通訊程序的設(shè)計[5]
本文介紹了幾個Modbus常用功能程序的設(shè)計。筆者采用單片機作為主機,在單片機上編寫程序?qū)崿F(xiàn)單片機與PLC之間的通訊。由單片機向PLC發(fā)出命令信息,PLC自動作出回應(yīng)。PLC通過單片機的串行通訊口通訊,程序用C51實現(xiàn)。程序的子函數(shù)及其功能:

(1) 串口初始化
void ProtocolInit(void)
函數(shù)功能:串口設(shè)置為異步通訊方式1(起始位1位,數(shù)據(jù)位8位,停止位1位);定時/計數(shù)器1設(shè)置為波特率發(fā)生器,通訊速率 9600bps;開串行中斷,并把串行中斷設(shè)置為高優(yōu)先級。

(2) CRC簡單函數(shù)
unsigned char Crc16(unsigned char *puchMsg, unsigned char usDataLen)
函數(shù)功能:先調(diào)入一值是全“1”的16位寄存器,然后調(diào)用一過程將消息中連續(xù)的8位字節(jié)各當前寄存器中的值進行處理。每個8位字符都單獨和寄存器內(nèi)容相或 (OR),結(jié)果向最低有效位方向移動,最高有效位以0填充。LSB被提取出來檢測,如果LSB為1,寄存器單獨和預(yù)置的值或一下,如果LSB為0,則不進行。整個過程要重復(fù)8次。在最后一位(第8位)完成后,下一個8位字節(jié)又單獨和寄存器的當前值相或。最終寄存器中的值,是消息中所有的字節(jié)都執(zhí)行之后的 CRC值。

(3) 初始化變量
void Initvar(void)
函數(shù)功能:初始化所有過程變量。

(4) 串行中斷

相關(guān)IC型號

熱門點擊

 

推薦技術(shù)資料

耳機的焊接
    整機電路簡單,用洞洞板搭線比較方便。EM8621實際采... [詳細]
版權(quán)所有:51dzw.COM
深圳服務(wù)熱線:13692101218  13751165337
粵ICP備09112631號-6(miitbeian.gov.cn)
公網(wǎng)安備44030402000607
深圳市碧威特網(wǎng)絡(luò)技術(shù)有限公司
付款方式


 復(fù)制成功!