发布于 2007-03-01 22:14:12
0楼
我现在的问题是如果不这么处理,M4.5有时候就都是1,因为没有发送成功或者发送失败的的反馈,所有M4.5的值也就不变。但是如果把DB50.DBX 29.6也拿来不断置位复位通信就一直正常,我也不知道DB里面的这个点是干什么用的,当时也是逼急了就不断观察db的实际值,经过很多次实验我发现在通信不正常的时候,如果对这个这个点(不正常的时候常为1)进行复位一次就好了。因此就这么处理下来了,当然我这种处理方式不太好,但是目前就是能解决问题,也就不准备再改了,现在就是不明白这个点是干什么用的。
当然这个程序其实大部分都可以删掉,包括楼上说的有些代码是无效的。我试过了,如果只调用发送块,并且对发送块的REQ直接不断的置位/复位,把其他参数也直接写在输入到发送块,这样通信也正常。我没有把他们删除的原因是想尽量保留范例程序的代码,如果还有项目再做再好好研究。
A M 1.3 //2Hz的脉冲
= M 4.5
= DB50.DBX 29.6
CALL FB 8 , DB50
SF :='S'
REQ :=M 4.5
R :=DB40.DBX0.1
LADDR :=256
DB_NO :=44
DBB_NO :=0
LEN :=6
R_CPU_NO:=
R_TYP :='X'
R_NO :=
R_OFFSET:=
R_CF_BYT:=
R_CF_BIT:=
DONE :=DB40.DBX0.4
ERROR :=DB40.DBX0.5
STATUS :=DB40.DBW12
If anything can go wrong, it will.