How to use the Assembly Line API
The intention of the Assembly Line Service is to serve the interface for assembly/production lines. Production Stations of an assembly line can create, retrieve, update and delete part data as well as freely definable additional data. Production Stations can also get information about whether the station (or production process) is the next proper process to be executed at the part.
CreateVmdt
Description
The CreateVmdt command is normally used by the first process in an assembly line which has the work part in place. The
command creates a dataset in the Line Control Database for the work part.
The command will do two things:
-
Create the new dataset(s) for the part(s)
-
Implicit calls SetNextStation Because of this, the command should be called after the process has been executed.
If a dataset already exists for a given identifier, the command fails and the error number 18661 will be returned to the station. In this case the dataset must be deleted first to be able to create the dataset for that identifier.
If a group must be created,H.Count
must contain the number of group members. The single group members must be specified inside theD.SubPart
array. The index of the array must start with '0'.
Normally Line Control does not allow callingCreateVmdt
for work parts which are already created inside the Line Control database. In this case the second call will return an error code 18663 ("The dataset already exists"). You can change this behavior by setting the configuration parameteroverwriteProtection
tofalse
. This will first check if the dataset that should be created already exists in the database. If so, the dataset will be deleted and then the dataset will be recreated with the new values. If the dataset is a group this check will be done for the group itself and for all sub parts the group contains. Because this check is done on every call ofCreateVmdt
, there will be a performance penalty of deactivating the overwrite protection. Thus, you should leave it on unless you have reasons that outweighing the penalty of performance decrease.
Telegram Examples
//create a single work part
#1{"Order",8,"CreateVmdt";"Id",3,19;"H.Identifier",8,"Test_004";"H.TargetIdx",3,1;"H.Result",3,0;"H.NioBits",3,8;"H.Plant",3,39;"H.LineNo",3,1213;"H.StatNo",3,10;"H.StatIdx",3,1;"H.FuNo",3,1;"H.WorkPos",3,1;"H.TypeNo",8,"1111111111";"H.TypeVar",8,"0815";"H.Charge",8,"";"H.WorkingCode",3,123;"H.PartState",3,1;"H.RouteList",8,"SampleRouteList";"H.ResFileName",8,"";"H.VmdtDataBlockSize",3,200;"H.SetAddData",3,0;}
//create a group part (with subparts)
#1{"Order",8,"CreateVmdt";"Id",3,1;"H.Identifier",8,"Test_058_G";"H.ProcessNo",3,900;"H.RouteList",8,"TDP_3";"H.Result",3,1;"H.NioBits",3,0;"H.Plant",3,39;"H.LineNo",3,1213;"H.TypeNo",8,"1111111111";"H.TypeVar",8,"";"H.Charge",8,"";"H.WorkingCode",3,0;"H.ResFileName",8,"";"H.VmdtDataBlockSize",3,0;"H.SetAddData",3,0;"H.IsMaster",3,1;"H.Count",3,4;"D.SubPart[0].Identifier",8,"Test_058_P1";"D.SubPart[0].Pos",3,1;"D.SubPart[0].Result",3,1;"D.SubPart[0].NioBits",3,0;"D.SubPart[1].Identifier",8,"Test_058_P2";"D.SubPart[1].Pos",3,2;"D.SubPart[1].Result",3,1;"D.SubPart[1].NioBits",3,0;"D.SubPart[2].Identifier",8,"Test_058_P3";"D.SubPart[2].Pos",3,3;"D.SubPart[2].Result",3,1;"D.SubPart[2].NioBits",3,0;"D.SubPart[3].Identifier",8,"Test_058_P4";"D.SubPart[3].Pos",3,4;"D.SubPart[3].Result",3,1;"D.SubPart[3].NioBits",3,0;}
//JSON for the HTTP POST (note the symbol " must be escaped by a backslash )
{
"OpConTelegram": '#1{"Order",8,"CreateVmdt";"Id",3,1;"H.Identifier",8,"6379831139131215391986404970";"H.ProcessNo",3,900;"H.RouteList",8,"TDP_3";"H.Result",3,1;"H.NioBits",3,0;"H.Plant",3,39;"H.LineNo",3,1213;"H.TypeNo",8,"1111111111";"H.TypeVar",8,"";"H.Charge",8,"";"H.WorkingCode",3,0;"H.ResFileName",8,"";"H.VmdtDataBlockSize",3,0;"H.SetAddData",3,0;"H.IsMaster",3,1;"H.Count",3,4;"D.SubPart[0].Identifier",8,"6379831139131215391986404970_9/9/2022 9:09:51 AM +00:00_1";"D.SubPart[0].Pos",3,1;"D.SubPart[0].Result",3,1;"D.SubPart[0].NioBits",3,0;"D.SubPart[1].Identifier",8,"6379831139131215391986404970_9/9/2022 9:09:51 AM +00:00_2";"D.SubPart[1].Pos",3,2;"D.SubPart[1].Result",3,1;"D.SubPart[1].NioBits",3,0;"D.SubPart[2].Identifier",8,"6379831139131215391986404970_9/9/2022 9:09:51 AM +00:00_3";"D.SubPart[2].Pos",3,3;"D.SubPart[2].Result",3,1;"D.SubPart[2].NioBits",3,0;"D.SubPart[3].Identifier",8,"6379831139131215391986404970_9/9/2022 9:09:51 AM +00:00_4";"D.SubPart[3].Pos",3,4;"D.SubPart[3].Result",3,1;"D.SubPart[3].NioBits",3,0;}'
}
Request
Parameter | mandatory | Description |
---|---|---|
|
x |
ID of the work part or group |
|
Identifier type |
|
|
Target of the active processing step which should be used
as next processing step. |
|
|
x |
Processing result of the process |
|
x |
Bits indicating the processing errors |
|
x |
Plant number |
|
Process number |
|
|
Line number of the requesting station |
|
|
Station number of the requesting station |
|
|
Station index of the requesting station |
|
|
Functional unit number of the requesting station |
|
|
Work position of the requesting station |
|
|
x |
Type number of the work part |
|
x |
Type variant of the work part |
|
x |
ID of the batch of the work part |
|
x |
Working code for the work part |
|
State of the work part |
|
|
x |
Route list name |
|
x |
Name of the result data file |
|
x |
Size of the binary data block |
|
x |
Indicates whether the message has additional binary data |
|
Order number of an order that is associated with a valid
route list. Vmdt uses the associated route list and assigns it to the newly created part. |
|
|
Number of work parts the group contains |
|
|
Identifier of the sub part. |
|
|
Position of the sub part inside the group |
|
|
State of the sub part |
|
|
Result of the sub part |
|
|
NioBits of the SubPart |
|
|
Additional data specified as name value pairs (<VarName> is the name of the additional data information) |
Response
Parameter | Description |
---|---|
|
Return value of the command |
|
If the command has not been executed successful, this parameter contains additional information about the error. |
VT_Enum types Supported in IAS
Varenum | Value | State in IAS |
---|---|---|
|
11 |
Accepted |
|
7 |
Accepted |
|
16 |
Accepted |
|
8 |
Accepted |
|
2 |
Accepted |
|
22 |
Accepted |
|
3 |
Accepted |
|
17 |
Accepted |
|
18 |
Accepted |
|
4 |
Accepted |
|
5 |
Accepted |
Note: VT_Enum types that are not listed above are not supported by IAS beacuse they either are rejected by MES too, or accepted (i.e. MES does not reply with an error) but with an incorrect behavior (i.e. MES writes an incorrect value to the DB)
DeleteVmdt
Description
The last station / process usually uses this command to delete the dataset in the Line Control database.
It is possible to call DeleteVmdt from a process (station) which is not in order to process the part. The server will
only check if the process (station) is included in the route list for the part. Trying to call the command from a
process / location which is not included in the route list will result in an error.
If the command will be called with an identifier which does not exists, the command will return no error code,
because it is assumed that the Line Control dataset has already been deleted.
When the part being deleted is a group that has additional data associated with it, Line Control assigns a copy of the group’s additional data to each of the group’s
sub parts. Upon copying the group’s additional data to a sub-part’s additional data, additional data items with the same name as one of the sub-part’s additional data items are not copied (additional data items of a sub-part are not overwritten).
If Line Control timers or counters are linked to the master part, those are copied to the sub parts, unless they already exist.
Telegram Examples
Telegram:
#1{"Order",8,"DeleteVmdt";"Id",3,44;"H.Identifier",8,"Test_058_G";"H.IsMaster",3,1;"H.ProcessNo",3,700;}
JSON for the HTTP POST (note the symbol " must be escaped by a backslash )
{
"OpConTelegram": "#1{\"Order\",8,\"DeleteVmdt\";\"Id\",3,47;\"H.Identifier\",8,\"test-20224_T4\";\"H.IsMaster\",3,-1;\"H.ProcessNo\",3,20180205;\"H.DelSubParts\",3,-1;}"
}
Request
Parameter | mandatory | Description |
---|---|---|
|
x |
ID of the work part or group |
|
Identifier type |
|
|
Process number |
|
|
Line number of the requesting station |
|
|
Station number of the requesting station |
|
|
Station index of the requesting station |
|
|
Functional unit number of the requesting station |
|
|
Work position of the requesting station |
|
|
Delete reason |
|
|
Used when deleting a group part |
With this command the bits of H.Flags
will be interpreted like this:
Name | Bit | Comment |
---|---|---|
PACKED |
0 |
Part has been packaged |
SCRAPPED |
1 |
Part has been scrapped |
Response
Parameter | Description |
---|---|
|
Return value of the command: |
|
If the command has not been executed successful, this parameter contains additional information about the error. |
SetStation
Description
This command will typically be used by a rework station. With this command the next process/station is sent for
the work part using the process number / location and not one of the targets of the active processing step. It is
important to note here that ProcessNo
(or StatNo
, StatIdx
, FuNo
and WorkPos
) must actually be present
in the route list.
With this command you can store additional data to the dataset. The additional data must be specified as
name value pair and transmitted using the D.AddData.<VariableName>
fields, where <VariableName>
is the name of the additional data item.
The name of the field must start with a character and must not contain '.'.
Working with groups, the client has to specify the next process / station always explicitly. There are no
algorithms like bottom-up or top-down propagation of the processing steps like in the SetNextStation
command.
The client must send the complete information in one telegram using the SubPart[x]
fields or
sending the next process with single messages for the sub part and the group.
Telegram Examples
Single Part
#1{"Order",8,"SetStation";"Id",3,4;"H.Identifier",8,"Test_055";"H.PartState",3,4;"H.Result",3,1;"H.NioBits",3,0;"H.NextProcessNo",3,21;"H.ProcessNo",3,15;"H.SetAddData",3,0;}
Group
#1{"Order",8,"SetStation";"Id",3,57;"H.Identifier",8,"Test_021_G";"H.PartState",3,4;"H.Result",3,1;"H.NioBits",3,0;"H.NextProcessNo",3,900;"H.ProcessNo",3,700;"H.SetAddData",3,0;"H.IsMaster",3,1;"H.Count",3,4;"D.SubPart[0].Pos",3,1;"D.SubPart[0].Result",3,1;"D.SubPart[0].NioBits",3,0;"D.SubPart[0].PartState",3,4;"D.SubPart[0].NextProcessNo",3,900;"D.SubPart[0].ProcessNo",3,700;}
Request
Parameter | mandatory | Description |
---|---|---|
|
x |
ID of the work part or group |
|
Identifier type |
|
|
New content of the last processing result |
|
|
New content of the nio bits |
|
|
Process number |
|
|
New value for the line number of the last location |
|
|
New value for the station number of the last location |
|
|
New value for the last station index number |
|
|
New value for the last functional unit number |
|
|
New value for the last working position number |
|
|
Process number |
|
|
New value for the station number of the next location |
|
|
New value for the next station index number |
|
|
New value for the next functional unit number |
|
|
New value for the next working position number |
|
|
New value for the part state |
|
|
x |
Indicates whether the message contains additional data (binary or key value data). |
|
Number of elements inside the SubPart array (the array is 0-based) |
|
|
Position of the sub part inside the panel / group |
|
|
Result of the sub part |
|
|
Nio bits of the sub part |
|
|
State of the sub part |
|
|
Overrides the next process number for the sub part |
|
|
Overrides the last process number for the sub part |
|
|
Value of additional data item <VarName> |
Response
Parameter | Description |
---|---|
|
Return value of the command |
|
If the command has not been executed successful, this parameter contains additional information about the error. |
SetNextStation
Description
This command is sent to the server when a part has been worked. The values sent by the command to the server are stored in the corresponding Line Control dataset. With this command the next process will be read from the route list and assigned to the part according to the result send by the station.
Telegram Examples
Single Part
#1{"Order",8,"SetNextStation";"Id",3,38;"H.Identifier",8,"Test_058_P1";"H.Result",3,1;"H.ProcessNo",3,750;"H.NioBits",3,0;"H.IsMaster",3,0;"H.SetAddData",3,0;}
group for the bottom-up scenario: one SetNextStation telegram for each sub-part and a closing telegram for the group. Notice the Result=-1 (not specified) and Target=0 that tells the assembly line service to use bottom-up logic
#1{"Order",8,"SetNextStation";"Id",3,55;"H.Identifier",8,"Test_058_G";"H.ProcessNo",3,281;"H.IsMaster",3,1;"H.TargetIdx",3,0;"H.SetAddData",3,0;}
Request
Parameter | mandatory | Description |
---|---|---|
|
x |
ID of the work part or group |
|
Identifier type |
|
|
Target of the active processing step which should be used
as next processing step. |
|
|
Processing result of the process |
|
|
Bits indicating the processing errors |
|
|
Process number |
|
|
Line number of the requesting station |
|
|
Station number of the requesting station |
|
|
Station index of the requesting station |
|
|
Functional unit number of the requesting station |
|
|
Work position of the requesting station |
|
|
State of the work part |
|
|
x |
Indicates whether the message has additional binary data |
|
Number of work parts the group contains |
|
|
Identifier of the sub part. |
|
|
Position of the sub part inside the group |
|
|
State of the sub part |
|
|
Result of the sub part |
|
|
NioBits of the SubPart |
|
|
Explicit target index for the sub part |
|
|
Additional data specified as name value pairs (<VarName> is the name of the additional data information) |
Response
Parameter | Description |
---|---|
|
Return value of the command |
|
If the command has not been executed successful, this parameter contains additional information about the error. |
GetNextStation
Description
This command returns the information about the part and the information about the next process or station that must be executed for this work part.
Telegram Examples
#1{"Order",8,"GetNextStation";"Id",3,4;"H.Identifier",8,"Test_003";"H.LineNo",3,1213;"H.GetAddData",3,0;}
Request
Parameter | mandatory | Description |
---|---|---|
|
x |
ID of the work part or group |
|
Identifier type |
|
|
Line number |
|
|
x |
Binary data information should be returned |
Response
Parameter | Description |
---|---|
|
Return value of the command |
|
If the command has not been executed successful, this parameter contains additional information about the error. |
|
Number of the process which should applied on the work part. |
|
Station number of the location which should process the work part. |
|
Station index of the location which should process the work part. |
|
Function unit number of the location which should process the work
part. |
|
Working position of the location which should process the work part. |
|
Processing result of the last process |
|
NOK bits set by the last process |
|
Type number of the work part |
|
Type version of the work part |
|
Batch ID of the work part |
|
Production context of the work part |
|
State of the work part |
|
File name which should be used when writing result data information to dat files. |
|
ID of the production lot |
|
Number of work parts inside the group |
|
Additional data value with name xxx |
|
Identifier of the sub part |
|
Position of the sub part inside the group |
|
State of sub part |
|
Last processing result for the sub part |
|
NOK bits for the sub part |
|
Number of the process which should applied on the sub part |
|
Number of the process which last applied on the sub part |
GetLastStation
Description
This command is almost identical to the GetNextStation
command, except it will also return the information about the last executed process (incl. the location). This information is vital for
rework / analysis station to be able to interpret the processing result and NOK bits correctly.
Telegram Examples
#1{"Order",8,"GetLastStation";"Id",3,69;"H.Identifier",8,"Test_058_G";"H.IsMaster",3,1;"H.LineNo",3,1213;"H.GetAddData",3,0;}
Request
Parameter | mandatory | Description |
---|---|---|
|
x |
ID of the work part or group |
|
Identifier type |
|
|
Line number |
|
|
x |
Binary data information should be returned |
Response
Parameter | Description |
---|---|
|
Return value of the command |
|
If the command has not been executed successful, this parameter contains additional information about the error. |
|
Number of the process which should applied on the work part. |
|
Station number of the location which should process the work part. |
|
Station index of the location which should process the work part. |
|
Function unit number of the location which should process the work
part. |
|
Working position of the location which should process the work part. |
|
Function unit number of the last location |
|
Station number of the last location |
|
Station index of the last location |
|
Function unit number of the last location |
|
Working position of the last location |
|
Processing result of the last process |
|
NOK bits set by the last process |
|
Type number of the work part |
|
Type version of the work part |
|
Batch ID of the work part |
|
Production context of the work part |
|
State of the work part |
|
File name which should be used when writing result data information to dat files. |
|
ID of the production lot |
|
Number of work parts inside the group |
|
Additional data value with name xxx |
|
Identifier of the sub part |
|
Position of the sub part inside the group |
|
State of sub part |
|
Last processing result for the sub part |
|
NOK bits for the sub part |
|
Number of the process which should applied on the sub part |
|
Number of the process which last applied on the sub part |
GetProcessReleaseInfo
Description
This command is used to return the information if the part could be processed by the requesting process (or station).
The vMDT server will check if the requesting process matches with the process which should be next for
the part according the route list.
In addition to this the command will also check the state of the part. The production release will only be
granted for parts which have OK
state. For all other parts, the production release will be denied. For parts which
are in the IN_PROCESSING
state, the command will set that part to NOK
and move it to the NOK
target of the
process which will be stored as next processing target. For such parts, the requesting process will receive
H.PartForStation
set to false
, and the H.NextProcessNo
will contain the process number of the NOK
target.
If the production release is requested for a group, the release condition checks will be applied to the member
parts of the group as well as for the group itself. In addition to this, the command will also check the constraints
for the maximum allowed NOK
or SCRAPED
members.
Telegram Examples
#1{"Order",8,"GetProcessReleaseInfo";"ID",3,7;"H.Identifier",8,"Test_045_001";"H.GetAddData",3,0;"H.ProcessNo",3,451;"H.IsMaster",3,0;}
Request
Parameter | mandatory | Description |
---|---|---|
|
x |
ID of the work part or group |
|
Identifier type |
|
|
Process number |
|
|
Line number of the requesting station |
|
|
Station number of the requesting station |
|
|
Station index of the requesting station |
|
|
Functional unit number of the requesting station |
|
|
Work position of the requesting station |
|
|
x |
Binary data information should be returned |
Response
Parameter | Description |
---|---|
|
Return value of the command |
|
If the command has not been executed successful, this parameter contains additional information about the error. |
|
Production release flag |
|
Number of the process which should applied on the work part. |
|
Station number of the location which should process the work part. |
|
Station index of the location which should process the work part. |
|
Function unit number of the location which should process the work
part. |
|
Working position of the location which should process the work part. |
|
Processing result of the last process |
|
NOK bits set by the last process |
|
Type number of the work part |
|
Type version of the work part |
|
Batch ID of the work part |
|
Production context of the work part |
|
State of the work part |
|
File name which should be used when writing result data information to dat files. |
|
ID of the production lot |
|
Number of work parts inside the group |
|
Additional data value with name xxx |
|
Identifier of the sub part |
|
Position of the sub part inside the group |
|
State of sub part |
|
Last processing result for the sub part |
|
NOK bits for the sub part |
|
Number of the process which should applied on the sub part |
SetPartState
Description
This command will be typically executed after the requesting the production release (with commands like
GetNextStation
, GetLastStation
or GetProcessReleaseInfo
). It changes the part state in the Line Control
dataset. Setting the part state is not coupled with the information which will be the next process for processing
the part. Therefore the location / process information inside the request will be used for logging purposes
(history entry) only.
The command is group processing aware. You can run the command using the normal group processing
scenarios (standard top down or bottom up). The decision which scenario should be executed is based on the
data sent with the command call:
• Standard: H.IsMaster = 1
and D.SubParts
is available
• Top down: H.IsMaster = 1
and D.SubParts
is not available
• Bottom up: For all sub parts the SetPartState
command must be sent (with H.IsMaster = 0
).
After all sub parts have been altered, the SetPartState
command for the group must be sent
with H.IsMaster = 1
and no H.PartState
(or H.PartState = -1
).
Telegram Examples
--Single Part
#1{"Order",8,"SetPartState";"Id",3,1;"H.Identifier",8,"";"H.PartState",3,-1;"H.ProcessNo",3,-1;}
-- Group
#1{"Order",8,"SetPartState";"Id",3,1;"H.Identifier",8,"";"H.IsMaster",3,0;"H.PartState",3,-1;"H.ProcessNo",3,-1;"H.Count",3,0;"D.SubPart[0].Pos",3,0;"D.SubPart[0].PartState",3,-1;"D.SubPart[1].Pos",3,0;"D.SubPart[1].PartState",3,-1;"D.SubPart[2].Pos",3,0;"D.SubPart[2].PartState",3,-1;"D.SubPart[3].Pos",3,0;"D.SubPart[3].PartState",3,-1;}
Request
Parameter | mandatory | Description |
---|---|---|
|
x |
ID of the work part or group |
|
Identifier type |
|
|
Process number |
|
|
Line number of the requesting station |
|
|
Station number of the requesting station |
|
|
Station index of the requesting station |
|
|
Functional unit number of the requesting station |
|
|
Work position of the requesting station |
|
|
x |
State of the work part |
|
x |
Number of elements inside the SubPart array (the array is 0-based) |
|
Position of the sub part inside the group |
|
|
State of the sub part |
Response
Parameter | Description |
---|---|
|
Return value of the command |
|
If the command has not been executed successful, this parameter contains additional information about the error. |
ReplaceRouteList
Description
This command is typically used by a rework station. It changes the route list for the work part and also sets the
next process as with the command SetStation
. It is important to note here that both processes \ locations
(H.ProcessNo
, H.NextProcessNo
, H.StationNo
, H.NextStatNo
, …) must actually be present in the
new route list.
There will be no check if the current station / process of the active processing step are equal with the location /
process sent by the station.
If the route list for a group must be changed, you have two options to specify the target for the sub parts of the
group.
Using the first option, the client must send for all sub parts the next / last processing step. Only if the information
has been sent for all sub parts the command will accept the input. If one sub part is left out, an error will be
returned.
The second option can be used if all parts should be set to the same target like the group. In this case, the
specification of the sub part targets could be left out. Line Control will use in this case the next / last
processing step of the group for the sub parts as well.
The state of the part itself will not be altered by this command. This ensures that NOK (sub) parts / groups will
remain NOK. Because the new targets have been specified, it could happen, that (sub) parts which are
previously encoded to the rework station could no be set to a "normal" process. The design of the application
should take this behavior in account to avoid problems in the line.
Telegram Examples
--Single Part
#1{"Order",8,"ReplaceRouteList";"Id",3,4;"H.Identifier",8,"Test_055";"H.ProcessNo",3,900;"H.RouteList",8,"TDP_3";"H.NextProcessNo",3,299;"H.IsMaster",3,0;}
-- Group
#1{"Order",8,"ReplaceRouteList";"Id",3,4;"H.Identifier",8,"Test_055";"H.ProcessNo",3,900;"H.RouteList",8,"TDP_3";"H.NextProcessNo",3,299;"H.IsMaster",3,1;}
Request
Parameter | mandatory | Description |
---|---|---|
|
x |
ID of the work part or group |
|
Identifier type |
|
|
Process number |
|
|
Line number of the requesting station |
|
|
Station number of the requesting station |
|
|
Station index of the requesting station |
|
|
Functional unit number of the requesting station |
|
|
Work position of the requesting station |
|
|
x |
Name of the new route list |
|
Order number of an order that is associated with a valid route list. |
|
|
New value for the next process number |
|
|
New value for the next station number |
|
|
New value for the next station index |
|
|
New value for the next function unit number |
|
|
New value for the next working position number |
|
|
Number of elements inside the SubPart array (the array is 0-based) |
|
|
Position of the sub part inside the panel / group |
|
|
Overrides the next process number for the sub part |
|
|
Overrides the last process number for the sub part |
Response
Parameter | Description |
---|---|
|
Return value of the command |
|
If the command has not been executed successful, this parameter contains additional information about the error. |
RenameIdentifier
Description
This command changes the identifier for a work part. After the command has been executed, the work can only
be accessed using the new identifier. Examples of applications for this are a turntable or a conversion to a new
work piece carrier.
If the flag H.CreateEmptyWpc
is set to 1, the values for H.EmptyWpcRouteList
and
H.EmptyWpcRouteList
must be set in the telegram to values existing in the database.
Telegram Examples
#1{"Order",8,"RenameIdentifier";"Id",3,14;"H.Identifier",8,"Test_018";"H.NewIdentifier",8,"Test_018_new";"H.LineNo",3,1213;"H.StatNo",3,20;"H.StatIdx",3,1;"H.FuNo",3,1;"H.WorkPos",3,1;"H.CreateEmptyWpc",3,0;"H.EmptyWpcTargetIdx",3,1;"H.EmptyWpcRouteList",8,"TDP_4";}
Request
Parameter | mandatory | Description |
---|---|---|
|
x |
ID of the work part or group |
|
x |
New ID of the work part / group. |
|
Identifier type |
|
|
Process number |
|
|
Line number of the requesting station |
|
|
Station number of the requesting station |
|
|
Station index of the requesting station |
|
|
Functional unit number of the requesting station |
|
|
Work position of the requesting station |
|
|
x |
Specifies if a new vMDT dataset for the empty work piece carrier (WPC) should be created. |
|
x |
Route list for the empty work piece carrier. |
|
x |
Target index for the empty work piece carrier. |
Response
Parameter | Description |
---|---|
|
Return value of the command |
|
If the command has not been executed successful, this parameter contains additional information about the error. |
AddPartToGroup
Description
This command is used to add a part to an existing group. In the telegram the client must specify the
identifier of the part and the identifier of the group to which the part is to be added. If the part being added does
not exist in the database, the command will try to create it (the client must send all the necessary details so as
specified for the command CreateVmdt
)
In the telegram the client can also specify a position inside the group for the new member. If such a position is
not specified, Line Control will assign the part to the next available position in the group. If a position is specified, this
must be not occupied yet by another sub part, otherwise Line Control will raise an error.
The following table lists the parameter for the command.
Some of these parameters are only used when the part being added does not exists in the database yet (i.e.
when the command also creates the part).
Remarks
The part being added must satisfy two conditions:
• It must be on the same route list as the group to which it is being added
• (If the parameter H.CheckSameProcess = 1
) It must be on the same process as the group
If these conditions are not satisfied, Line Control will raise an error.
Telegram Examples
Adds an existing part to an existing group
#1{"Order",8,"AddPartToGroup";"Id",3,20;"H.Identifier",8,"Test_080_P";"H.IdentifierType",3,0;"H.LineNo",3,1213;"H.ParentIdentifier",8,"Test_060_000";"H.ParentIdentifierType",3,1;"H.CheckSameProcess",3,1;"H.Pos",3,6;}
Request
Parameter | mandatory | Description |
---|---|---|
|
x |
ID of the work part or group |
|
Identifier type of the part that is being added. For standard scenarios, this is usually 0 (i.e. sub parts). The parameter can be omitted, in which case it will always be zero. |
|
|
x |
Identifier of the Group-Part (i.e. the master) of the group to which the part is to be added. |
|
Identifier of the group-part (the master) of the group to which the part is to be added. For standard scenarios, this field will always have the value 1 (which is the master, for normal parts). It can thus be omitted. |
|
|
Position inside the group for the part. If this parameter is omitted, Line Control will assign the first available position. |
|
|
If |
|
|
This Parameter is ignored if the part to be added already exists |
|
|
This Parameter is ignored if the part to be added already exists |
|
|
This Parameter is ignored if the part to be added already exists |
|
|
This Parameter is ignored if the part to be added already exists |
|
|
This Parameter is ignored if the part to be added already exists |
|
|
This Parameter is ignored if the part to be added already exists |
|
|
This Parameter is ignored if the part to be added already exists |
|
|
This Parameter is ignored if the part to be added already exists |
|
|
This Parameter is ignored if the part to be added already exists |
|
|
This Parameter is ignored if the part to be added already exists |
|
|
This Parameter is ignored if the part to be added already exists |
|
|
This Parameter is ignored if the part to be added already exists |
|
|
This Parameter is ignored if the part to be added already exists |
|
|
This Parameter is ignored if the part to be added already exists |
|
|
State of the work part |
|
|
This Parameter is ignored if the part to be added already exists |
|
|
This Parameter is ignored if the part to be added already exists |
|
|
This Parameter is ignored if the part to be added already exists |
|
|
This Parameter is ignored if the part to be added already exists |
|
|
This Parameter is ignored if the part to be added already exists |
|
|
Additional data specified as name value pairs (<VarName> is the name of the additional data information) |
Response
Parameter | Description |
---|---|
|
Return value of the command |
|
If the command has not been executed successful, this parameter contains additional information about the error. |
RemovePartFromGroup
Description
This command removes a single part from a group. The telegram must contain the identifier of the part that is to
be removed. The part is removed from the group, but not deleted. The master’s additional data is also copied to
part before removing it from the group.
Remarks:
The telegram specifies only the part that is to be removed. The group is implied from the values in the database:
The ParentIdentifier for the part (if any exists) is the group from which the part will be removed.
If the part does not belong to any group, no error will be raised.
Telegram Examples
#1{"Order",8,"RemovePartFromGroup";"Id",3,1;"H.Identifier",8,"Part_01";"H.IdentifierType",3,0;}
Request
Parameter | mandatory | Description |
---|---|---|
|
x |
ID of the work part that is to be removed from the group. |
|
Identifier type of the part that is being removed. |
Response
Parameter | Description |
---|---|
|
Return value of the command |
|
If the command has not been executed successful, this parameter contains additional information about the error. |
SetHeaderVar
Description
This command overrides the content of a single header variable of a Line Control dataset. Only the variables listed
below can be changed. Changing the content of a header item of a group will not be propagated to the group
members. The client has the responsibility to call this command on the group’s parts.
The client has to identify itself by sending its process number (or location). The process must be contained in
the specified route list, but it is not required that the client be the next process.
If the client sends a location only, this location must be mapped to a process which is part of the route list.
Telegram Examples
#1{"Order",8,"SetHeaderVar";"Id",3,3;"H.Identifier",8,"Test_052";"H.IsMaster",3,0;"H.ProcessNo",3,700;"H.VarName",8,"H.TypeNo";"H.StringValue",8,"2222222222";"H.IntValue",3,0;"H.RealValue",4,0;}
Request
Parameter | mandatory | Description |
---|---|---|
|
x |
ID of the work part or group |
|
Identifier type |
|
|
Process number |
|
|
Line number of the requesting station |
|
|
Station number of the requesting station |
|
|
Station index of the requesting station |
|
|
Functional unit number of the requesting station |
|
|
Work position of the requesting station |
|
|
x |
Name of the variable which should be changed. |
|
New value of an INTEGER variable. |
|
|
New value of the STRING variable. |
|
|
New value of the REAL variable. |
Response
Parameter | Description |
---|---|
|
Return value of the command |
|
If the command has not been executed successful, this parameter contains additional information about the error. |
It is not possible to change all variables inside the vMDT dataset header. The new value of the variable which
should be changed must be stored in relation to its data type either in H.IntValue
, H.StringValue
or
H.RealValue
.
The following table lists the values that are allowed for the telegram’s parameter H.VarName
along with the type
parameter that must be provided. Note that each VarName’s value must start with H.
(H followed by a dot).
H.Varname | H.IntValue | H.StringValue | H.RealValue |
---|---|---|---|
H.PartState |
x |
||
H.WorkingCode |
x |
||
H.TypeNo |
x |
||
H.TypeVar |
x |
||
H.Charge |
x |
||
H.ResFileName |
x |
MovePartToStock
Description
This command puts the part with Identifier specified in the Identifier field in stock. If the attribute
Stock\renameBeforeMoving
is set to 1 in the uploaded configuration VmdtServer.config.xml
, the part is renamed to the value
specified in StockIdentifier when moving.
When moving a group to stock, subParts are not moved to stock.
If the attribute Stock\isSupermarket
is set to 1 in the uploaded VmdtServer.config.xml
, the part is moved to the Line
Control supermarket instead of the local stock. In case of groups, the entire group if moved to supermarket.
Setting both Stock\isSupermarket
and Stock\renameBeforeMoving
to 1 is not supported.
Telegram Examples
#1{"Order",8,"MovePartToStock";"Id",3,9;"H.Identifier",8,"Test_003";"H.StockIdentifier",8,"Test_003_Stock";"H.LineNo",3,1213;"H.StatNo",3,250;"H.StatIdx",3,1;"H.FuNo",3,1;"H.WorkPos",3,1;}
Request
Parameter | mandatory | Description |
---|---|---|
|
x |
ID of the work part or group to be moved to stock |
|
Identifier after moving to Stock
If |
|
|
Line number of the requesting station |
|
|
Station number of the requesting station |
|
|
Station index of the requesting station |
|
|
Functional unit number of the requesting station |
|
|
Work position of the requesting station |
Response
Parameter | Description |
---|---|
|
Return value of the command |
|
If the command has not been executed successful, this parameter contains additional information about the error. |
MovePartFromStock
Description
This command moves the part with the Id specified in H.StockIdentifier
from stock. If the
Stock\renameBeforeMoving
attribute is set to 1 in the uploaded VmdtServer.config.xml
, the part is renamed to the value
specified in H.Identifier
when moving.
Telegram Examples
#1{"Order",8,"MovePartFromStock";"Id",3,11;"H.StockIdentifier",8,"Test_041";"H.Identifier",8,"Test_041";"H.LineNo",3,1213;"H.StatNo",3,10;"H.StatIdx",3,1;"H.FuNo",3,1;"H.WorkPos",3,1;}
Request
Parameter | mandatory | Description |
---|---|---|
|
x |
ID of the work part after moved from stock. |
|
Identifier to be moved from stock.
If |
|
|
Line number of the requesting station |
|
|
Station number of the requesting station |
|
|
Station index of the requesting station |
|
|
Functional unit number of the requesting station |
|
|
Work position of the requesting station |
Response
Parameter | Description |
---|---|
|
Return value of the command |
|
If the command has not been executed successful, this parameter contains additional information about the error. |
ResetCounterValue
Description
This command resets the value of counter to minimum. When this command is sent, a counter number is reset for the corresponding line. If a lower limit has been configured, then the counter is reset to that value.
Telegram Examples
#1{"Order",8,"ResetCounterValue";"Id",3,1;"H.LineNo",3,1213;"H.CounterNo",3,1;}
Request
Parameter | mandatory | Description |
---|---|---|
|
x |
Line number of the requested counter |
|
x |
Number of the counter for which the value has to be reset. |
Response
Parameter | Description |
---|---|
|
Return value of the command |
|
If the command has not been executed successful, this parameter contains additional information about the error. |
GetCounterValue
Description
With this command, the server returns a serial number. A counter number (CounterNo) must be sent to the server for the request. Each counter number is associated with a sequential number (CounterValue) which is then returned as CounterValue. The range of consecutive numbers can be limited via configuration.
The counter’s value will be automatically increased with each call to this command.
Telegram Examples
#1{"Order",8,"GetCounterValue";"Id",3,1;"H.LineNo",3,1213;"H.CounterNo",3,123;}
Request
Parameter | mandatory | Description |
---|---|---|
|
x |
Line number |
|
x |
Number of the counter which should be used |
Response
Parameter | Description |
---|---|
|
Return value of the command 0 - Command has been executed with no errors <> 0 - Command was not executed successful |
|
If the command has not been executed successful, this parameter contains additional information about the error. |
|
Current value of the counter |
Diagnostic
Description
This command is used for diagnosing whether the server is present.
Telegram Examples
#1{"Order",8,"OrderState";"Id",3,4;"H.OrderState",3,0;"H.OrderErrorText",8,"";}
Request
Parameter | mandatory | Description |
---|---|---|
The request does not contain any parameters. |
Response
Parameter | Description |
---|---|
|
Return value of the command |
|
If the command has not been executed successful, this parameter contains additional information about the error. |
GetProductionJob
Description
This command is called to check whether a part can be used and which of the sub-parts
are ready for production.If MacroName is provided in the input then macro will be executed.If the main part is locked, the sub-parts should not be processed. If a sub-part is locked, the other sub-parts can
be processed.
Request
Parameter | Mandatory | Description |
---|---|---|
|
||
|
x |
Unique identifier |
|
x |
True for group identifier |
|
Name of macro to be executed |
|
|
x |
The ProcessDetails object has the following attribute :
|
|
x |
The RequestDetails object has the following attribute :
|
|
Response
Parameter | Description |
---|---|
|
|
|
The ProductionJob object has the following attributes :
|
|
The out variables can be set by the macro to pass results back to the caller. |
GetAdditionalData
Description
This command is used to request from the LineControl database all currently stored additional data relating to a workpiece. The additional data is always stored as key-value pairs.Values can be: Scalar sizes, Fields of scalar sizes (Arrays) and complex data types (Struct) as well as Fields of complex data types (Array of Struct).
Request
Parameter | Mandatory | Description |
---|---|---|
|
x |
Unique identifier |
|
True for group identifier |
Response
Parameter | Description |
---|---|
|
SetAdditionalData
Description
The command SetAdditionalData is used to store additional data in the form of key-value pairs for a workpiece in the LineControl database.The following data types are possible: Scalar data types, Fields of scalar data types, and complex data types (struct), as well as fields of complex data types (array of struct).
Request
Parameter | Mandatory | Description |
---|---|---|
|
x |
Unique identifier |
|
True for group identifier |
Response
Parameter | Description |
---|---|
|
GetCharacterAdditionalData
Description
This command is used to download the large additional character data (CLOBs) for a part that was uploaded via SetCharacterAdditionalData.
For the specified part, LineControl retrieves the LargeCharacterAdditionalData (if any) with the specified name(s).LineControlAccess returns the character block.
Request
Parameter | mandatory | Description |
---|---|---|
|
X |
It specifies the part identifier and the identifier type of the owning part object. |
|
It is an array of names. One for each binary CLOB that’s to be retrieved. It is defined as follows: { Name: string, Value: char[]}. The property Name contains the name assigned to the CLOB; the property value contains the character payload. |
|
|
If the method is called on the LineControlCoordinator, it gives the target LineControl on which the character data is to be uploaded. |
Response
Parameter | Description |
---|---|
|
It is an array of objects. The BlobClobDataArray (CharacterAdditionalDataItem) is specified as follows: { Name: string, Value: char[]}. The Name is the key used for retrieving the data (same as for the standard additional data), and the property value contains the actual character data. |
GetBinaryAdditionalData
Description
The command GetBinaryAdditionalData retrieves large binary data (BLOB) from the LineControl database.
These are binary data that have been uploaded previously via SetBinaryAdditionalData.
Request
Parameter | mandatory | Description |
---|---|---|
|
X |
It specifies the part identifier and the identifier type of the owning part object. |
|
It is an array of names. One for each binary BLOB that’s to be retrieved.It is defined as follows: { Name: string, Value: byte[]}. The property Name contains the name assigned to the BLOB; the property value contains the binary payload. |
|
|
If the method is called on the LineControlCoordinator, it gives the target LineControl on which the binary data is to be uploaded. |
Response
Parameter | Description |
---|---|
|
It is an array of objects. The BlobClobDataArray (BinaryAdditionalDataItem) is specified as follows: { Name: string, Value: byte[]}. The Name is the key used for retrieving the data (same as for the standard additional data), and the property value contains the actual binary data. |
GetPart
Description
The GetPart command can return information about the main part and its sub-parts based on the specified part ID.
Request
Parameter | mandatory | Description |
---|---|---|
|
X |
The identifier of the part for which information is to be returned. |
Response
Parameter | Description |
---|---|
|
The Part object has the following attributes : |
|
It is an array which contains information about the sub-parts. |
SetBinaryAdditionalData
Description
This command is used to upload the large additional binary data (BLOBs) of a part.
The input is an array of name-value pairs, where the name property specifies the name that LineControl uses for the additional data element (as with the standard additional data)
and the value is a Base64 representation of the actual binary block.
Request
Parameter | Mandatory | Description |
---|---|---|
|
X |
It specifies the part identifier and the identifier type of the owning part object. |
|
It is an array of BinaryAdditionalDataItem objects. The class BinaryAdditionalDataItem is specified as follows: { Name: string, Value: byte[]}. The Name is the key used for retrieving the data (same as for the standard additional data), and the property value contains the actual binary data. |
|
|
If the method is called on the LineControlCoordinator, it gives the target LineControl on which the binary data is to be uploaded. |
SetCharacterAdditionalData
Description
This command is used to upload the large additional character data (CLOBs) of a part.
The input is an array of name-value pairs, where the name property specifies the name that LineControl uses for the additional data element (as with the standard additional data),
and the value is a (long) character string.
Request
Parameter | Mandatory | Description |
---|---|---|
|
X |
It specifies the part identifier and the identifier type of the owning part object. |
|
It is an array of CharacterAdditionalDataItem objects. The class CharacterAdditionalDataItem is specified as follows: { Name: string, Value: char[]}. The Name is the key used for retrieving the data (same as for the standard additional data), and the property value contains the actual binary data. |
|
|
If the method is called on the LineControlCoordinator, it gives the target LineControl on which the binary data is to be uploaded. |
MovePartToSupermarket
Method | Resource | Route | Parameters (Request body) | Parameters (Query) | Return Codes |
---|---|---|---|---|---|
POST |
/movePartToSupermarket |
/api/v1/commands/movePartToSupermarket |
(query) supermarketName (query) partIds |
200, 400, 401, 403, 500 |
Description
With the command MovePartToSupermarket it is possible to transfer a part from a Line Assembly DB to a Supermarket DB.
The complete part record is moved, including all additional data, timer data, counter data as well as identifier mapping data.
the command is capable of moving a list of parts to the Supermarket DB. The parts data is stored in a named supermarket (given by parameter: supermarketName).
If you are moving a group part, it is ensured that complete group is moved to the Supermarket DB.
Telegram Examples
-
Request:
{
"supermarketName": "string",
"partIds": [
{
"identifier": "string",
"identifierType": 0
}
]
}
-
Response: 200 in case of success
MovePartFromSupermarket
Method | Resource | Route | Parameters (Request body) | Parameters (Query) | Return Codes |
---|---|---|---|---|---|
POST |
/movePartFromSupermarket |
/api/v1/commands/movePartFromSupermarket |
(query) supermarketName (query) partIds |
200, 201, 204, 401, 403, 404, 500 |
Description
The command MovePartFromSupermarket is used to transfer a part from a Supermarket DB to a Line Assembly DB.
As with MovePartToSupermarket, the complete data record is transferred. The data in the source (given in the parameter name supermarketName) is deleted and stored Line Assembly DB of the corresponding Line Assembly instance.
IN addition to this, the parts Route List and the position within the Route List can be specified with the parameters routeListName, nextProcessNo and nextLocation.
Telegram Examples
-
Request:
{
"supermarketName": "string",
"partDetails": [
{
"identifier": "string",
"identifierType": 0,
"transportId": "string",
"routeListName": "string",
"nextProcessNo": 0,
"nextLocation": {},
"orderNo": "string"
}
]
}
-
Response: 200 in case of success
Execute
Method | Resource | Route | Parameters (Request body) | Parameters (Query) | Return Codes |
---|---|---|---|---|---|
POST |
/execute |
/api/v1/commands/execute |
(query) macorName (query) location (query) inVariablesDictionaries |
200, 400, 401, 403 |
Description
A macro can be executed with the Execute command.
The execution of the macro is not subject to the context of a work part as with the ProcessEnd and ProcessRequest commands,
but has no context whatsoever.
Telegram Examples
-
Request:
{
"macroName": "string",
"location": "97337100154843707901649999660",
"inVariablesDictionaries": {
"scalarVariableDetailsDictionary": {
"additionalProp1": {
"direction": "In",
"persistenceName": "string",
"value": "string"
},
"additionalProp2": {
"direction": "out",
"persistenceName": "string",
"value": "string"
},
"additionalProp3": {
"direction": "In_Out",
"persistenceName": "string",
"value": "string"
}
},
"scalarArrayVariableDetailsDictionary": {
"additionalProp1": {
"direction": "In",
"persistenceName": "string",
"value": [
"string"
]
},
"additionalProp2": {
"direction": "In",
"persistenceName": "string",
"value": [
"string"
]
},
"additionalProp3": {
"direction": "In",
"persistenceName": "string",
"value": [
"string"
]
}
},
"structVariableDetailsDictionary": {
"additionalProp1": {
"direction": "In",
"persistenceName": "string",
"value": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
},
"additionalProp2": {
"direction": "In",
"persistenceName": "string",
"value": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
},
"additionalProp3": {
"direction": "In",
"persistenceName": "string",
"value": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
}
},
"structArrayVariableDetailsDictionary": {
"additionalProp1": {
"direction": "In",
"persistenceName": "string",
"value": [
{
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
]
},
"additionalProp2": {
"direction": "In",
"persistenceName": "string",
"value": [
{
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
]
},
"additionalProp3": {
"direction": "In",
"persistenceName": "string",
"value": [
{
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
]
}
}
}
}
-
Response: 200 in case of success
ProcessEnd
Method | Resource | Route | Return Codes |
---|---|---|---|
POST |
/processEnd |
/api/v1/commands/processEnd |
200, 201, 204, 401, 403, 404, 500 |
Description
The command ProcessEnd is normally called after editing a part. This informs LineControl whether or not the
part has successfully gone through the process. Based on this information, the part is forwarded to the next
process in accordance with the route list within the context of the call of ProcessEnd. ProcessEnd is used for
three different purposes, differentiated by the value of the ActionCode parameter.
-
0: Set part to next position in the route list (i.e. relaying or further coding)
-
1: Create a part
-
2: Delete part
If a macro is to be executed as part of the command ProcessEnd, the macro name can be provided in the parameter macroName.
Telegram Examples
-
Request:
{
"identifier": "string",
"inVariablesDictionaries": {
"scalarVariableDetailsDictionary": {
"additionalProp1": {
"direction": "In",
"persistenceName": "string",
"value": "string"
},
"additionalProp2": {
"direction": "In",
"persistenceName": "string",
"value": "string"
},
"additionalProp3": {
"direction": "In",
"persistenceName": "string",
"value": "string"
}
},
"scalarArrayVariableDetailsDictionary": {
"additionalProp1": {
"direction": "In",
"persistenceName": "string",
"value": [
"string"
]
},
"additionalProp2": {
"direction": "In",
"persistenceName": "string",
"value": [
"string"
]
},
"additionalProp3": {
"direction": "In",
"persistenceName": "string",
"value": [
"string"
]
}
},
"structVariableDetailsDictionary": {
"additionalProp1": {
"direction": "In",
"persistenceName": "string",
"value": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
},
"additionalProp2": {
"direction": "In",
"persistenceName": "string",
"value": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
},
"additionalProp3": {
"direction": "In",
"persistenceName": "string",
"value": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
}
},
"structArrayVariableDetailsDictionary": {
"additionalProp1": {
"direction": "In",
"persistenceName": "string",
"value": [
{
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
]
},
"additionalProp2": {
"direction": "In",
"persistenceName": "string",
"value": [
{
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
]
},
"additionalProp3": {
"direction": "In",
"persistenceName": "string",
"value": [
{
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
]
}
}
},
"isMaster": true,
"macroName": "string",
"processDetails": {
"location": "string",
"stationInfo": "string",
"processNo": 0,
"typeNo": "string",
"typeVar": "string",
"extensionData": {}
},
"resHead": {
"result": 0,
"typeNo": "string",
"typeVar": "string",
"typeVersion": "string",
"workingCode": 0,
"identifier": "string",
"nioBits": 0,
"pos": 0,
"batch": "string",
"subParts": [
"string"
],
"targetIdx": 0,
"partState": 0
},
"spcResults": [
{
"spcTestNo": 0,
"testSucceeded": true,
"sessionId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
],
"masterDeviceResults": [
{
"position": 0,
"name": "string",
"value": "string",
"result": 0,
"loLim": "string",
"upLim": "string",
"setValue": "string",
"checkType": 0,
"unit": "string",
"paaRelevance": 0
}
],
"createInfo": {
"routeList": "string",
"resFileName": "string",
"dataBlockSize": 0,
"orderNo": "string"
},
"actionCode": 0,
"requestDetails": {
"productFamily": "string",
"targetIndex": 0,
"blockSeverityThreshold": 0,
"partState": 0
},
"target": "string"
}
-
Response: 200 in case of success
ProcessRequest
Method | Resource | Route | Return Codes |
---|---|---|---|
POST |
/processRequest |
/api/v1/commands/processRequest |
200, 204, 401, 403, 404, 500 |
Description
The ProcessRequest command is always called by a production facility (a workstation) before a part is processed.
In addition to the identifier of the part, other important information is also provided.
Line Control can use this information to decide whether or not the part may pass through the production process of the
requesting production facility.
The criteria for this includes whether the requesting process, and therefore the requesting workstation,
is the correct next process according to the route list, and whether the part is blocked or not.
In addition, an expired timer could also cause a negative response to the processing request if the time between two processes is monitored by a timer.
It is also possible to incorporate information about blocked materials, blocked tools, blocked production processes or production facilities into the decision-making process.
The result of the decision is returned via the parameters
-
partForStation
-
toolState
-
materialState
-
processState
-
locationState
-
partState
Telegram Examples
-
Request:
{
"identifier": "string",
"isMaster": true,
"macroName": "string",
"target": "string",
"isSpecialDevice": true,
"components": [
"string"
],
"tools": [
"string"
],
"inVariables": {
"scalarVariableDetailsDictionary": {
"additionalProp1": {
"direction": "In",
"persistenceName": "string",
"value": "string"
},
"additionalProp2": {
"direction": "In",
"persistenceName": "string",
"value": "string"
},
"additionalProp3": {
"direction": "In",
"persistenceName": "string",
"value": "string"
}
},
"scalarArrayVariableDetailsDictionary": {
"additionalProp1": {
"direction": "In",
"persistenceName": "string",
"value": [
"string"
]
},
"additionalProp2": {
"direction": "In",
"persistenceName": "string",
"value": [
"string"
]
},
"additionalProp3": {
"direction": "In",
"persistenceName": "string",
"value": [
"string"
]
}
},
"structVariableDetailsDictionary": {
"additionalProp1": {
"direction": "In",
"persistenceName": "string",
"value": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
},
"additionalProp2": {
"direction": "In",
"persistenceName": "string",
"value": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
},
"additionalProp3": {
"direction": "In",
"persistenceName": "string",
"value": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
}
},
"structArrayVariableDetailsDictionary": {
"additionalProp1": {
"direction": "In",
"persistenceName": "string",
"value": [
{
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
]
},
"additionalProp2": {
"direction": "In",
"persistenceName": "string",
"value": [
{
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
]
},
"additionalProp3": {
"direction": "In",
"persistenceName": "string",
"value": [
{
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
]
}
}
},
"processDetails": {
"location": "string",
"stationInfo": "string",
"processNo": 0,
"typeNo": "string",
"typeVar": "string",
"extensionData": {}
},
"partData": {
"result": 0,
"typeNo": "string",
"typeVar": "string",
"typeVersion": "string",
"workingCode": 0,
"identifier": "string",
"nioBits": 0,
"pos": 0,
"batch": "string",
"subParts": [
"string"
],
"targetIdx": 0,
"partState": 0
},
"requestDetails": {
"productFamily": "string",
"targetIndex": 0,
"blockSeverityThreshold": 0,
"partState": 0
}
}
-
Response: 200 in case of success
{
"outVariables": {
"scalarVariableDetailsDictionary": {
"additionalProp1": {
"direction": "In",
"persistenceName": "string",
"value": "string"
},
"additionalProp2": {
"direction": "In",
"persistenceName": "string",
"value": "string"
},
"additionalProp3": {
"direction": "In",
"persistenceName": "string",
"value": "string"
}
},
"scalarArrayVariableDetailsDictionary": {
"additionalProp1": {
"direction": "In",
"persistenceName": "string",
"value": [
"string"
]
},
"additionalProp2": {
"direction": "In",
"persistenceName": "string",
"value": [
"string"
]
},
"additionalProp3": {
"direction": "In",
"persistenceName": "string",
"value": [
"string"
]
}
},
"structVariableDetailsDictionary": {
"additionalProp1": {
"direction": "In",
"persistenceName": "string",
"value": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
},
"additionalProp2": {
"direction": "In",
"persistenceName": "string",
"value": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
},
"additionalProp3": {
"direction": "In",
"persistenceName": "string",
"value": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
}
},
"structArrayVariableDetailsDictionary": {
"additionalProp1": {
"direction": "In",
"persistenceName": "string",
"value": [
{
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
]
},
"additionalProp2": {
"direction": "In",
"persistenceName": "string",
"value": [
{
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
]
},
"additionalProp3": {
"direction": "In",
"persistenceName": "string",
"value": [
{
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
]
}
}
},
"toolDetails": [
{
"identifier": "string",
"state": 0,
"counter": 0
}
],
"componentDetails": [
{
"matID": "string",
"state": 0
}
],
"workItemDetails": [
{
"identifier": "string",
"pos": 0,
"partForStation": true,
"state": 0,
"nextProcessNo": 0
}
],
"actionCode": 0,
"workPart": {
"partForStation": true,
"identifier": "string",
"changeOver": true,
"workingCode": 0,
"typeNo": "string",
"typeVar": "string",
"batch": "string",
"passThrough": true,
"nextProcessNo": 0,
"toolState": 0,
"materialState": 0,
"processState": 0,
"locationState": 0,
"spcTests": 0,
"delayTime": 0,
"partState": 0
}
}
ProcessRequestSupermarket
Method | Resource | Route | Return Codes |
---|---|---|---|
POST |
/processRequestSupermarket |
/api/v1/commands/processRequestSupermarket |
200, 204, 401, 403, 404, 500 |
Description
This command can be used to request the processing release for a work part that is currently stored in the supermarket DB.
Telegram Examples
-
Request:
{
"supermarket": "string",
"identifier": "string",
"isMaster": true,
"macroName": "string",
"target": "string",
"isSpecialDevice": true,
"components": [
"string"
],
"tools": [
"string"
],
"inVariables": {
"additionalProp1": {
"direction": "In",
"persistenceName": "string"
},
"additionalProp2": {
"direction": "In",
"persistenceName": "string"
},
"additionalProp3": {
"direction": "In",
"persistenceName": "string"
}
},
"processDetails": {
"location": "string",
"stationInfo": "string",
"processNo": 0,
"typeNo": "string",
"typeVar": "string",
"extensionData": {}
},
"partData": {
"result": 0,
"typeNo": "string",
"typeVar": "string",
"typeVersion": "string",
"workingCode": 0,
"identifier": "string",
"nioBits": 0,
"pos": 0,
"batch": "string",
"subParts": [
"string"
],
"targetIdx": 0,
"partState": 0
},
"requestDetails": {
"productFamily": "string",
"targetIndex": 0,
"blockSeverityThreshold": 0,
"partState": 0
}
}
-
Response: 200 in case of success
{
"outVariables": {
"scalarVariableDetailsDictionary": {
"additionalProp1": {
"direction": "In",
"persistenceName": "string",
"value": "string"
},
"additionalProp2": {
"direction": "In",
"persistenceName": "string",
"value": "string"
},
"additionalProp3": {
"direction": "In",
"persistenceName": "string",
"value": "string"
}
},
"scalarArrayVariableDetailsDictionary": {
"additionalProp1": {
"direction": "In",
"persistenceName": "string",
"value": [
"string"
]
},
"additionalProp2": {
"direction": "In",
"persistenceName": "string",
"value": [
"string"
]
},
"additionalProp3": {
"direction": "In",
"persistenceName": "string",
"value": [
"string"
]
}
},
"structVariableDetailsDictionary": {
"additionalProp1": {
"direction": "In",
"persistenceName": "string",
"value": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
},
"additionalProp2": {
"direction": "In",
"persistenceName": "string",
"value": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
},
"additionalProp3": {
"direction": "In",
"persistenceName": "string",
"value": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
}
},
"structArrayVariableDetailsDictionary": {
"additionalProp1": {
"direction": "In",
"persistenceName": "string",
"value": [
{
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
]
},
"additionalProp2": {
"direction": "In",
"persistenceName": "string",
"value": [
{
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
]
},
"additionalProp3": {
"direction": "In",
"persistenceName": "string",
"value": [
{
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
]
}
}
},
"toolDetails": [
{
"identifier": "string",
"state": 0,
"counter": 0
}
],
"componentDetails": [
{
"matID": "string",
"state": 0
}
],
"workItemDetails": [
{
"identifier": "string",
"pos": 0,
"partForStation": true,
"state": 0,
"nextProcessNo": 0
}
],
"actionCode": 0,
"workPart": {
"partForStation": true,
"identifier": "string",
"changeOver": true,
"workingCode": 0,
"typeNo": "string",
"typeVar": "string",
"batch": "string",
"passThrough": true,
"nextProcessNo": 0,
"toolState": 0,
"materialState": 0,
"processState": 0,
"locationState": 0,
"spcTests": 0,
"delayTime": 0,
"partState": 0
}
}
AddOrUpdateIdMapping
Method | Resource | Route | Parameters (Path) | Parameters (Query) | Return Codes |
---|---|---|---|---|---|
POST |
/AddOrUpdateIdmapping |
/api/v1/commands/addOrUpdateIdmapping |
(query) entryName (query) entryValue (query) addEntryName (query) addEntryValue |
200, 204, 404, 500 |
Description
This command is used to add or update id mapping.
The request body includes entryName, entryValue, addEntryName, addEntryValue. It uses entryName and entryValue to search out the Part which would add or update id mapping, and then uses addEntryName and addEntryValue to add or update id mapping. If adding or updating successfully, the response will be 200.
Telegram Examples
-
Request:
{
"entryName": "LineControlIdentifier",
"entryValue": "Identifier1",
"addEntryName": "WPC3",
"addEntryValue": "333"
}
-
Response: 200
CreateIdMapping
Method | Resource | Route | Parameters (Path) | Parameters (Query) | Return Codes |
---|---|---|---|---|---|
POST |
/createIdMapping |
/api/v1/commands/createIdMapping |
(query) identifier (query) identifierType (query) idMappings |
200, 204, 404, 500 |
Description
This command is used to create id mapping to a part responding to identifier and identifierType.
The request body includes identifier, identifierType, idMappings. Identifier and identifierType is used to search out which part to create id mapping. The parameter of idMappings is the id mappings to be created.
Telegram Examples
-
Request:
{
"identifier": "0507_091934_429_4",
"identifierType": 0,
"idMappings": {
"UniqueIdentifier":"{{$guid}}",
"WpcIdentifier": "WpcIdentifier_test4"
}
}
-
Response: 200
DeleteIdMapping
Method | Resource | Route | Parameters (Path) | Parameters (Query) | Return Codes |
---|---|---|---|---|---|
POST |
/DeleteIdMapping |
/api/v1/commands/deleteIdMapping |
(query) entryName (query) entryValue |
200, 204, 404, 500 |
Description
This command is used to delete id mapping by entryName and entryValue.
The parameter of entryName and entryValue can search out one part and will delete id mappings belonging to this part.
Telegram Examples
-
Request:
{
"entryName": "MappingReference1",
"entryValue": "mpr1"
}
-
Response: 200
GetMappedIdentifier
Method | Resource | Route | Parameters (Path) | Parameters (Query) | Return Codes |
---|---|---|---|---|---|
POST |
/GetMappedIdentfier |
/api/v1/commands/getMappedIdentfier |
(query) entryName (query) entryValue (query) entryToSearch |
200, 204, 404, 500 |
Description
This command is used to get mapped identifier by entryName and entryValue.
The parameter of entryName and entryValue can search out one part and the parameter of entryToSearch is used to get responding identifier.
Telegram Examples
-
Request:
{
"entryName": "LineControlIdentifier",
"entryValue": "0507_091934_429_3",
"entryToSearch": "ToolID"
}
-
Response:
{
"entryValue": "ToolID_test1"
}
GetMapping
Method | Resource | Route | Parameters (Path) | Parameters (Query) | Return Codes |
---|---|---|---|---|---|
POST |
/GetMapping |
/api/v1/commands/getMapping |
(query) entryName (query) entryValue |
200, 204, 404, 500 |
Description
This command is used to get mapping by entryName and entryValue.
The parameter of entryName and entryValue can search out one part. The response is a mapping list.
Telegram Examples
-
Request:
{
"entryName": "MappingReference1",
"entryValue": "mpr1"
}
-
Response:
{
"idMappingList": [
{
"idMappingId": "3D4AC241-BA8E-4A98-8850-93FB9CA1FC1D",
"partIdentifier": "9B815D81-145F-4B4D-A7BA-D722F34AEEB2",
"entryName": "LineControlIdentifier",
"entryValue": "0507_091934_429_3"
},
{
"idMappingId": "92510512-8523-4070-95ED-A8BB8242489B",
"partIdentifier": "9B815D81-145F-4B4D-A7BA-D722F34AEEB2",
"entryName": "SerialNumber",
"entryValue": "SerialNumber_test1"
},
{
"idMappingId": "393380FA-3209-4D16-9A83-6E874D59AA76",
"partIdentifier": "9B815D81-145F-4B4D-A7BA-D722F34AEEB2",
"entryName": "ToolID",
"entryValue": "ToolID_test1"
},
{
"idMappingId": "B2492A84-5EF2-492E-B62C-00521B36891A",
"partIdentifier": "9B815D81-145F-4B4D-A7BA-D722F34AEEB2",
"entryName": "UniqueIdentifier",
"entryValue": "0507_091934_429_3"
},
{
"idMappingId": "ECF70F76-0CD9-4867-942F-6A7806D569A9",
"partIdentifier": "9B815D81-145F-4B4D-A7BA-D722F34AEEB2",
"entryName": "WpcIdentifier",
"entryValue": "WpcIdentifier_test1"
}
]
}
RemoveIdMapping
Method | Resource | Route | Parameters (Path) | Parameters (Query) | Return Codes |
---|---|---|---|---|---|
POST |
/RemoveIdMapping |
/api/v1/commands/removeIdmapping |
(query) entryName (query) entryValue |
200, 204, 404, 500 |
Description
This command is used to remove id mapping by entryName and entryValue.
The parameter of entryName and entryValue can search out one part. The entryName should not be 'LineControlIndentifier', otherwise, it will remove failed.
Telegram Examples
-
Request:
{
"entryName": "UniqueIdentifier",
"entryValue": "9365e599-34fa-4c82-89bb-24d99a16e6e5"
}
-
Response: 200