FUNCTION DCI_SendMessages: VOID
BEGIN
NETWORK
TITLE = DCI_SendMessages
U DCI_Messages.MatReceivedFLAG
NOT
SPB els1
Call DCI_STARTEVENT(MessageID:=21)
Call DCI_WRITEINTPARAM( id := 102,
val := Data.PortID)
CALL DCI_WRITEINTPARAM( id := 103,
val : =Data.SlotID)
Call DCI_WRITESTRINGPARAM( id :=202,
val :=Data.MaterialID)
U FALSE
DCI_MESSAGECOMPLETE
L FALSE
= #DCI_Messages.MatReceivedFLAG
els1:
end1:
U DCI_Messages.MatRemovedFLAG
NOT
SPB els2
L 22
DCI_STARTEVENT
L 102
DCI_WRITEINTPARAM DATA.PortID
L 103
DCI_WRITEINTPARAM DATA.SlotID
L 202
DCI_WRITESTRINGPARAM DATA.MaterialID
U FALSE
DCI_MESSAGECOMPLETE
U FALSE
= #DCI_Messages.MatRemovedFLAG
els2:
end2:
END_FUNCTION
//File: DCI_SendMessages.scl
FUNCTION DCI_SendMessages:VOID
IF DCI_Messages.MatReceivedFLAG THEN
DCI_StartEvent(MessageID:=21);
DCI_WriteIntParam(id:=102, val:=Data.PortID);
DCI_WriteIntParam(id:=103, val:=Data.SlotID);
DCI_WriteStringParam(id:=202, val:=Data.MaterialID);
DCI_MessageComplete();
DCI_Messages.MatReceivedFLAG:=False;
END_IF;
IF DCI_Messages.MatRemovedFLAG THEN
DCI_StartEvent(MessageID:=22);
DCI_WriteIntParam(id:=102, val:=Data.PortID);
DCI_WriteIntParam(id:=103, val:=Data.SlotID);
DCI_WriteStringParam(id:=202, val:=Data.MaterialID);
DCI_MessageComplete();
DCI_Messages.MatRemovedFLAG:=False;
END_IF;
END_FUNCTION
und dazu muss ich wissen wie ich IF s usw. in AWL bauen kann.
*
U #myCase
SPBN else
//hier IF
SPA end
else: //hier else
end: NOP 0
U #DCI_Messages.MatReceivedFLAG
SPBN else
CALL DCI_StartEvent(MessageID:=22);
CALL DCI_WriteIntParam(id:=102, val:=Data.PortID);
CALL DCI_WriteIntParam(id:=103, val:=Data.SlotID);
CALL DCI_WriteStringParam(id:=202, val:=Data.MaterialID);
CALL DCI_MessageComplete();
U FALSE
= #DCI_Messages.MatRemovedFLAG
SPA end
else: //hier else
end: NOP 0
Ok mal auf meinen Code angewendet:
das sollte jetzt stimmen oder muss der NOP nur am ende vom ganzen AWL-Code?
FUNCTION DCI_SendMessages: VOID
BEGIN
NETWORK
TITLE = DCI_SendMessages
U #DCI_Messages.MatReceivedFLAG
SPBN else
CALL DCI_StartEvent(MessageID:=22);
CALL DCI_WriteIntParam(id:=102, val:=Data.PortID);
CALL DCI_WriteIntParam(id:=103, val:=Data.SlotID);
CALL DCI_WriteStringParam(id:=202, val:=Data.MaterialID);
CALL DCI_MessageComplete();
U FALSE
= #DCI_Messages.MatRemovedFLAG
end1: NOP 0
U #DCI_Messages.MatRemovedFLAG
SPBN else
CALL DCI_StartEvent(MessageID:=22);
CALL DCI_WriteIntParam(id:=102, val:=Data.PortID);
CALL DCI_WriteIntParam(id:=103, val:=Data.SlotID);
CALL DCI_WriteStringParam(id:=202, val:=Data.MaterialID);
CALL DCI_MessageComplete();
U FALSE
= #DCI_Messages.MatRemovedFLAG
end2
END_FUNCTION
Mal noch 2 Fragen, warum muss das else nicht unterschiedlich sein? Ist ja bestimmt kein befehlt oder? Und woher weiß das SPBN wo es hinspringen muss, wann sag ich dem das es zu end muss?
FUNCTION DCI_SendMessages: VOID
BEGIN
NETWORK
TITLE = DCI_SendMessages
U #DCI_Messages.MatReceivedFLAG
SPBN if1
CALL DCI_StartEvent(MessageID:=22);
CALL DCI_WriteIntParam(id:=102, val:=Data.PortID);
CALL DCI_WriteIntParam(id:=103, val:=Data.SlotID);
CALL DCI_WriteStringParam(id:=202, val:=Data.MaterialID);
CALL DCI_MessageComplete();
U FALSE
= #DCI_Messages.MatRemovedFLAG
if1: NOP 0
U #DCI_Messages.MatRemovedFLAG
SPBN if2
CALL DCI_StartEvent(MessageID:=22);
CALL DCI_WriteIntParam(id:=102, val:=Data.PortID);
CALL DCI_WriteIntParam(id:=103, val:=Data.SlotID);
CALL DCI_WriteStringParam(id:=202, val:=Data.MaterialID);
CALL DCI_MessageComplete();
U FALSE
= #DCI_Messages.MatRemovedFLAG
if2
END_FUNCTION
So jetzt stimmts aber oder?
wenn nicht ist AWL doof
(*File: DCI_SendMessages.AWL*)
(*Version: 1.0*)
FUNCTION DCI_SendMessages:VOID
NAME: DCI_SMsg
FAMILY: SCL
AUTHOR: ICH
VERSION: 0.1
KNOW_HOW_PROTECT
Begin
NETWORK
Title = DCI_SendMessages
U #DCI_Messages.FLAGMatRecv
SPBN if1
CALL DCI_StartEvent(MessageID:=500);
CALL DCI_WriteStringParam(id:=100, val:=Data.MaterialID);
CALL DCI_WriteIntParam(id:=101, val:=Data.InPort);
CALL DCI_MessageComplete();
U FALSE
= #DCI_Messages.FLAGMatRecv
if1: NOP 0
U #DCI_Messages.FLAGProcStart
SPBN if2
CALL DCI_StartEvent(MessageID:=502);
CALL DCI_WriteStringParam(id:=100, val:=Data.MaterialID);
CALL DCI_WriteStringParam(id:=103, val:=Data.RecipeID);
CALL DCI_MessageComplete();
U FALSE
= #DCI_Messages.FLAGProcStart
if2: NOP 0
U #DCI_Messages.FLAGProcFin
SPBN if3
CALL DCI_StartEvent(MessageID:=505);
CALL DCI_WriteStringParam(id:=100, val:=Data.MaterialID);
CALL DCI_WriteRealParam(id:=301, val:=Data.Temperature);
CALL DCI_WriteIntParam(id:=302, val:=Data.Pressure);
CALL DCI_WriteBoolParam(id:=303, val:=Data.ProcessResult);
CALL DCI_MessageComplete();
U FALSE
= #DCI_Messages.FLAGProcFin
if3: NOP 0
U #DCI_Messages.FLAGMatRem
SPBN if4
CALL DCI_StartEvent(MessageID:=508);
CALL DCI_WriteStringParam(id:=100, val:=Data.MaterialID);
CALL DCI_WriteIntParam(id:=102, val:=Data.OutPort);
CALL DCI_MessageComplete();
U FALSE
= #DCI_Messages.FLAGMatRem
if4: NOP 0
END_FUNCTION
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?