首先要建立一个项目,对两个PLC的MPI网络组态。假设A站和B站的MPI地址分别为2和3。使用 SFC68“X_PUT” 和 SFC67“X_GET” 发送和接收数据。
发送和接收程序可以放于一个站的循环中断组织块OB35中, 或者发送程序放于OB35中,接收程序放于OB1中。• 例如在A站(2号站)的PLC的定时循环中断组织块OB35中编写发送程序和接收程序。首先利用SFC 68 把A站中的MB40MB49中的10B数据发送到B站(3号站)中的MB50MB59中。完成A站向B站写入数据。然后利用SFC 67 把B站中的MB60MB69中的10B数据读入到A站中的MB70MB79中。完成A站读取B站的数据。
注意:SFC 69 “X_ABORT” 可以中断一个由“X_PUT” 、 “X_GET”建立的连接。如果SFC 68、SFC 67的工作已经完成(BUSY=0),调用SFC 69 “X_ABORT”后,通信双方的连接资源被断开。
• OB35中的程序:
Network1:用SFC 68发送数据本站(A站)的数据到对方(B站)CALL "X_PUT" //调用SFC 68
REQ :=TRUE //激活发送请求(BOOL 1有效)
CONT :=TRUE //发送完成后保持连接(BOOL 1连续)
DEST_ID :=W#16#3 //接收方的MPI地址(WORD)
VAR_ADDR:=P#M 50.0 BYTE 10 //对方的数据接收区(ANY)为M50M59的10个字节
SD :=P#M 40.0 BYTE 10 //本地的数据发送区(ANY)为M40M49的10个字节
RET_VAL :=LW2 //返回的故障信息(WORD)
BUSY :=L2.1 //发送状态(ANY 1为发送中)
Network2:用SFC 67 读取对方(B站)的数据到本站(A站)
CALL "X_GET" //调用SFC 67
REQ :=TRUE //激活读取请求(BOOL 1有效)
CONT :=TRUE //接收完成后保持连接(BOOL 1连续)
DEST_ID :=W#16#3 //对方(B站)的MPI地址(WORD)
VAR_ADDR:=P#M 60.0 BYTE 10 //要读取的对方的数据接收区(ANY)为M60M59的10个字节
RET_VAL :=LW4 //返回的故障信息(WORD)
BUSY :=L2.2 //发送状态(ANY 1为发送中)
RD :=P#M 70.0 BYTE 10 //本地的数据接收区(ANY)为M70M79的10个字节
当需要完成某些特殊功能的控制任务时,CPU主机可以连接扩展模块,利用这些扩展模块进一步完善CPU的功能。常用的扩展模块有两类,即模拟量输入/输出扩展模块、特殊功能模块。模拟量扩展模块类型如表1所列。
表1 模拟量扩展模块型号及用途
分类 | 型号 | I/O规格 | 功能及用途 |
模拟量输入扩展模块 | EM231 | AI4 x 12位 | 4路模拟输入,12位A/D转换 |
AI4 x热电偶 | 4路热电偶模拟输入 | ||
AI4 x RTD | 4路热电阻模拟输入 | ||
模拟量输出扩展模块 | EM232 | AQ2 x 12位 | 2路模拟输出 |
模拟量输入/ 输出扩展模块 | EM235 | AI4/AQl x 12 | 4路模拟输入,1路模拟输出,12位转换 |
S7-200 主机的特殊功能模块有多种类型,例如:功能模块有EM253位置控制模块、EM277 Profibus-DP模块、EM241调制解调器模块、CP243-1以太网模块、CP243-2 AS-I接口模块等。