分享
 
 
 

编程远程读取AB PLC的数据

王朝vb·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

编程远程读取AB PLC的数据

AB公司开发的RSLink是读取远程AB PLC数据的上佳工具,它能实现读取AB PLC的名种要求。但在实际的系统集成中,由于远程PLC的类型多种多样,于是,我接到一个任务,自主开发程序读取各种PLC。

在我们使用的远程设备中,有AB的PLC,西门子的PLC,LG的PLC,还有多种的RTU,但都有一个共通的特点:通过串口访问,只是数据协议不同,找出各方的数据协议,就一切OK了。为此,我对AB PLC进行了一番研究。

AB公司提供了软件,它的资料就有点语焉不详,我不得不得用串口监听技术进行串口监听以获取更为直观的资料。

一、 串口的监听

我利用PORTMON.EXE来监听串口,以下是运行RSLink时我监听到的数据:

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

由此可以看出,RSLink运行时进行三步:

1、 初始化MODEM:发送ATZ,确认MODEM存在。

2、 查看PLC的数据结构,收到后发1006确认

3、 查看N7的数据,收到后发1006确认

现在所要做的事步骤都很清楚了,下面的工作是理解发出的与返回的数据的含义。

二、 发送数据请求的格式

对于查询PLC的数据结构,每次都是相同的请求,没有必要去花费时间。我们着力在读取N7数据的处理方面:

发出的数据含义:

*10

*02

01

00

0F

00

27

04

A1

C8

07

89

00

*10

03

A3

F3

起始位

起始位

目的址

目的址

读数据

保留

ID号

ID号

字个数

区域

整数型

起始字

结束标志

结束标志

校验位

校验位

*:加*不参与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 'clear 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" + Mid(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

发送这串字符将会能得到得到N7的数据返回,返回的数据以字为单位,开始字与字个数决定返回的内容。

三、 接收到的数据

如上接收到的数据,以 10 06 10 02开始,00 01 4F 00 27 04为目的址与ID号,现再接着是返回的数据,每两个字节是一组数据:如我的PLC中的定义如下:

Tagname

address

description

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

总压力控制下限

midtank_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

总压力设值上限

地址为字,即两个字节。

这样,我们可以读取指定的区域数据,并根据你在PLC中的设定分解数据你就可以通过自编的程序读取AB PLC的数据了。

结语

这就是AB PLC的数据协议,由于AB 的说明书中所言不详,而我读取的PLC是另一个公司开发的程序,所以在数据的含义方面花费了不少时间,而在编程方面的时间倒时不多。这次总结出来与大家共享,应能使大家免去摸索之苦。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有