帮助中有个很好的例子:
NETWORK 1
LD SM0.1 // 首次扫描时,
MOVB 2 SMB30 // 启用PPI主模式,
FILL +0 VW200 68 // 并清除所有的接收和传输缓冲区
NETWORK 2
LD V200.7 // 当"NETR完成"位被设置
AW= VW208 +100 // 且100种情况被组装,
MOVB 2 VB301 // 载入情况分组#1的站址
MOVD &VB101 VD302 // 将指针载入远程站中的数据
MOVB 2 VB306 // 载入需要传输的数据长度
MOVW +0 VW307 // 载入需要传输的数据
NETW VB300 0 // 复原由情况分组#1组装的情况数目
NETWORK 3
LD V200.7 // 当"NETR完成"位被设置,
MOVB VB207 VB400 // 保存来自情况分组#1的控制数据。
NETWORK 4
LDN SM0.1 // 如果不是首次扫描,
AN V200.6 // 并没有错误,
AN V200.5
MOVB 2 VB201 // 载入情况分组#1的站址
MOVD &VB100 VD202 // 将指针载入远程站中的数据
MOVB 3 VB206 // 载入将要接收的数据长度
NETR VB200 0 // 读取情况分组#1中的控制和状态数据
转发:
西门子s300和s7200通讯
通过MPI,PROFIBUS,以太网都可以。
成本最低的是MPI.
如果通过MPI通讯,300中有指令可以直接读取200的数据,在300中可以用SFC67和SFC68来读取200中的数据,200中不需要编程通讯程序。
将200的MD10读到300的MD205中,并将300的MD225写到200的MD20中
。。。。。。。。。。。。如下:
NETWORK
TITLE =
O M 0.0;
ON M 0.0;
S M 200.0;
S M 200.1;
L 6;
T MW 201;
NETWORK
TITLE =
CALL "X_GET" (
REQ := M 200.0,//启动读操作
CONT := M 200.1,
DEST_ID := MW 201,//读取对象的MPI地址
VAR_ADDR := MD 10,//读取的区域为读取对象的数据区MD10
RET_VAL := MW 203,
BUSY := M 200.2,
RD := MD 205);//将读取对象的数据区MD10中的内容读取到本机的MD205中
NETWORK
TITLE =
O M 0.0;
ON M 0.0;
S M 210.0;
S M 210.1;
L MB 170;
T MB 225;
NETWORK
TITLE =传送数据
CALL "X_PUT" (
REQ := M 210.0,//启动写操作
CONT := M 210.1,
DEST_ID := MW 201,//目标对象MPI地址
VAR_ADDR := MD 20,//目标象中数据将被写入的区域
SD := MD 225,//要写入的数据在本机中的存贮区域
RET_VAL := MW 213,
BUSY := M 210.2);