中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

醫(yī)院網(wǎng)站開發(fā)違法嗎小程序免費制作平臺

醫(yī)院網(wǎng)站開發(fā)違法嗎,小程序免費制作平臺,做押韻句子的網(wǎng)站,重慶市建設(shè)工程造價管理協(xié)會官網(wǎng)1、介紹 對于上位機開發(fā)來說,歐姆龍PLC支持的主要的協(xié)議有Hostlink協(xié)議,FinsTcp/Udp協(xié)議,EtherNetIP協(xié)議,本項目使用Hostlink協(xié)議。 Hostlink協(xié)議是歐姆龍PLC與上位機鏈接的公開協(xié)議。上位機通過發(fā)送Hostlink命令,可…

1、介紹

?對于上位機開發(fā)來說,歐姆龍PLC支持的主要的協(xié)議有Hostlink協(xié)議,FinsTcp/Udp協(xié)議,EtherNetIP協(xié)議,本項目使用Hostlink協(xié)議。?

Hostlink協(xié)議是歐姆龍PLC與上位機鏈接的公開協(xié)議。上位機通過發(fā)送Hostlink命令,可以對PLC進(jìn)行I/O讀寫、可以對PLC進(jìn)行I/O讀寫、改變操作模式、強制置位/復(fù)位等操作。由于是公開協(xié)議,即便是非歐姆龍的上位設(shè)備(軟件),都可以通過該協(xié)議和歐姆龍PLC實現(xiàn)通信鏈接,

Hostlink通訊協(xié)議有兩種模式:C-mode和FINS

上個文章采用C-mode方式,本篇采用FINS方式

1.Cmode:專用于hostlink通訊指令,采用的是ASCII碼,適用于所有OMRON的PLC通訊。只能上位機發(fā)出指令給CPU,CPU無法主動發(fā)數(shù)據(jù)給上位機,只可以通過串口進(jìn)行通訊

2.FINS:采用的二進(jìn)制碼,適用于新開發(fā)的PLC,可用在多種網(wǎng)絡(luò)設(shè)備(Controller ?Link, ?Ethernet, ?etc),可被 CPU、IO模塊、上位機主動發(fā)出,不同的指令分別適用于不同的信息接受單元。有兩種鏈接協(xié)議:CMND和hostlink,當(dāng)上位機是做發(fā)送源時,必須采用hostlink協(xié)議,既可以通過串口通訊也可以通過各類網(wǎng)絡(luò)通訊(適應(yīng)性較強)。?

歐姆龍PLC與上位機連接時一般采用的是Hoslink協(xié)議,它是一種簡易經(jīng)濟(jì)的通訊方式,比較適合一臺上位機和一臺PLC或者多臺PLC進(jìn)行通訊。上位機可對PLC進(jìn)行程序傳送和讀寫等操作。HOSTLINK系統(tǒng)允許一臺上位機通過上位機鏈接命令向HOSTLINK系統(tǒng)的PLC發(fā)送命令,PLC處理來自上位機的每條指令,并把結(jié)果傳回上位機。

2、歐姆龍F(tuán)ins協(xié)議

歐姆龍F(tuán)INS協(xié)議:現(xiàn)代工業(yè)自動化領(lǐng)域的通信利器,歐姆龍F(tuán)INS協(xié)議,全稱為”Factory Interface Network Service",是日本歐姆龍(Omron)公司開發(fā)的一套高效的工業(yè)自動化通信協(xié)議。它作為歐姆龍工業(yè)設(shè)備之間的通信接日,被廣泛應(yīng)用于全球范圍內(nèi)的工業(yè)自動化領(lǐng)域。

支持以太網(wǎng)的歐姆龍PLC CPU、以太網(wǎng)通信模塊根據(jù)型號的不同,一般都會支持FINS(Factory Interface Network Service)協(xié)議,一些模塊也會支持EtherNet/IP協(xié)議。Fins協(xié)議封裝在TCP/UDP之上。

下圖表述了FINS會話開始幾個數(shù)據(jù)幀的作用。FINS協(xié)議的會話有一次請求幀,請求幀中附帶著發(fā)起方的節(jié)點參數(shù)。PLC端(Server端)會確認(rèn)并將自己的節(jié)點參數(shù)放回給請求方。

1、Fins協(xié)議和我們常用的ModbusTCP協(xié)議不同,首先體現(xiàn)在有握手驗證命令,就是說在正常的三次握手的基礎(chǔ)上,還需要進(jìn)行一次握手,如果能正常握手,方可通信,這樣做的目的也是為了PLC通信安全。

命令均為十六進(jìn)制 字節(jié)數(shù)據(jù)流

?2、Fins握手命令

發(fā)送報文格式:

返回報文格式:

3、Fins通信命令

Fins通信協(xié)議的整體命令如下所示

4、Fins讀取數(shù)據(jù)

Fins讀取數(shù)據(jù)的報文會在通用命令的基礎(chǔ)上,將 Parameter替換為 Area+Address+Length,因此讀取數(shù)據(jù)命令如下所示:

讀取數(shù)據(jù)返回命令如下所示:

5、Fins寫入數(shù)據(jù)

Fins寫入數(shù)據(jù)會在通用命令的基礎(chǔ)上,將 Parameter替換為 Area+Address+Length+Value,因此寫入數(shù)據(jù)命令如下所示:

寫入數(shù)據(jù)返回命令如下所示:

?3、開搞Fins協(xié)議

1、確認(rèn)環(huán)境

確認(rèn)你的cx-simulator的串口設(shè)置已經(jīng)設(shè)置好虛擬串口工具軟件的com2

?2、運行網(wǎng)絡(luò)調(diào)試工具NetAssist.exe

3、發(fā)送握手報文

首先要有握手驗證命令,就是說在正常的三次握手的基礎(chǔ)上,還需要進(jìn)行一次握手,如果能正常握手,方可通信,這樣做的目的也是為了PLC通信安全。

?發(fā)送:46 49 4E 53 00 00 00 0C 00 00 00 00 00 00 00 00 00 00 00 04
?接收:46 49 4E 53 00 00 00 10 00 00 00 01 00 00 00 00 00 00 00 04 00 00 00 0A

發(fā)送報文格式:

1)發(fā)送報文分析:

發(fā)送:46 49 4E 53 00 00 00 0C 00 00 00 00 00 00 00 00 00 00 00 04
接收:46 49 4E 53 00 00 00 10 00 00 00 01 00 00 00 00 00 00 00 04 00 00 00 0A

46494E53:轉(zhuǎn)換成ASCII編碼就是FINS;

0000000C:指后面跟的字節(jié)長度;12個字節(jié),不包括自己的字節(jié)長度,也就是后面的?000000000000000000000004,它有12個字節(jié)

00000000:固定命令;

00000000:錯誤代碼;

00000004:PC節(jié)點IP,當(dāng)設(shè)置為0時,會自動獲取節(jié)點IP

當(dāng)前我的機器IP地址是:

格式中的clientnode就是指PC的IP地址中的最后一位,也就是4,轉(zhuǎn)換成16進(jìn)制就是4,它占4個字節(jié),所以是?00000004,每2位算一個字節(jié)。其實這個地址寫什么都可以,PLC并不會去校驗客戶端的IP地址,只是一個表示占位格式而已。

發(fā)送報文共占20個字節(jié)。

2)接收報文分析如下:

報文格式:

?發(fā)送:46 49 4E 53 00 00 00 0C 00 00 00 00 00 00 00 00 00 00 00 04
?接收:46 49 4E 53 00 00 00 10 00 00 00 01 00 00 00 00 00 00 00 04 00 00 00 0A

46494E53:ASCII編碼就是FINS;

00000010:指后面跟的字節(jié)長度;16個字節(jié),不包括自己的長度

00000001:固定命令;

00000000:錯誤代碼;

00000004:本機電腦節(jié)點IP;

0000000A:PLC節(jié)點IP

servernode就是PLC的IP地址的最后一位,其實clientnode和servernode寫什么都可以,也只是表示一個占位。

接收報文共24個字節(jié),比發(fā)送多了servernode(4個字節(jié))

4、讀取和寫入CIO區(qū)的2進(jìn)制數(shù)據(jù)

??設(shè)置CIO0.0到0.5的6個數(shù)據(jù),分別是111101

?1、讀取指令,讀取CIO區(qū)0.0開始的6個bool數(shù)據(jù)

發(fā)送:46 49 4E 53 00 00 00 1A 00 00 00 02 00 00 00 00 80 00 02 00 0A 00 00 04 00 00 01 01 30 00 00 00 00 06?
接收:46 49 4E 53 00 00 00 1C 00 00 00 02 00 00 00 00 C0 00 02 00 0A 00 00 04 00 00 01 01 00 00 01 01 01 01 00 01? ?

1)發(fā)送:46 49 4E 53 00 00 00 1A 00 00 00 02 00 00 00 00 80 00 02 00 0A 00 00 04 00 00 01 01 30 00 00 00 00 06?

發(fā)送報文格式

發(fā)送報文分析如下:

46 49 4E 53 00 00 00 1A 00 00 00 02 00 00 00 00 80 00 02 00 0A 00 00 04 00 00 01 01 30 00 00 00 00 06

46494E53:ASCII編碼:FINS;

0000001A:指后面跟的字節(jié)長度;26個字節(jié),不包括自己的長度

00000002:固定命令;

00000000:錯誤代碼,00000000表示沒有錯誤

80:ICF,固定值0x80;

00:RSV,固定值;

02:GCT,固定值;

00:PLC網(wǎng)絡(luò)地址;

0A:PLC節(jié)點地址,PLC的IP地址最后一位

00:PLC單元地址;

00:PC網(wǎng)絡(luò)地址;

04:PC節(jié)點地址,客戶端IP地址最后一位

00:PC單元地址;

00:SID,固定值;

0101:讀指令;

30:讀地址區(qū)(D位:02,D字:82,W位:31,C位:30,W字:B1,C字:B0);

000000:起始地址,占3個字節(jié)

0006:讀個數(shù),占2個字節(jié)

--------------------------------------------------------------------------------------------------------------------------------

2)接收:46 49 4E 53 00 00 00 1C 00 00 00 02 00 00 00 00 C0 00 02 00 0A 00 00 04 00 00 01 01 00 00 01 01 01 01 00 01

接收報文格式

接收報文分析如下:

46 49 4E 53 00 00 00 1C 00 00 00 02 00 00 00 00 C0 00 02 00 0A 00 00 04 00 00 01 01 00 00 01 01 01 01 00 01

46494E53:ASCII編碼:FINS;

0000001C:指后面跟的字節(jié)長度,1C轉(zhuǎn)換成10進(jìn)制就是28,就是指后面的字節(jié)長度是28個(56個字符,每2個字符為1個字節(jié))

00000002:固定命令;

00000000:錯誤代碼,全是0表示沒有錯誤;

C0:ICF,固定值;

00:RSV,固定值;

02:GCT,固定值;

00:PLC網(wǎng)絡(luò)地址;

0A:PLC節(jié)點地址;

00:PLC單元地址;

00:PC網(wǎng)絡(luò)地址;

04:PC節(jié)點地址;

00:PC單元地址;

00:SID;

0101:讀指令;

0000:讀取成功標(biāo)識;

01 01 01 01 00 01:讀到的數(shù)據(jù),這是2進(jìn)制的數(shù)據(jù),也就是C#中的bool類型,表示true,true,true,true,false,true,與內(nèi)存存儲區(qū)的數(shù)據(jù)一致。

2、寫入指令,寫入CIO區(qū)0.0開始的6個bool數(shù)據(jù)true, true, false, false, true,true

發(fā)送:46 49 4E 53 00 00 00 20 00 00 00 02 00 00 00 00 80 00 02 00 0A 00 00 04 00 00 01 02 30 00 00 00 00 06 01 01 00 00 01 01?
接收:46 49 4E 53 00 00 00 16 00 00 00 02 00 00 00 00 C0 00 02 00 0A 00 00 04 00 00 01 02 00 00

1)發(fā)送報文分析如下:

寫入命令格式:

發(fā)送:46 49 4E 53 00 00 00 20 00 00 00 02 00 00 00 00 80 00 02 00 0A 00 00 04 00 00 01 02 30 00 00 00 00 06 01 01 00 00 01 01?

46494E53:ASCII編碼:FINS;

00000020:指后面跟的字節(jié)長度,20轉(zhuǎn)換成10進(jìn)制就是32,表示后面有32個字節(jié)(64個字符);

00000002:固定命令;

00000000:錯誤代碼,全0表示沒有錯誤;

80:ICF,固定值;

00:RSV,固定值;

02:GCT,固定值;

00:PLC網(wǎng)絡(luò)地址;

0A:PLC節(jié)點地址;

00:PLC單元地址;

00:PC網(wǎng)絡(luò)地址;

04:PC節(jié)點地址;

00:PC單元地址;

00:SID;

0102:寫指令;

30:寫地址區(qū)(D位:02,D字:82,W位:31,C位:30,W字:B1,C字:B0);

000000:起始地址,即0.0開始的地址

0006:寫入個數(shù),占2個字節(jié)

01 01 00 00 01 01?:寫入數(shù)據(jù),具體來說表示true, true, false, false, true,true

2)接收報文分析如下:

返回命令如下

46 49 4E 53 00 00 00 16 00 00 00 02 00 00 00 00 C0 00 02 00 0A 00 00 04 00 00 01 02 00 00

46494E53:ASCII編碼:FINS;

00000016:指后面跟的字節(jié)長度,表示后面的字節(jié)有22個字節(jié)

00000002:固定命令;

00000000:錯誤代碼;

C0:ICF;

00:RSV;

02:GCT;

00:PLC網(wǎng)絡(luò)地址;

0A:PLC節(jié)點地址;

00:PLC單元地址;

00:PC網(wǎng)絡(luò)地址;

04:PC節(jié)點地址;

00:PC單元地址;

00:SID;

0102:寫指令;

0000:寫入成功標(biāo)識,也就是說寫入成功啦,沒有錯誤。

以上讀取或?qū)懭朊钪岸急仨毾劝l(fā)送握手報文命令,而且只能發(fā)一次握手報文

5、讀取和寫入D區(qū)的ushort類型數(shù)據(jù)

首先設(shè)置內(nèi)存區(qū)D區(qū)100的4個數(shù)據(jù),注意D區(qū)設(shè)置的數(shù)據(jù)類型為10進(jìn)制無符號的整數(shù),對應(yīng)C#中就是ushort類型。

1、讀取D區(qū)100開始的4個數(shù)據(jù)

發(fā)送:46 49 4E 53 00 00 00 1A 00 00 00 02 00 00 00 00 80 00 02 00 0A 00 00 04 00 00 01 01 82 00 64 00 00 04
接收:46 49 4E 53 00 00 00 1E 00 00 00 02 00 00 00 00 C0 00 02 00 0A 00 00 04 00 00 01 01 00 00 00 7B 00 87 00 92 03 84

1)發(fā)送報文分析如下:

46 49 4E 53 00 00 00 1A 00 00 00 02 00 00 00 00 80 00 02 00 0A 00 00 04 00 00 01 01 82 00 64 00 00 04

46494E53:ASCII編碼:FINS;

0000001A:指后面跟的字節(jié)長度;26個字節(jié),不包括自己的長度

00000002:固定命令;

00000000:錯誤代碼,表示沒有錯誤

80:ICF;

00:RSV;

02:GCT;

00:PLC網(wǎng)絡(luò)地址;

0A:PLC節(jié)點地址,PLC的IP地址最后一位

00:PLC單元地址;

00:PC網(wǎng)絡(luò)地址;

04:PC節(jié)點地址,客戶端IP地址最后一位

00:PC單元地址;

00:SID;

0101:讀指令;

82:讀地址區(qū)(D位:02,D字:82,W位:31,C位:30,W字:B1,C字:B0);

006400:起始地址,100轉(zhuǎn)成16進(jìn)制就是64,占3個字節(jié),就是006400

0004:讀取的個數(shù),占2個字節(jié)

2)接收報文分析如下:

46 49 4E 53 00 00 00 1E 00 00 00 02 00 00 00 00 C0 00 02 00 0A 00 00 04 00 00 01 01 00 00 00 7B 00 87 00 92 03 84

46494E53:ASCII編碼:FINS;

0000001E:指后面跟的字節(jié)度?

00000002:固定命令;

00000000:錯誤代碼,全是0表示沒有錯誤;

C0:ICF,固定值;

00:RSV,固定值;

02:GCT,固定值;

00:PLC網(wǎng)絡(luò)地址;

0A:PLC節(jié)點地址;

00:PLC單元地址;

00:PC網(wǎng)絡(luò)地址;

04:PC節(jié)點地址;

00:PC單元地址;

00:SID;

0101:讀指令;

0000:讀取成功標(biāo)識;

00 7B 00 87 00 92 03 84:讀到的數(shù)據(jù),00 7B轉(zhuǎn)換成10進(jìn)制就是123。00 87就是135,00 92就是146,03 84就是900

這里注意10進(jìn)制的無符號整數(shù)占2個字節(jié),也就是PLC中的一個寄存器,PLC中的word,占一個寄存器,在C#占2個字節(jié),用來表示整數(shù)(不用帶小數(shù))

2、向D區(qū)30的地址寫入4個ushort數(shù)據(jù)110, 120, 130, 140

發(fā)送:46 49 4E 53 00 00 00 22 00 00 00 02 00 00 00 00 80 00 02 00 0A 00 00 04 00 00 01 02 82 00 1E 00 00 04 00 6E 00 78 00 82 00 8C?
接收:46 49 4E 53 00 00 00 16 00 00 00 02 00 00 00 00 C0 00 02 00 0A 00 00 04 00 00 01 02 00 00

寫入成功

發(fā)送報文分析

46 49 4E 53 00 00 00 22 00 00 00 02 00 00 00 00 80 00 02 00 0A 00 00 04 00 00 01 02 82 00 1E 00 00 04 00 6E 00 78 00 82 00 8C?

46494E53:ASCII編碼:FINS;

00000022:指后面跟的字節(jié)長度 ;

00000002:固定命令;

00000000:錯誤代碼,全0表示沒有錯誤;

80:ICF,固定值;

00:RSV,固定值;

02:GCT,固定值;

00:PLC網(wǎng)絡(luò)地址;

0A:PLC節(jié)點地址;

00:PLC單元地址;

00:PC網(wǎng)絡(luò)地址;

04:PC節(jié)點地址;

00:PC單元地址;

00:SID;

0102:寫指令;

82:寫地址區(qū)(D位:02,D字:82,W位:31,C位:30,W字:B1,C字:B0);

001E00:起始地址,即0.0開始的地址

0004:寫入個數(shù),占2個字節(jié)

00 6E 00 78 00 82 00 8C:寫入數(shù)據(jù),具體來說表示00 6E=》110, 00 78=》120, 00 82=》130, 00 8C=》140


接收報文分析

46 49 4E 53 00 00 00 16 00 00 00 02 00 00 00 00 C0 00 02 00 0A 00 00 04 00 00 01 02 00 00

46494E53:ASCII編碼:FINS;

00000016:指后面跟的字節(jié)長度,表示后面的字節(jié)有22個字節(jié)

00000002:固定命令;

00000000:錯誤代碼;

C0:ICF;

00:RSV;

02:GCT;

00:PLC網(wǎng)絡(luò)地址;

0A:PLC節(jié)點地址;

00:PLC單元地址;

00:PC網(wǎng)絡(luò)地址;

04:PC節(jié)點地址;

00:PC單元地址;

00:SID;

0102:寫指令;

0000:寫入成功標(biāo)識,也就是說寫入成功啦,沒有錯誤。

以上讀取或?qū)懭朊钪岸急仨毾劝l(fā)送握手報文命令,而且只能發(fā)一次握手報文

6、讀取和寫入H區(qū)的short類型數(shù)據(jù)

?設(shè)置H區(qū)的4個數(shù)據(jù)

1、讀取H區(qū)100開始的4個short類型的數(shù)據(jù)

發(fā)送:46 49 4E 53 00 00 00 1A 00 00 00 02 00 00 00 00 80 00 02 00 0A 00 00 04 00 00 01 01 B2 00 64 00 00 04
接收:46 49 4E 53 00 00 00 1E 00 00 00 02 00 00 00 00 C0 00 02 00 0A 00 00 04 00 00 01 01 00 00 00 6E 00 6F FF 90 FF 8F?

1)發(fā)送報文分析如下:

46 49 4E 53 00 00 00 1A 00 00 00 02 00 00 00 00 80 00 02 00 0A 00 00 04 00 00 01 01 B2 00 64 00 00 04

46494E53:ASCII編碼:FINS;

0000001A:指后面跟的字節(jié)長度;26個字節(jié),不包括自己的長度

00000002:固定命令;

00000000:錯誤代碼,表示沒有錯誤

80:ICF;

00:RSV;

02:GCT;

00:PLC網(wǎng)絡(luò)地址;

0A:PLC節(jié)點地址,PLC的IP地址最后一位

00:PLC單元地址;

00:PC網(wǎng)絡(luò)地址;

04:PC節(jié)點地址,客戶端IP地址最后一位

00:PC單元地址;

00:SID;

0101:讀指令;

B2:讀地址區(qū)(D位:02,D字:82,W位:31,C位:30,W字:B1,C字:B0,H字:B2);

006400:起始地址,100轉(zhuǎn)成16進(jìn)制就是64,占3個字節(jié),就是006400

0004:讀取的個數(shù),占2個字節(jié)

2)接收報文分析如下:

46 49 4E 53 00 00 00 1E 00 00 00 02 00 00 00 00 C0 00 02 00 0A 00 00 04 00 00 01 01 00 00 00 6E 00 6F FF 90 FF 8F

46494E53:ASCII編碼:FINS;

0000001E:指后面跟的字節(jié)度?

00000002:固定命令;

00000000:錯誤代碼,全是0表示沒有錯誤;

C0:ICF,固定值;

00:RSV,固定值;

02:GCT,固定值;

00:PLC網(wǎng)絡(luò)地址;

0A:PLC節(jié)點地址;

00:PLC單元地址;

00:PC網(wǎng)絡(luò)地址;

04:PC節(jié)點地址;

00:PC單元地址;

00:SID;

0101:讀指令;

0000:讀取成功標(biāo)識;

00 6E 00 6F FF 90 FF 8F:讀到的數(shù)據(jù),00 6E轉(zhuǎn)換成10進(jìn)制就是110。00 6F就是111,FF 90就是65424,FF 8F就是65423,這里要將65424-65536=-112,同樣65423-65536=-113,short的表示范圍是 -32,768 到 32,767,表示有符號 16 位整數(shù),ushort:代表有符號的16位整數(shù),范圍從0 到 65,535,這就也說明了,我們需要對返回的數(shù)據(jù)進(jìn)行有效的處理,這個留著在后面的通訊庫封裝代碼中去處理。

?

?2、向H區(qū)30的地址寫入4個short數(shù)據(jù),分別是-98,654,-800,327

發(fā)送:46 49 4E 53 00 00 00 22 00 00 00 02 00 00 00 00 80 00 02 00 0A 00 00 04 00 00 01 02 B2 00 1E 00 00 04 FF 9E 02 8E FC E0 01 47?
接收:46 49 4E 53 00 00 00 16 00 00 00 02 00 00 00 00 C0 00 02 00 0A 00 00 04 00 00 01 02 00 00

發(fā)送報文分析

46 49 4E 53 00 00 00 22 00 00 00 02 00 00 00 00 80 00 02 00 0A 00 00 04 00 00 01 02 B2 00 1E 00 00 04 FF 9E 02 8E FC E0 01 47??

46494E53:ASCII編碼:FINS;

00000022:指后面跟的字節(jié)長度 ;

00000002:固定命令;

00000000:錯誤代碼,全0表示沒有錯誤;

80:ICF,固定值;

00:RSV,固定值;

02:GCT,固定值;

00:PLC網(wǎng)絡(luò)地址;

0A:PLC節(jié)點地址;

00:PLC單元地址;

00:PC網(wǎng)絡(luò)地址;

04:PC節(jié)點地址;

00:PC單元地址;

00:SID;

0102:寫指令;

82:寫地址區(qū)(D位:02,D字:82,W位:31,C位:30,W字:B1,C字:B0);

001E00:起始地址,即0.0開始的地址

0004:寫入個數(shù),占2個字節(jié)

FF 9E 02 8E FC E0 01 47:寫入數(shù)據(jù),具體來說表示FF 9E=》-98, 02 8E=》654,FC E0 =》-800,01 47=》327

同樣的可以看到寫入的負(fù)數(shù),前面的第一個是F,這是因為負(fù)數(shù)用補碼表示。


接收報文分析

46 49 4E 53 00 00 00 16 00 00 00 02 00 00 00 00 C0 00 02 00 0A 00 00 04 00 00 01 02 00 00

46494E53:ASCII編碼:FINS;

00000016:指后面跟的字節(jié)長度,表示后面的字節(jié)有22個字節(jié)

00000002:固定命令;

00000000:錯誤代碼;

C0:ICF;

00:RSV;

02:GCT;

00:PLC網(wǎng)絡(luò)地址;

0A:PLC節(jié)點地址;

00:PLC單元地址;

00:PC網(wǎng)絡(luò)地址;

04:PC節(jié)點地址;

00:PC單元地址;

00:SID;

0102:寫指令;

0000:寫入成功標(biāo)識,也就是說寫入成功啦,沒有錯誤。

以上讀取或?qū)懭朊钪岸急仨毾劝l(fā)送握手報文命令,而且只能發(fā)一次握手報文

7、讀取和寫入W區(qū)的float類型數(shù)據(jù)

float類型的數(shù)據(jù)是包括正負(fù)整數(shù)和正負(fù)小數(shù),如40,-98,2.34,-89.53

設(shè)置W區(qū)的5個數(shù)據(jù)

1、讀取W區(qū)100開始的5個float數(shù)據(jù)

發(fā)送:46 49 4E 53 00 00 00 1A 00 00 00 02 00 00 00 00 80 00 02 00 0A 00 00 04 00 00 01 01 B1 00 64 00 00 0A
接收:46 49 4E 53 00 00 00 2A 00 00 00 02 00 00 00 00 C0 00 02 00 0A 00 00 04 00 00 01 01 00 00 47 AE 3F 81 8F 5C BF 82 00 00 42 F6 00 00 C4 75 C0 00 44 02

1)發(fā)送報文分析如下:
46 49 4E 53 00 00 00 1A 00 00 00 02 00 00 00 00 80 00 02 00 0A 00 00 04 00 00 01 01 B1 00 64 00 00 0A
46494E53:ASCII編碼:FINS;
0000001A:指后面跟的字節(jié)長度;26個字節(jié),不包括自己的長度
00000002:固定命令;
00000000:錯誤代碼,表示沒有錯誤
80:ICF;
00:RSV;
02:GCT;
00:PLC網(wǎng)絡(luò)地址;
0A:PLC節(jié)點地址,PLC的IP地址最后一位
00:PLC單元地址;
00:PC網(wǎng)絡(luò)地址;
04:PC節(jié)點地址,客戶端IP地址最后一位
00:PC單元地址;
00:SID;
0101:讀指令;
B1:讀地址區(qū)(D位:02,D字:82,W位:31,C位:30,W字:B1,C字:B0,H字:B2);
006400:起始地址,100轉(zhuǎn)成16進(jìn)制就是64,占3個字節(jié),就是006400
000A:讀取的個數(shù),占2個字節(jié),這里為什么是A,即10個,因為一個float類型是占2個寄存器的,那么5個float就是10個寄存器,所以是A,需要注意這個不同的地方。

2)接收報文分析如下:
46 49 4E 53 00 00 00 2A 00 00 00 02 00 00 00 00 C0 00 02 00 0A 00 00 04 00 00 01 01 00 00 47 AE 3F 81 8F 5C BF 82 00 00 42 F6 00 00 C4 75 C0 00 44 02
46494E53:ASCII編碼:FINS;
0000001E:指后面跟的字節(jié)度?
00000002:固定命令;
00000000:錯誤代碼,全是0表示沒有錯誤;
C0:ICF,固定值;
00:RSV,固定值;
02:GCT,固定值;
00:PLC網(wǎng)絡(luò)地址;
0A:PLC節(jié)點地址;
00:PLC單元地址;
00:PC網(wǎng)絡(luò)地址;
04:PC節(jié)點地址;
00:PC單元地址;
00:SID;
0101:讀指令;
0000:讀取成功標(biāo)識;
47 AE 3F 81 8F 5C BF 82 00 00 42 F6 00 00 C4 75 C0 00 44 02:讀到的數(shù)據(jù),47 AE 3F 81是第一個數(shù)據(jù),?8F 5C BF 82是第二個數(shù)據(jù),00 00 42 F6是第三個數(shù)據(jù),00 00 C4 75是第四個數(shù)據(jù),C0 00 44 02是第五個數(shù)據(jù),這里為什么是這樣的數(shù)據(jù),如果轉(zhuǎn)成10進(jìn)制都不是當(dāng)初設(shè)置的1.01,-1.02,123,-980,523,這是因為存在大小端,字節(jié)序的問題,這需要在程序后端進(jìn)行處理,這里返回的數(shù)據(jù)是沒有問題的,等后面在我的封裝通訊庫的進(jìn)行處理,保證響當(dāng)當(dāng)?shù)臎]有問題。

2、向W區(qū)30的地址寫入5個數(shù)據(jù)120, -130, -140,15.6f,-89.4f

發(fā)送:46 49 4E 53 00 00 00 2E 00 00 00 02 00 00 00 00 80 00 02 00 0A 00 00 04 00 00 01 02 B1 00 1E 00 00 0A 00 00 42 F0 00 00 C3 02 00 00 C3 0C 99 9A 41 79 CC CD C2 B2
接收:46 49 4E 53 00 00 00 16 00 00 00 02 00 00 00 00 C0 00 02 00 0A 00 00 04 00 00 01 02 00 00

發(fā)送報文分析
46 49 4E 53 00 00 00 2E 00 00 00 02 00 00 00 00 80 00 02 00 0A 00 00 04 00 00 01 02 B1 00 1E 00 00 0A 00 00 42 F0 00 00 C3 02 00 00 C3 0C 99 9A 41 79 CC CD C2 B2??

46494E53:ASCII編碼:FINS;
0000002E:指后面跟的字節(jié)長度 ;
00000002:固定命令;
00000000:錯誤代碼,全0表示沒有錯誤;
80:ICF,固定值;
00:RSV,固定值;
02:GCT,固定值;
00:PLC網(wǎng)絡(luò)地址;
0A:PLC節(jié)點地址;
00:PLC單元地址;
00:PC網(wǎng)絡(luò)地址;
04:PC節(jié)點地址;
00:PC單元地址;
00:SID;
0102:寫指令;
B1:寫地址區(qū)(D位:02,D字:82,W位:31,C位:30,W字:B1,C字:B0);
001E00:起始地址,?
000A:寫入個數(shù),占2個字節(jié),要寫入5個float的,每個float占2個寄存器,5個就是10個寄存器,所以是A;
00 00 42 F0 00 00 C3 02 00 00 C3 0C 99 9A 41 79 CC CD C2 B2:寫入數(shù)據(jù),具體來說00 00 42 F0是第一個,?00 00 C3 02是第二個, 00 00 C3 0C是第三個, 99 9A 41 79是第四個, CC CD C2 B2是第五個。但這5個數(shù)據(jù)都不是120, -130, -140,15.6f,-89.4f轉(zhuǎn)換成16進(jìn)制的表示,這也是因為存在大小端,字節(jié)序的問題,在后面的通訊庫封裝中來處理,發(fā)送的報文指令絕對沒有錯。
?

接收報文分析
46 49 4E 53 00 00 00 16 00 00 00 02 00 00 00 00 C0 00 02 00 0A 00 00 04 00 00 01 02 00 00

ASCII編碼:FINS;
00000016:指后面跟的字節(jié)長度,表示后面的字節(jié)有22個字節(jié)
00000002:固定命令;
00000000:錯誤代碼;
C0:ICF;
00:RSV;
02:GCT;
00:PLC網(wǎng)絡(luò)地址;
0A:PLC節(jié)點地址;
00:PLC單元地址;
00:PC網(wǎng)絡(luò)地址;
04:PC節(jié)點地址;
00:PC單元地址;
00:SID;
0102:寫指令;
0000:寫入成功標(biāo)識,也就是說寫入成功啦,沒有錯誤。
以上讀取或?qū)懭朊钪岸急仨毾劝l(fā)送握手報文命令,而且只能發(fā)一次握手報文

4、小結(jié)

這節(jié),我們讀取和寫入了CIO區(qū),D區(qū),H區(qū),W區(qū)的二進(jìn)制數(shù)據(jù),ushort數(shù)據(jù),short數(shù)據(jù),float數(shù)據(jù),充分熟悉了fins指令的格式要求,都有固定的格式。

? FINS協(xié)議是一種基于TCP/IP網(wǎng)絡(luò)通信的實時通信協(xié)議.能夠?qū)崿F(xiàn)歐姆龍工業(yè)設(shè)備之間的數(shù)據(jù)交換和控制指令傳輸。它采用了客戶端/服務(wù)器模型,客戶端發(fā)送請求,服務(wù)器返回響應(yīng),通過建立連接、傳輸數(shù)據(jù)包來實現(xiàn)設(shè)備之間的通信。
? FINS協(xié)議的核心是消息和指令的傳輸。消息格式包括消息頭、命令和數(shù)據(jù)區(qū)。消息頭定義了消息的類型、長度和地址等信息。命令部分包含了具體的指令內(nèi)容,如讀取數(shù)據(jù)、寫入數(shù)據(jù)或執(zhí)行其他操作。數(shù)據(jù)區(qū)則是存儲實際的數(shù)據(jù)信息。

注意幾點:

1)讀取命令0101,寫入命令0102,固定的,不能改

2)存儲區(qū)代號:(D位:02,D字:82,W位:31,C位:30,W字:B1,C字:B0,H字:B2),固定的不能改

3)協(xié)議頭部:46 49 4E 53,轉(zhuǎn)換成ascii碼就是fins

碼字不易,截圖不易,寫作不易,共享不易,請多多點贊支持。



?

http://www.risenshineclean.com/news/58099.html

相關(guān)文章:

  • php手機網(wǎng)站開發(fā)龍崗seo網(wǎng)絡(luò)推廣
  • 九江疫情最新情況seo關(guān)鍵詞優(yōu)化系統(tǒng)
  • 手機端訪問 php網(wǎng)站成都專業(yè)的整站優(yōu)化
  • 深圳一百訊網(wǎng)站建設(shè)山東百度推廣總代理
  • 洞口網(wǎng)站開發(fā)公司系統(tǒng)優(yōu)化大師官方下載
  • java開源代碼網(wǎng)站seo優(yōu)
  • 做商城類的網(wǎng)站需要做些什么線下推廣渠道有哪些方式
  • 萊蕪在線論壇萊蕪話題王作泉抖音seo關(guān)鍵詞優(yōu)化
  • 網(wǎng)站開發(fā)api和微端互聯(lián)網(wǎng)營銷師培訓(xùn)教程
  • 主題營銷活動創(chuàng)意網(wǎng)站收錄優(yōu)化
  • 電子商務(wù)網(wǎng)站建設(shè)也管理高端網(wǎng)站建設(shè)企業(yè)
  • 云南網(wǎng)站建設(shè)網(wǎng)絡(luò)推廣合作協(xié)議范本
  • 國內(nèi)做的較好的網(wǎng)站制作網(wǎng)站公司
  • 西安專業(yè)做網(wǎng)站大概需要多少錢
  • 企健網(wǎng)網(wǎng)址搜索引擎優(yōu)化的簡稱
  • 長沙營銷型網(wǎng)站建設(shè)如何營銷推廣
  • 梅河口城鄉(xiāng)建設(shè)網(wǎng)站seo蜘蛛屯
  • 專業(yè)網(wǎng)站開發(fā)服務(wù)線上推廣宣傳方式有哪些
  • 做3d動畫網(wǎng)站seo的主要工作是什么
  • 做二手房又做網(wǎng)站的如何制作一個網(wǎng)頁
  • 正規(guī)網(wǎng)站模板設(shè)計百度指數(shù)數(shù)據(jù)分析
  • wordpress 快訊功能seo免費自學(xué)的網(wǎng)站
  • 膠州建設(shè)信息網(wǎng)站百度搜索app免費下載
  • 龍巖紀(jì)檢委網(wǎng)站中國制造網(wǎng)網(wǎng)站類型
  • 網(wǎng)站的域名分為哪些網(wǎng)頁在線生成
  • 網(wǎng)站上傳后優(yōu)化大師apk
  • 溫州網(wǎng)站建設(shè)風(fēng)格網(wǎng)絡(luò)熱詞英語
  • 鄉(xiāng)鎮(zhèn)政府網(wǎng)站建設(shè)自查報告培訓(xùn)心得體會范文大全1000字
  • 移動網(wǎng)站是什么意思百度廣告聯(lián)盟一個月能賺多少
  • 網(wǎng)站建設(shè)費用包括哪些內(nèi)容優(yōu)化落實新十條措施