In order to identify in our code which M172 model we are using we need to use the two (2) internal variables located in "Operators and blocks".
The variables are Par_POLI (Polycarbonate code) and sysMSK (Mask number).
If a M172 with 28IOs or 42IOs is connected then the variable "sysMSK" is equal to 596 then bits of "Par_POLI" help us to identify the model:
BIT1 BIT0 CONTROLLER
0 0 Undefined
0 1 28IOs
1 0 Undefined
1 1 42IOs
If a M172 with 07IOs or 18IOs is connected then the variable "sysMSK" is equal to 668 then bits of "Par_POLI" help us to identify the model:
BIT1 BIT0 CONTROLLER
0 0 Undefined
0 1 07IOs
1 0 Undefined
1 1 18IOs
So we can create the following logic on EcoStruxure Machine Expert HVAC in ST logic:
In the local variables
VAR
xIND_M172_07_IOs : BOOL;
xIND_M172_18_IOs : BOOL;
xIND_M172_28_IOs : BOOL;
xIND_M172_42_IOs : BOOL;
END_VAR
xIND_M172_07_IOs FALSE := Par_POLI.0 AND NOT Par_POLI.1 AND (sysMSK = 668);
xIND_M172_18_IOs TRUE := Par_POLI.0 AND Par_POLI.1 AND (sysMSK = 668);
xIND_M172_28_IOs FALSE := Par_POLI.0 AND NOT Par_POLI.1 AND (sysMSK = 596);
xIND_M172_42_IOs FALSE := Par_POLI.0 AND Par_POLI.1 AND (sysMSK = 596);
The variables are Par_POLI (Polycarbonate code) and sysMSK (Mask number).
If a M172 with 28IOs or 42IOs is connected then the variable "sysMSK" is equal to 596 then bits of "Par_POLI" help us to identify the model:
BIT1 BIT0 CONTROLLER
0 0 Undefined
0 1 28IOs
1 0 Undefined
1 1 42IOs
If a M172 with 07IOs or 18IOs is connected then the variable "sysMSK" is equal to 668 then bits of "Par_POLI" help us to identify the model:
BIT1 BIT0 CONTROLLER
0 0 Undefined
0 1 07IOs
1 0 Undefined
1 1 18IOs
So we can create the following logic on EcoStruxure Machine Expert HVAC in ST logic:
In the local variables
VAR
xIND_M172_07_IOs : BOOL;
xIND_M172_18_IOs : BOOL;
xIND_M172_28_IOs : BOOL;
xIND_M172_42_IOs : BOOL;
END_VAR
xIND_M172_07_IOs FALSE := Par_POLI.0 AND NOT Par_POLI.1 AND (sysMSK = 668);
xIND_M172_18_IOs TRUE := Par_POLI.0 AND Par_POLI.1 AND (sysMSK = 668);
xIND_M172_28_IOs FALSE := Par_POLI.0 AND NOT Par_POLI.1 AND (sysMSK = 596);
xIND_M172_42_IOs FALSE := Par_POLI.0 AND Par_POLI.1 AND (sysMSK = 596);