新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 組態(tài)王與單片機(jī)協(xié)議2

組態(tài)王與單片機(jī)協(xié)議2

作者: 時(shí)間:2016-11-27 來源:網(wǎng)絡(luò) 收藏
1.通訊口設(shè)置:

通訊方式:RS-232,RS-485,RS-422均可。

本文引用地址:http://butianyuan.cn/article/201611/322100.htm

波特率:由單片機(jī)決定(2400,4800,9600and19200bps)。

字節(jié)數(shù)據(jù)格式:由單片機(jī)決定。

起始位

數(shù)據(jù)位

校驗(yàn)位

停止位

注意:在組態(tài)王中設(shè)置的通訊參數(shù)如波特率,數(shù)據(jù)位,停止位,奇偶校驗(yàn)必須與單片機(jī)編程中的通訊參數(shù)一致

2.在組態(tài)王中定義設(shè)備地址的格式

格式:##.?!?/p>

前面的兩個(gè)字符是設(shè)備地址,范圍為0-255,此地址為單片機(jī)的地址,由單片機(jī)中的程序決定 ;

后面的一個(gè)字符是用戶設(shè)定是否打包,“0”為不打包、“1”為打包,用戶一旦在定義設(shè)備時(shí)確定了打包,組態(tài)王將處理讀下位機(jī)變量時(shí)數(shù)據(jù)打包的工作。

3.在組態(tài)王中定義的寄存器格式

寄存器名稱

dd上限

dd下限

數(shù)據(jù)類型

Xdd

65535

0

FLOAT/BYTE/UINT

斜體字dd代表數(shù)據(jù)地址,此地址與單片機(jī)的數(shù)據(jù)地址相對(duì)應(yīng)。

注意:在組態(tài)王中定義變量時(shí),一個(gè)X寄存器根據(jù)所選數(shù)據(jù)類型(BYTE,UINT,FLOAT)的不同分別占用一個(gè)、兩個(gè),四個(gè)字節(jié),定義不同的數(shù)據(jù)類型要注意寄存器后面的地址,同一數(shù)據(jù)區(qū)內(nèi)不可交叉定義不同數(shù)據(jù)類型的變量。為提高通訊速度建議用戶使用連續(xù)的數(shù)據(jù)區(qū)。

例如,

1、在單片機(jī)中定義從地址0開始的數(shù)據(jù)類型為BYTE型的變量:

則在組態(tài)王中定義相應(yīng)的變量的寄存器為X0、X1、X2、X3、X4。。。。。。。。,數(shù)據(jù)類型為BYTE,每個(gè)變量占一個(gè)字節(jié)

2、在單片機(jī)中定義從地址100開始的數(shù)據(jù)類型為UINT型的變量:

則在組態(tài)王中定義相應(yīng)的變量的寄存器為X100、X102、X104、X106、X108。。。。。。。。,數(shù)據(jù)類型UINT,每個(gè)變量占兩個(gè)字節(jié)

3、在單片機(jī)中定義從地址200開始的數(shù)據(jù)類型為FLOAT型的變量:

則在組態(tài)王中定義相應(yīng)的變量的寄存器為X200、X204、X208、X212。。。。。。。,數(shù)據(jù)類型FLOAT,每個(gè)變量占四個(gè)字節(jié)

3.組態(tài)王與單片機(jī)通訊的命令格式:

讀寫格式(除字頭、字尾外所有字節(jié)均為ASCII碼)

字頭

設(shè)備地址

標(biāo)志

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

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

數(shù)據(jù)…

異或

CR

說明;

字頭:1字節(jié)1個(gè)ASCII碼,40H

設(shè)備地址: 1字節(jié)2個(gè)ASCII碼,0—255(即0---0x0ffH)

標(biāo)志:1字節(jié)2個(gè)ASCII碼,bit0~bit7,

bit0= 0:讀,bit0= 1:寫。

bit1= 0:不打包。

bit3bit2 = 00,數(shù)據(jù)類型為字節(jié)。

bit3bit2 = 01,數(shù)據(jù)類型為字。

bit3bit2 = 1x,數(shù)據(jù)類型為浮點(diǎn)數(shù)。

數(shù)據(jù)地址: 2字節(jié)4個(gè)ASCII碼,0x0000~0xffff

數(shù)據(jù)字節(jié)數(shù):1字節(jié)2個(gè)ASCII碼,1—100,實(shí)際讀寫的數(shù)據(jù)的字節(jié)數(shù)。

數(shù)據(jù)…:為實(shí)際的數(shù)據(jù)轉(zhuǎn)換為ASCII碼,個(gè)數(shù)為字節(jié)數(shù)乘2。

異或:異或從設(shè)備地址到異或字節(jié)前,異或值轉(zhuǎn)換成2個(gè)ASCII碼

CR:0x0d。

通訊嘗試恢復(fù)命令(COMERROR),請(qǐng)求地址為0的一個(gè)BYTE數(shù)據(jù)

3.1.上位機(jī)發(fā)送讀命令

字頭

設(shè)備地址

標(biāo)志

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

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

異或

CR

下位機(jī)應(yīng)答:若正常:

字頭

設(shè)備地址

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

數(shù)據(jù)…

異或

CR

若不正常:

字頭

設(shè)備地址

**

異或

CR

例1:讀15號(hào)儀表,數(shù)據(jù)地址為15的數(shù)據(jù)。其中數(shù)據(jù)為100,數(shù)據(jù)類型為字節(jié),不打包。組態(tài)王所發(fā)數(shù)據(jù)為:

40

30

46

43

30

30

30

30

46

30

31

37

32

0d

字頭

設(shè)備地址15

標(biāo)志

讀操作

字節(jié)型

不打包

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

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

異或

若正確:

40

30

46

30

31

36

34

37

35

0d

字頭

設(shè)備地址15

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

數(shù)據(jù)100

異或

若不正確:

40

30

46

2a

2a

37

36

0d

字頭

設(shè)備地址15

**

異或

例2:讀15號(hào)儀表,數(shù)據(jù)地址為15的數(shù)據(jù)。其中數(shù)據(jù)為100,數(shù)據(jù)類型為字節(jié),打包。組態(tài)王所發(fā)數(shù)據(jù)為:

40

30

46

43

32

30

30

30

46

30

31

37

30

0d

字頭

設(shè)備地址15

標(biāo)志

讀操作

字節(jié)型

打包

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

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

異或

若正確:

40

30

46

30

31

36

34

37

35

0d

字頭

設(shè)備地址15

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

數(shù)據(jù)100

異或

若不正確:

40

30

46

2a

2a

37

36

0d

設(shè)備地址15

**

異或

3.2.上位機(jī)發(fā)送寫命令

字頭

設(shè)備地址

標(biāo)志

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

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

數(shù)據(jù)…

異或

CR

下位機(jī)應(yīng)答:若正常:

字頭

設(shè)備地址

##

異或

CR

若不正常:

字頭

設(shè)備地址

**

異或

CR

例1:寫15號(hào)儀表,數(shù)據(jù)地址為15。寫數(shù)據(jù)255,數(shù)據(jù)類型為字,不打包。組態(tài)王所發(fā)數(shù)據(jù)為:

40

30

46

43

35

30

30

30

46

30

32

30

30

46

46

37

34

0d

字頭

設(shè)備地址15

標(biāo)志

寫操作

字型

不打包

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

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

數(shù)據(jù)255

異或

若正確:

40

30

46

23

23

37

36

0d

字頭

設(shè)備地址15

##

異或

若不正確:

40

30

46

2a

2a

37

36

0d

字頭

設(shè)備地址15

**

異或


上一頁 1 2 下一頁

評(píng)論


技術(shù)專區(qū)

關(guān)閉