quote:以下是引用四书五经在2009-06-10 16:16:12的发言:
对于S5兼容通讯(Send/Recive),调用FC5/FC6最好不要就直接调用FC5/FC6就完事了。应该按照如下格式进行调用:
CALL FC 5 (
ACT := M100.0,
ID := 1,
LADDR := W#16#100,
SEND := P#DB100.dbx0.0 BYTE 240,
LEN := 240,
DONE := M100.1,
ERROR := M100.2,
STATUS := MW102 );
R M100.0;
SET;
A M100.1;
JC done;
SET;
A M100.2;
JC err;
BEU;//功能块还没执行完,结束程序
done: S M100.0; //功能块执行完了,触发下一次发送
BEU;
err: S M100.0;//出错了,也触发下一次发送,这里也可以加入出错处理
BEU;
以上代码摘自STEP7在线帮助。这样做的好处是保证在数据发送完成后再启动下一次发次。不会出现上一次数据还没发完,又开始新的发送的情况。呵呵,既然功能块提供了这么多状态,那就应该把他们都用上,好的程序还是应该这样写!
那么Done信号意味着什么呢?