发布于 2005-12-21 09:21:56
0楼
这是一个S7-200通过自由口主动发送命令的例子用于PLC-单片机。以后我再写一个PC-PLC的例子
如下:
MAIN
NETWORK1
LD I0.1
EU
CALL SBR_1
NETWORK2
LD M0.6
CALL SBR_2
SBR-0
NETWORK1
LD SM0.0 //首先写入要发送的命令
MOVB 6, VB80 //发送长度
MOVD 16#57303554, VD81 //W01T0
MOVW 16#300D, VW85
NETWORK2
LD SM0.0
ATCH INT_0, 25 //当口1接收到字符时引起中断
ENI
NETWORK3
LD SM0.0
MOVD &VB420, VD181 //指针指向接收缓冲区
//接收初始化
//P为起始字
//回车为结束字符
//超过1S终止接收
//接收的最大字符数
//忽略SMW192
SBR-1
LD SM0.0
XMT VB80, 1
SBR-2
NETWORK1
LDB= VB420, 16#50 //起始字符正确
AB= VB431, 16#0D //结束字符正确
S M18.0, 1 //置正确标志位
NETWORK2
LD M18.0
STR VB424, 1, VD450 //数据保存
NETWORK3
LD SM0.0
MOVD 16#00000000, VD420 //复位信息正确标志
MOVD 16#00000000, VD424 //关闭本子程序
MOVD 16#00000000, VD428
R M18.0, 1
R M0.6, 1
INT-0
NETWORK1
LDB= SMB2, 16#50 //当首字符正确时,置开始接收标志位
MOVD &VB420, VD181 //装载地址指针
NETWORK2
LD SM0.0 //接收字符
MOVB SMB2, *VD181
INCD VD181
NETWORK3
LDB= SMB2, 16#0D //当接收的字符是回车时
MOVD &VB420, VD181 //重新装载地址指针
S M0.6, 1 //调用数据处理程序