发布于 2014-03-28 13:02:16
108楼
用过OPEN IE通讯的大侠们,有没有发现:当要与多台设备同时进行通讯时候,每个通讯都调用FB63、FB64、FB65、FB66时候很不方便。针对这个问题,本人用SCL把FB63、FB64、FB65、FB66做了个集成,生产一个功能块FB100,以后每个通讯只需要调用这一个功能块就可以了,供大家参考提议,现此功能块已经在项目中实用(用317CPU同时和8个机器人以太网通讯)。以下为SCL原文件:
FUNCTION_BLOCK FB100
VAR_INPUT
CON_DATA:ANY;
SEND_DATA:ANY;
RCV_DATA:ANY;
CON_REQ:BOOL;
SEND_REQ:BOOL;
RCV_REQ:BOOL;
DISCON_REQ:BOOL;
LENG_SEND:INT;
LENG_RCV:INT;
ID:WORD;
END_VAR
VAR_OUTPUT
SEND_DONE:BOOL;
STATUS:WORD;
END_VAR
VAR
TCON:FB65;
TSEND:FB63;
TRCV:FB64;
TDISCON:FB66;
END_VAR
BEGIN
TCON(REQ :=CON_REQ
,ID :=ID
,CONNECT :=CON_DATA
);
TSEND(REQ :=SEND_REQ
,ID :=ID
,LEN :=LENG_SEND
,DATA :=SEND_DATA
);
SEND_DONE:=TSEND.DONE;
STATUS:= TSEND.STATUS;
TRCV(EN_R :=RCV_REQ
,ID :=ID
,LEN :=LENG_RCV
,DATA :=RCV_DATA
);
TDISCON(REQ :=DISCON_REQ
,ID :=ID
);
END_FUNCTION_BLOCK
编译前,请先在程序里插入FB63/64/65/66,接下来会发现OPENIE通讯如此方便!