此程序是200自由通讯,和单片机通讯,我手头项目和这个基本相似,请您看看这个程序的问题所在,谢谢。
OB1
//本程序s7-200最主站,单片机做从站,主站发送W01T0(回车),
从站返回P01 0.0000.0L(回车),读取从站的数据信息。
//S7-200采用自由通讯的方式,中断接受数据,本通讯采用ASCII码的格式传输
//学习如何发送和接收数据、
Network1:
LD I0.1 //调用发送程序
EU
CALL SBR_1
Network2:
LD M0.6
CALL SBR_2
SBR_0
Network 1:
LD SM0.0 //首先写入要发送的命令
MOVB 6,VB80 //发送长度
MOVD 16#57303554 ,VD81//W01T0
MOVW 16#300D,VW85
Network 2:
LD SM0.0
ATCH INT_0,25 //当口1接收到字符时引起中断
ENI
Network 3:
LD SM0.0
MOVD &VB420,VD181 //指针指向接收缓冲区
Network 4:
LD SM0.0
MOVB 16#E9,SMB30 //自由口通讯模式:9600,O,7,1
SBR_1
LD SM0.0
XMT VB80,1
SBR_2
Network 1
LDB=VB420,16#50 //起始字符正确
AB=VB431,16#0D //结束字符正确
S M18.0 ,1 //置正确标志位
Network 2:
LD M18.0
STR VB424,1,VD450 //数据保存
Network 3:
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
Network 1
LDB=SMB2,16#50 //当首字符正确,置开始接收标志位
MOVD &VB420,VD181 //装在地址指针
Network 2:
LD SM0.0 //接收字符
MOVB SMB2,*VD181
INCD VD181
Nerwork 3:
LDB+SMB2,16#0D //当接收字符置回车时
MOVD &VB420,VD181 //重新装在地址指针
S M0.6,1 //调用数据处理程序