基于MPI协议的S7-300 PLC与单片机通信的实现
MPI协议在PLC之间可组态为主/主协议或主/从协议。介绍了基于MPI协议的西门子S7-300 PLC与单片机实现数据通信的应用实例及其主要设置。
西门子S7-300 PLC因其功能强、速度快、扩展灵活,在工业控制领域中占有重要地位。MPI网络是西门子工业控制系统中经常用到的一种通信方式,其使用RS485物理接口进行数据传输。目前,S7-300 PLC与PC的通信是通过专用接口卡5611卡和MPI电缆实现的。通信软件为SIMATIC Manager、STEP7、PRODAVE_S7_mini以及功能十分强大的WinCC。但是,由于西门子MPI协议是不公开的,所以一些单片机控制器不能接入到MPI网络与S7-300 PLC通信。本文提出了一种获取MPI协议的方法并设计了单片机MPI程序和S7-300 PLC通信。
1 设计方案
任何指令在传输线路上均以数字形式存在,即一串高低电平。因此,使用串口软件对线路上的数据侦听并进行分析至关重要。
首先,用一个S7-300 PLC和一个S7-200 PLC进行MPI通信,在S7-300 PLC和S7-200 PLC的通信线路中间并联两根通信线出来接到PC/PPI电缆上,然后下载一个比较好的串口软件,接下来打开这个软件,新建、选择端口COM1,再将PC/PPI电缆接在COM1上。连接方法如图1所示。
按S7-300系统手册设置好串口参数:19200,8,E偶校验,1位停止位。然后设置好SIMATIC Manager软件,使之能与S7-300 CPU正常通信。从SIMATIC Manager软件中发出一个明确指令,监视软件就能显示这条报文了(用16进制显示)。
1.1 S7-300程序设计
两台S7-200 PLC无需任何程序,被动应答。S7-300 PLC则需用SIMATIC Manager软件编写MPI读写程序。本文设置S7-300 PLC为2站(0站和1站被S7-300 PLC都预留另作他用),一台S7-200 PLC为3站,另一台S7-200 PLC为4站。
S7-300 MPI读写程序如图2所示。
硬件配置和软件程序下载到S7-300 PLC后,监视一下数据,如果正确则关掉SIMATIC Manager软件,因为电脑是默认的MPI主站(0站),以防干扰后面的监测数据。
1.2 数据监测
打开串口软件,会源源不断地接收到数据,收到10万左右的数据时关闭串口软件,保存数据,然后再分析。
通过反复试验可以发现:
(1)与西门子S7-200不同,S7-300不管处于何种状态(run或stop),一经上电,PLC就会不断地发出数据查找设备,在读写数据过程中也不间断。
(2)连接、断开、读出/写入时,监测到一系列有规律的数据,读出/写入的数据包括在其中。
分析其报文,可以找出如下规律:
令牌报文的格式:SD4 DA SA
总线访问协议报文的格式: SD1 DA SA FC FCS ED
数据报文格式:SD2 LE LER SD2 DA SA FC DSAP SSAP DU FCS ED
SD1=开始分界符1 Start Delimiter 1 SD2=开始分界符2 Start Delimiter 2
LE=长度 Length LER= 重复长度 Repeated Length
DA=目的地址 Destination Address SA=源地址 Source Address
FC=功能码 Function Code DU=数据单元 Data Unit
FCS=帧检查顺序 Frame Check Sequence ED=结束分界符 End Delimiter
DSAP=目的服务存取点 Destination Service Access Point
SSAP=源服务存取点 Source Service Access Point
2 单片机MPI通信硬件和软件设计
2.1 单片机MPI通信硬件设计
笔者用AT89C52单片机、MAX485和双端口RAMIDT7132构成了单片机的MPI通信硬件。硬件结构图如图3所示。
2.2 单片机MPI通信软件设计
单片机MPI通信软件设计主要包括串口部分、握手信号、读写部分等,其程序流程图如图4所示。
编写完MPI程序后,可以将3号从站的S7-200从MPI网络中去掉,将单片机接入MPI网络,单片机通过拨码开关设置为从站3,MPI网络支持从站随时接入网络,但网络中的主站号和从站号唯一。用SIMATIC Manager软件检测单片机和S7-300进行数据监测如图5所示。
- 单片机通信技术要点(11-29)
- 组态王与单片机通信协议3(11-27)
- RS232串口通信在PC机与单片机通信中的应用(09-07)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)