當(dāng)前位置:機(jī)電之家首頁(yè) >> PLC技術(shù)>> plc應(yīng)用 >> ab plc應(yīng)用 >> 編程遠(yuǎn)程讀取AB PLC的數(shù)據(jù)
編程遠(yuǎn)程讀取AB PLC的數(shù)據(jù)

AB公司開發(fā)的RSbbbb是讀取遠(yuǎn)程AB PLC數(shù)據(jù)的上佳工具,它能實(shí)現(xiàn)讀取AB PLC的名種要求。但在實(shí)際的系統(tǒng)集成中,由于遠(yuǎn)程PLC的類型多種多樣,于是,我接到一個(gè)任務(wù),自主開發(fā)程序讀取各種PLC。

在我們使用的遠(yuǎn)程設(shè)備中,有AB的PLC,西門子的PLC,LG的PLC,還有多種的RTU,但都有一個(gè)共通的特點(diǎn):通過串口訪問,只是數(shù)據(jù)協(xié)議不同,找出各方的數(shù)據(jù)協(xié)議,就一切OK了。為此,我對(duì)AB PLC進(jìn)行了一番研究。

AB公司提供了軟件,它的資料就有點(diǎn)語(yǔ)焉不詳,我不得不得用串口監(jiān)聽技術(shù)進(jìn)行串口監(jiān)聽以獲取更為直觀的資料。

一、 串口的監(jiān)聽

我利用PORTMON.EXE來(lái)監(jiān)聽串口,以下是運(yùn)行RSbbbb時(shí)我監(jiān)聽到的數(shù)據(jù):

IRP_MJ_WRITE 41 54 5A 0D

IRP_MJ_READ 41 54 5A 0D

IRP_MJ_WRITE 10 02 01 00 06 00 01 08 03 10 03 01 65

IRP_MJ_READ 10 06 10 02 00 01 46 00 01 08 00 EE 34 49 64 35 2F 30 33 20

20 20 20 20 20 20 00 00 86 10 10 8D A3 10 10 FC 10 03 18 55

IRP_MJ_WRITE 10 06

IRP_MJ_WRITE 100201000F002704A1C80789001003A3F3

IRP_MJ_READ

10 06 10 02 00 01 4F 00 27 04

00 00 C7 0C CF 0C C8 0C C6 0C 88 0C EC 0C AA 0C 00 00 00 00

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

F3 FF 0D 00 0D 00 00 00 00 00 4C 04 52 03 20 04 8B 03 84 03

00 00 00 00 00 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00

00 00 00 00 02 00 00 00 00 00 00 00 1F 00 00 00 00 00 00 00

00 00 00 00 01 00 02 00 00 00 00 00 00 00 01 00 02 00 03 00

04 00 05 00 06 00 07 00 00 00 00 00 00 00 00 00 C8 00 00 00

C2 01 00 00 00 00 76 02 B6 03 00 00 00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00 00 00 CF 03 00 00 00 00 00 00 00 00

5D 00 C7 0C CF 0C C8 0C C6 0C 86 0C EC 0C AA 0C 00 00 00 00

10 03 8D D8

IRP_MJ_WRITE 10 06

由此可以看出,RSbbbb運(yùn)行時(shí)進(jìn)行三步:

1、 初始化MODEM:發(fā)送ATZ,確認(rèn)MODEM存在。

2、 查看PLC的數(shù)據(jù)結(jié)構(gòu),收到后發(fā)1006確認(rèn)

3、 查看N7的數(shù)據(jù),收到后發(fā)1006確認(rèn)

現(xiàn)在所要做的事步驟都很清楚了,下面的工作是理解發(fā)出的與返回的數(shù)據(jù)的含義。


二、 發(fā)送數(shù)據(jù)請(qǐng)求的格式

對(duì)于查詢PLC的數(shù)據(jù)結(jié)構(gòu),每次都是相同的請(qǐng)求,沒有必要去花費(fèi)時(shí)間。我們著力在讀取N7數(shù)據(jù)的處理方面:

發(fā)出的數(shù)據(jù)含義:

 

*:加*不參與CRC32運(yùn)算。

CRC32的計(jì)算方法:VB代碼如下:

 

Function CalcCRC(DATA(), Arraylen) As Long

Dim I, J, K, H As Integer

For I = 0 To Arraylen

J = J Xor DATA(I)

For K = 1 To 8

H = J Mod 2 'test if bit will be shifted out

J = Int(J / 2) 'shift right

If H Then

J = J Xor &H1000A001 'xor with constant

J = J - &H10000000 'bbbbb top word

End If

Next K

Next I

CalcCRC = J

End Function

 

 

Private Sub Command1_Click()

Dim I, J As Long

Length = (Len(Text3.Text)) / 2 - 1

ReDim Init(Length)

For I = 0 To Length

Init(I) = Val("&H" + m i* d(Text3.Text, 2 * I + 1, 2))

Next I

J = CalcCRC(Init(), Length)

Text2.Text = Hex(J Mod 256)

Text1.Text = Hex(Int(J / 256))

End Sub

 

發(fā)送這串字符將會(huì)能得到得到N7的數(shù)據(jù)返回,返回的數(shù)據(jù)以字為單位,開始字與字個(gè)數(shù)決定返回的內(nèi)容。

三、 接收到的數(shù)據(jù)

如上接收到的數(shù)據(jù),以 10 06 10 02開始,00 01 4F 00 27 04為目的址與ID號(hào),現(xiàn)再接著是返回的數(shù)據(jù),每?jī)蓚€(gè)字節(jié)是一組數(shù)據(jù):如我的PLC中的定義如下:

 

地址為字,即兩個(gè)字節(jié)。

這樣,我們可以讀取指定的區(qū)域數(shù)據(jù),并根據(jù)你在PLC中的設(shè)定分解數(shù)據(jù)你就可以通過自編的程序讀取AB PLC的數(shù)據(jù)了。

結(jié)語(yǔ)

這就是AB PLC的數(shù)據(jù)協(xié)議,由于AB 的說明書中所言不詳,而我讀取的PLC是另一個(gè)公司開發(fā)的程序,所以在數(shù)據(jù)的含義方面花費(fèi)了不少時(shí)間,而在編程方面的時(shí)間倒時(shí)不多。這次總結(jié)出來(lái)與大家共享,應(yīng)能使大家免去摸索之苦。

作者:未知 點(diǎn)擊:1148次 [打印] [關(guān)閉] [返回頂部]
本文標(biāo)簽: 編程遠(yuǎn)程讀取AB PLC的數(shù)據(jù)
* 由于無(wú)法獲得聯(lián)系方式等原因,本網(wǎng)使用的文字及圖片的作品報(bào)酬未能及時(shí)支付,在此深表歉意,請(qǐng)《 編程遠(yuǎn)程讀取AB PLC的數(shù)據(jù)》相關(guān)權(quán)利人與機(jī)電之家網(wǎng)取得聯(lián)系。
電子樣本

上海金橋電子樣冊(cè)
:洪玉蓮
:18918933859
:上海金橋高中壓閥門廠有限公司
個(gè)人求購(gòu)

沈?qū)氒?/a> 【求購(gòu)】  柴油發(fā)電機(jī)  2025-1-3
陳小冬 【求購(gòu)】  洗地機(jī)  2025-1-3
許東升 【求購(gòu)】  精軋螺紋鋼  2025-1-2
龔先生 【求購(gòu)】  激光粉塵儀  2024-12-30
帥立軍 【求購(gòu)】  儲(chǔ)能集裝箱  2024-12-27
 【求購(gòu)】  聚乙烯墊板  2024-12-27
 【求購(gòu)】  數(shù)控車床  2024-12-27
王先生 【求購(gòu)】  鋼結(jié)構(gòu)  2024-12-27
VIP公司推薦