编程远程读取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确认
现在所要做的事步骤都很清楚了,下面的工作是理解发出的与返回的数据的含义。