发布于 2007-01-26 16:33:55
0楼
这样说别人只能帮你猜了,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 //调用数据处理程序