當前位置:機電之家首頁 >> PLC技術>> plc應用 >> ab plc應用 >> 編程遠程讀取AB PLC的數(shù)據(jù)
編程遠程讀取AB PLC的數(shù)據(jù)

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

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

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

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

我利用PORTMON.EXE來監(jiān)聽串口,以下是運行RSbbbb時我監(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運行時進行三步:

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

2、 查看PLC的數(shù)據(jù)結構,收到后發(fā)1006確認

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

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


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

對于查詢PLC的數(shù)據(jù)結構,每次都是相同的請求,沒有必要去花費時間。我們著力在讀取N7數(shù)據(jù)的處理方面:

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

*10

*02

01

00

0F

00

27

04

A1

C8

07

89

00

*10

03

A3

F3

起始位

起始位

目的址

目的址

讀數(shù)據(jù)

保留

ID號

ID號

字個數(shù)

區(qū)域

整數(shù)型

起始字

結束標志

結束標志

校驗位

校驗位

*:加*不參與CRC32運算。

CRC32的計算方法: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ā)送這串字符將會能得到得到N7的數(shù)據(jù)返回,返回的數(shù)據(jù)以字為單位,開始字與字個數(shù)決定返回的內(nèi)容。

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

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

Tagname

address

des *ri ption

Compressure

n7:68

控制流量

flue_1

n7:33

1#瞬時流量

flue_2

n7:34

2#瞬時流量

Inpressue

n7:37

總入口壓力

lowp_alarm

n7:28

總壓力報警下限

lowp_set

n7:106

總壓力控制設置下限

Lowpressure

n7:26

總壓力控制下限

m i* dtank_p

n7:36

中間罐壓力

outp_low_alarm

n7:29

出口壓力當前報警下限值

outp_low_set

n7:109

出口壓力報警下限設置

Outpressure

n7:35

出口壓力

p_c_down

n7:125

降低入口壓力

p_c_up

n7:124

提高入口壓力

upp_alarm

n7:27

總壓力報警上限

upp_set

n7:105

總壓力控制設值上限

Uppressure

n7:25

總壓力設值上限

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

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

結語

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

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

SN系列樣冊
:鞏經(jīng)理
:13915946763
:南京塞姆泵業(yè)有限公司
個人求購

楊異乾 【求購】  電涌保護器  2025-11-28
趙焱 【求購】  電氣溫控閥  2025-11-28
張揚瓊 【求購】  ABB火檢...  2025-11-27
張雪根 【求購】  固體除垢劑  2025-11-26
趙經(jīng)理 【求購】  變壓器  2025-11-26
羅經(jīng)理 【求購】  巡邏車跟蹤...  2025-11-26
趙經(jīng)理 【求購】  柴油發(fā)電機  2025-11-26
沈雙 【求購】  柴油過濾紙  2025-11-26
VIP公司推薦