siemens x
傳感器

MODBUS通訊協(xié)議簡(jiǎn)述及自由口協(xié)議

2025China.cn   2010年02月03日

        Modbus通訊協(xié)議是一種簡(jiǎn)單的被所有軟硬件工控廠商免費(fèi)支持的通訊協(xié)議。FCS900可直接連接組態(tài)王、MCGS、IFIX等國(guó)內(nèi)外組態(tài)軟件,可以在1200米范圍內(nèi)輕松組建具有AI、AO、DI、DO等秒級(jí)遠(yuǎn)程、分散數(shù)據(jù)采集控制系統(tǒng)。也可以直接連接PLC、DCS等上位機(jī),作為遠(yuǎn)程I/O使用。

        一線通模塊按從機(jī)MODBUS協(xié)議設(shè)計(jì),若波特率、齊偶校驗(yàn)、起始位、停止位、數(shù)據(jù)位、從機(jī)地址等通訊參數(shù)設(shè)置正確,模塊可以同任何主機(jī)MODBUS設(shè)備直接通訊。


        FCS900系列模塊的通訊參數(shù)為:19200bps/1位起始位/1位停止位/無(wú)校驗(yàn)位/MODBUS-RTU協(xié)議。

        模塊支持下述MODBUS功能,所有功能按標(biāo)準(zhǔn)MODBUS協(xié)議設(shè)計(jì)。

1,功能碼02H:成組讀取一線通模塊的數(shù)字量輸入信號(hào)狀態(tài)(DI)。

2,功能碼03H:成組讀取一線通模塊的模擬量輸入信號(hào)(AI)。

3,功能碼04H:成組讀取一線通模塊的模擬量輸入信號(hào)(AI)。

4,功能碼05H:設(shè)置一線通模塊的單一輸出線圈的狀態(tài)(DO)。

5,功能碼06H:設(shè)置一線通模塊的單一模擬量存儲(chǔ)器內(nèi)容(AO)。

6,功能碼0FH:成組設(shè)置一線通模塊的數(shù)字量輸入信號(hào)狀態(tài)(DO)。

7,功能碼10H:成組設(shè)置一線通模塊的模擬量輸出信號(hào)狀態(tài)(AO)。

        功能碼02H是讀取各通道數(shù)字量采集結(jié)果命令。通訊首先由MODBUS主機(jī)設(shè)備發(fā)送“主機(jī)發(fā)信數(shù)據(jù)幀”,指明通訊對(duì)象的從機(jī)地址(一線通模塊地址)、數(shù)據(jù)的起始寄存器地址、數(shù)據(jù)數(shù)量和本次數(shù)據(jù)幀的CRC校驗(yàn)。一線通模塊接收到“主機(jī)發(fā)信數(shù)據(jù)幀”后,判斷從機(jī)地址是否與本機(jī)地址相同以及CRC校驗(yàn)是否出錯(cuò),若地址不同或CRC出錯(cuò),一線通模塊不作響應(yīng);若地址相同且CRC校驗(yàn)結(jié)果正確,一線通模塊發(fā)送“從機(jī)回信數(shù)據(jù)幀”,向主機(jī)發(fā)送對(duì)應(yīng)的數(shù)字量數(shù)據(jù)。

主機(jī)發(fā)信數(shù)據(jù)幀:

地址

02

起始地址

高字節(jié)

起始地址

低字節(jié)

數(shù)據(jù)量

高字節(jié)

數(shù)據(jù)量低字節(jié)

從機(jī)回信數(shù)據(jù)幀:

地址

02

數(shù)據(jù)字節(jié)數(shù)

數(shù)據(jù)1

數(shù)據(jù)2

。。。。。。

數(shù)據(jù)n

CRC

高字節(jié)

CRC

低字節(jié)

——地址:網(wǎng)絡(luò)中的從機(jī)地址,即FCS900模塊的地址編號(hào),參見(jiàn)“一線通模塊設(shè)置”章節(jié)。

——起始地址:雙字節(jié),要讀取寄存器的起始地址,此數(shù)據(jù)要求比實(shí)際的數(shù)據(jù)地址小1;

——數(shù)據(jù)量:雙字節(jié),1~16;

——數(shù)據(jù)字節(jié)量:1~2;

——數(shù)據(jù):一線通模塊發(fā)送給主機(jī)的數(shù)據(jù),低位低寄存器地址。

——CRC:雙字節(jié)CRC校驗(yàn)碼。

        支持MODBUS功能碼02H的FCS900模塊有FCS931、FCS941、FCS942、FCS951、FCS952、FCS953和FCS954。

16之間,超過(guò)該范圍一線通模塊可能拒絕響應(yīng);

8之間,超過(guò)該范圍一線通模塊可能拒絕響應(yīng)。

輸出通道狀態(tài),可以使用02功能碼讀出。

        FCS900一線通模塊對(duì)功能碼3、4沒(méi)有區(qū)別,兩組命令都是讀取各通道模擬量采集結(jié)果,下述僅以功能碼4為例,詳述MODBUS通訊的通訊過(guò)程。通訊首先由MODBUS主機(jī)設(shè)備發(fā)送“主機(jī)發(fā)信數(shù)據(jù)幀”,指明通訊對(duì)象的從機(jī)地址(一線通模塊地址)、數(shù)據(jù)的起始寄存器地址、數(shù)據(jù)數(shù)量和本次數(shù)據(jù)幀的CRC校驗(yàn)。FCS900一線通模塊接收到“主機(jī)發(fā)信數(shù)據(jù)幀”后,判斷從機(jī)地址是否與本機(jī)地址相同以及CRC校驗(yàn)是否出錯(cuò),若地址不同或CRC出錯(cuò),F(xiàn)CS900一線通模塊不作響應(yīng);若地址相同且CRC校驗(yàn)結(jié)果正確,F(xiàn)CS900一線通模塊發(fā)送“從機(jī)回信數(shù)據(jù)幀”,向主機(jī)發(fā)送對(duì)應(yīng)的模擬量數(shù)據(jù)。

主機(jī)發(fā)信數(shù)據(jù)幀:

地址

04

起始地址

高字節(jié)

起始地址

低字節(jié)

數(shù)據(jù)量

高字節(jié)

數(shù)據(jù)量低字節(jié)

從機(jī)回信數(shù)據(jù)幀:

地址

04

數(shù)據(jù)

字節(jié)數(shù)

數(shù)據(jù)1

高字節(jié)

數(shù)據(jù)1

低字節(jié)

。。。。。。

數(shù)據(jù)n

高字節(jié)

數(shù)據(jù)n

低字節(jié)

CRC

高字節(jié)

CRC

低字節(jié)

——地址:網(wǎng)絡(luò)中的從機(jī)地址,即FCS900模塊的地址編號(hào),參見(jiàn)“一線通模塊設(shè)置”章節(jié)。

——起始地址:雙字節(jié),要讀取寄存器的起始地址,此數(shù)據(jù)要求比實(shí)際的數(shù)據(jù)地址小1;

——數(shù)據(jù)量:雙字節(jié),1~128;

——數(shù)據(jù)字節(jié)量:2~256間的偶數(shù);

——數(shù)據(jù):FCS900發(fā)送給主機(jī)的數(shù)據(jù),雙字節(jié)無(wú)符號(hào)整數(shù),高位在前,低位在后;

——CRC:雙字節(jié)CRC校驗(yàn)碼。

        支持MODBUS功能碼03H、04H的FCS900模塊有FCS911、FCS912、FCS913、FCS914、FCS915、FCS921、FCS922、FCS952、FCS953和FCS954。

16之間,超過(guò)該范圍一線通模塊可能拒絕響應(yīng)。

8之間,超過(guò)該范圍一線通模塊可能拒絕響應(yīng)。

14之間,超過(guò)該范圍一線通模塊可能拒絕響應(yīng)。

8之間,超過(guò)該范圍一線通模塊可能拒絕響應(yīng)。

        功能碼5是單一通道數(shù)字量輸出命令,通訊首先由MODBUS主機(jī)設(shè)備發(fā)送“主機(jī)發(fā)信數(shù)據(jù)幀”,指明通訊對(duì)象的從機(jī)地址(一線通模塊地址)、數(shù)據(jù)的寄存器地址、數(shù)據(jù)和本次數(shù)據(jù)幀的CRC校驗(yàn)。FCS900一線通模塊接收到“主機(jī)發(fā)信數(shù)據(jù)幀”后,判斷從機(jī)地址是否與本機(jī)地址相同以及CRC校驗(yàn)是否出錯(cuò),若地址不同或CRC出錯(cuò),F(xiàn)CS900一線通模塊不作響應(yīng);若地址相同且CRC校驗(yàn)結(jié)果正確,F(xiàn)CS900一線通模塊發(fā)送“從機(jī)回信數(shù)據(jù)幀”。

主機(jī)發(fā)信數(shù)據(jù)幀:

地址

05

數(shù)據(jù)地址

高字節(jié)

數(shù)據(jù)地址

低字節(jié)

數(shù)據(jù)

高字節(jié)

數(shù)據(jù)

低字節(jié)

從機(jī)回信數(shù)據(jù)幀(FCS941回信數(shù)據(jù)幀):

地址

05

數(shù)據(jù)地址

高字節(jié)

數(shù)據(jù)地址

低字節(jié)

數(shù)據(jù)

高字節(jié)

數(shù)據(jù)低字節(jié)

——地址:網(wǎng)絡(luò)中的從機(jī)地址,即FCS900模塊的地址編號(hào),參見(jiàn)“一線通模塊設(shè)置”章節(jié)。

——數(shù)據(jù)地址:雙字節(jié),輸出寄存器地址,此數(shù)據(jù)要求比實(shí)際的數(shù)據(jù)地址小1;

——數(shù)據(jù):雙字節(jié),數(shù)據(jù)為零時(shí),使出輸出接點(diǎn)斷開(kāi);數(shù)據(jù)非零時(shí),輸出接點(diǎn)閉合。

——CRC:雙字節(jié)CRC校驗(yàn)碼。

        支持MODBUS功能碼05H的FCS900模塊有FCS941、FCS942、FCS951、FCS953、FCS954。

16之間,超過(guò)該范圍一線通模塊可能拒絕響應(yīng)。

8之間,超過(guò)該范圍一線通模塊可能拒絕響應(yīng)。

之間,超過(guò)該范圍一線通模塊可能拒絕響應(yīng)。

16之間,超過(guò)該范圍一線通模塊可能拒絕響應(yīng)。

        功能碼6是單一通道模擬量輸出命令,通訊首先由MODBUS主機(jī)設(shè)備發(fā)送“主機(jī)發(fā)信數(shù)據(jù)幀”,指明通訊對(duì)象的從機(jī)地址(FCS900一線通模塊地址)、數(shù)據(jù)的寄存器地址、數(shù)據(jù)數(shù)值和本次數(shù)據(jù)幀的CRC校驗(yàn)。FCS900一線通模塊接收到“主機(jī)發(fā)信數(shù)據(jù)幀”后,判斷從機(jī)地址是否與本機(jī)地址相同以及CRC校驗(yàn)是否出錯(cuò),若地址不同或CRC出錯(cuò),F(xiàn)CS900一線通模塊不作響應(yīng);若地址相同且CRC校驗(yàn)結(jié)果正確,F(xiàn)CS900一線通模塊發(fā)送“從機(jī)回信數(shù)據(jù)幀”,向主機(jī)發(fā)送應(yīng)答幀。

主機(jī)發(fā)信數(shù)據(jù)幀:

地址

06

數(shù)據(jù)地址

高字節(jié)

數(shù)據(jù)地址

低字節(jié)

數(shù)據(jù)

高字節(jié)

數(shù)據(jù)

低字節(jié)

CRC

高字節(jié)

CRC

低字節(jié)

從機(jī)回信數(shù)據(jù)幀:

地址

06

數(shù)據(jù)地址

高字節(jié)

數(shù)據(jù)地址

低字節(jié)

數(shù)據(jù)

高字節(jié)

數(shù)據(jù)

低字節(jié)

CRC

高字節(jié)

CRC

低字節(jié)

——地址:網(wǎng)絡(luò)中的從機(jī)地址,即FCS900模塊的地址編號(hào),參見(jiàn)“一線通模塊設(shè)置”章節(jié)。

——數(shù)據(jù)地址:雙字節(jié),輸出寄存器地址,此數(shù)據(jù)要求比實(shí)際的數(shù)據(jù)地址小1。

——數(shù)據(jù):雙字節(jié),即模擬量輸出值。

——CRC:雙字節(jié)CRC校驗(yàn)碼。

支持MODBUS功能碼06H的FCS900模塊有FCS921、FCS922。

超過(guò)該范圍一線通模塊可能拒絕響應(yīng)。

超過(guò)該范圍一線通模塊可能拒絕響應(yīng)。

        功能碼0FH是成組數(shù)字量輸出命令,通訊首先由MODBUS主機(jī)設(shè)備發(fā)送“主機(jī)發(fā)信數(shù)據(jù)幀”,指明通訊對(duì)象的從機(jī)地址(FCS900一線通模塊地址)、數(shù)據(jù)的寄存器地址、數(shù)據(jù)數(shù)值和本次數(shù)據(jù)幀的CRC校驗(yàn)。FCS900一線通模塊接收到“主機(jī)發(fā)信數(shù)據(jù)幀”后,判斷從機(jī)地址是否與本機(jī)地址相同以及CRC校驗(yàn)是否出錯(cuò),若地址不同或CRC出錯(cuò),F(xiàn)CS900一線通模塊不作響應(yīng);若地址相同且CRC校驗(yàn)結(jié)果正確,F(xiàn)CS900一線通模塊發(fā)送“從機(jī)回信數(shù)據(jù)幀”,向主機(jī)發(fā)送應(yīng)答幀。

主機(jī)發(fā)信數(shù)據(jù)幀:

地址

0F

數(shù)據(jù)地址

雙字節(jié)

數(shù)據(jù)量

雙字節(jié)

數(shù)據(jù)

字節(jié)量

數(shù)據(jù)1

數(shù)據(jù)2

數(shù)據(jù)N

CRC

雙字節(jié)

從機(jī)回信數(shù)據(jù)幀:

地址

0F

數(shù)據(jù)地址

雙字節(jié)

數(shù)據(jù)量

雙字節(jié)

CRC

雙字節(jié)

——地址:網(wǎng)絡(luò)中的從機(jī)地址,即FCS900模塊的地址編號(hào),參見(jiàn)“一線通模塊設(shè)置”章節(jié)。

—— 數(shù)據(jù)地址:雙字節(jié),輸出寄存器地址,此數(shù)據(jù)要求比實(shí)際的數(shù)據(jù)地址小1;

——字節(jié)量:?jiǎn)巫止?jié),后面數(shù)據(jù)的字節(jié)數(shù)量。

——數(shù)據(jù):低位低寄存器地址。。

——CRC:雙字節(jié)CRC校驗(yàn)碼。

支持MODBUS功能碼05H的FCS900模塊有FCS941、FCS942、FCS951、FCS953、FCS954。

16之間,超過(guò)該范圍一線通模塊可能拒絕響應(yīng)。

8之間,超過(guò)該范圍一線通模塊可能拒絕響應(yīng)。

之間,超過(guò)該范圍一線通模塊可能拒絕響應(yīng)。

16之間,超過(guò)該范圍一線通模塊可能拒絕響應(yīng)。

        功能碼10H是成組模擬量輸出命令(AO)。通訊首先由MODBUS主機(jī)設(shè)備發(fā)送“主機(jī)發(fā)信數(shù)據(jù)幀”,指明通訊對(duì)象的從機(jī)地址(FCS900一線通模塊地址)、數(shù)據(jù)的寄存器地址、數(shù)據(jù)數(shù)值和本次數(shù)據(jù)幀的CRC校驗(yàn)。FCS900一線通模塊接收到“主機(jī)發(fā)信數(shù)據(jù)幀”后,判斷從機(jī)地址是否與本機(jī)地址相同以及CRC校驗(yàn)是否出錯(cuò),若地址不同或CRC出錯(cuò),F(xiàn)CS900一線通模塊不作響應(yīng);若地址相同且CRC校驗(yàn)結(jié)果正確,F(xiàn)CS900一線通模塊發(fā)送“從機(jī)回信數(shù)據(jù)幀”,向主機(jī)發(fā)送應(yīng)答幀。

主機(jī)發(fā)信數(shù)據(jù)幀:

地址

10

數(shù)據(jù)地址

雙字節(jié)

數(shù)據(jù)量

雙字節(jié)

字節(jié)量

數(shù)據(jù)1

雙字節(jié)

數(shù)據(jù)2

雙字節(jié)

數(shù)據(jù)N

雙字節(jié)

CRC

雙字節(jié)

從機(jī)回信數(shù)據(jù)幀:

地址

10

數(shù)據(jù)地址

雙字節(jié)

數(shù)據(jù)量

雙字節(jié)

CRC

雙字節(jié)

——地址:網(wǎng)絡(luò)中的從機(jī)地址,即FCS900模塊的地址編號(hào),參見(jiàn)“一線通模塊設(shè)置”章節(jié)。

—— 數(shù)據(jù)地址:雙字節(jié),輸出寄存器地址,此數(shù)據(jù)要求比實(shí)際的數(shù)據(jù)地址小1;

——字節(jié)量:?jiǎn)巫止?jié),后面數(shù)據(jù)的字節(jié)數(shù)量。

——數(shù)據(jù):雙字節(jié),即模擬量輸出值。

——CRC:雙字節(jié)CRC校驗(yàn)碼。

支持MODBUS功能碼10H的FCS900模塊有FCS921、FCS922。

超過(guò)該范圍一線通模塊可能拒絕響應(yīng)。

超過(guò)該范圍一線通模塊可能拒絕響應(yīng)。

自由口通訊

        與MODBUS數(shù)據(jù)格式完全相同,F(xiàn)CS900自動(dòng)識(shí)別MODBUS協(xié)議和自由口通訊協(xié)議,不需設(shè)置。

        MODBUS協(xié)議采用雙字節(jié)CRC錯(cuò)誤校驗(yàn),在自由通訊口編程時(shí)錯(cuò)誤校驗(yàn)采用雙字節(jié)累加和校驗(yàn),即將校驗(yàn)字節(jié)之前的所有單字節(jié)數(shù)據(jù)相加,所得雙字節(jié)結(jié)果即是累加和校驗(yàn)。注意:累加時(shí)保留進(jìn)位位。

MODBUS通訊協(xié)議命令與自由口通訊命令對(duì)照:

MODBUS命令碼

自由口命令碼

功能描述

02H

C2H

03H

C3H

04H

C4H

05H

C5H

06H

C6H

0FH

CFH

10H

D0H

主機(jī)發(fā)信數(shù)據(jù)幀:

地址

C2

起始地址

高字節(jié)

起始地址

低字節(jié)

數(shù)據(jù)量

高字節(jié)

數(shù)據(jù)量低字節(jié)

從機(jī)回信數(shù)據(jù)幀:

地址

C2

數(shù)據(jù)字節(jié)數(shù)

數(shù)據(jù)1

數(shù)據(jù)2

。。。。。。

數(shù)據(jù)n

        通過(guò)自由口編程,上位機(jī)讀取#2地址FCS911模塊的1~3通道的模擬量采集數(shù)據(jù),采用C4H功能碼,上位機(jī)按照下述組織數(shù)據(jù):

地址=02H;

命令嗎=C4H;

數(shù)據(jù)地址H=00H;

數(shù)據(jù)地址L=00H;(比實(shí)際地址小1)。

數(shù)據(jù)量H=00H;

數(shù)據(jù)量L=03H;

累加和H=00H;

累加和L=C9H;(累加和:02H+C4H+00H+00H+00H+03H=00C9H)。

        按上述數(shù)據(jù),上位機(jī)發(fā)送數(shù)據(jù)幀02H、C4H、00H、00H、00H、03H、00H、C9H,#2模塊FCS911接收到命令并驗(yàn)證無(wú)誤后,發(fā)送下面的回信數(shù)據(jù)幀。(假設(shè)1~3通道的采集數(shù)據(jù)分別為139、240、360。)

回信數(shù)據(jù)幀:02H、C4H、06H、00H、8BH、00H、F0H、01H、68H、02H、B0H。

地址=02H;

命令嗎=C4H;

數(shù)據(jù)字節(jié)=06H;

數(shù)據(jù)1H=00H;

數(shù)據(jù)1L=8BH;(139)

數(shù)據(jù)2H=00H;

數(shù)據(jù)2L=F0H;(240)

數(shù)據(jù)3H=01H;

數(shù)據(jù)3L=68H;(360)

累加和H=02H;

累加和L=B0H;(累加和:02H+84H+06H+00H+8BH+00H+F0H+01H+68H=02B0H)。

其他命令格式類似。

 

 

(轉(zhuǎn)載)

標(biāo)簽:MODBUS 通訊協(xié)議 我要反饋 
2024世界人工智能大會(huì)專題
即刻點(diǎn)擊并下載ABB資料,好禮贏不停~
優(yōu)傲機(jī)器人下載中心
西克
2024全景工博會(huì)
專題報(bào)道