Descripción
La instrucción "Materializar circuito secuencial sucesivo" permite materializar un circuito secuencial sucesivo con 16 pasos como máximo. El número del primer paso se define con el parámetro DSP. El número del último paso se predetermina con el parámetro LST_STEP.
En cada paso se escriben todos los 16 bits de salida OUT0 a OUT15 y el parámetro de salida OUT_WORD (que contiene los bits de salida). A un bit de salida se asigna bien sea el bit correspondiente del campo predefinido OUT_VAL, o bien el bit de salida del paso anterior. El valor que se asigne dependerá de la ocupación de los bits de máscara en el parámetro S_MASK.
|
Nota El ajuste predeterminado de los bits de máscara es 0. Para modificar el ajuste actual de uno o varios bits de máscara, realice el cambio en el bloque de datos de instancia. |
La instrucción "Materializar circuito secuencial sucesivo" pasa al siguiente paso cuando se produce un flanco de señal ascendente en el parámetro JOG. Si la instrucción ya se encuentra en el último paso y se produce un flanco ascendente en el parámetro JOG, se activan las variables Q y EOD. En este caso, el parámetro DCC se pone al valor 0. La instrucción permanece en el último paso hasta que el parámetro RESET se pone al valor "1".
Además, también se puede permitir la transición al paso siguiente en función del tiempo. Para ello se debe poner al valor "1" el parámetro DRUM_EN. La transición al paso siguiente tiene lugar si está activado el bit de evento (EVENTi) correspondiente al paso actual y si ha transcurrido el tiempo predeterminado para el paso actual. El tiempo necesario para un paso resulta de la multiplicación de la base de tiempo (DTBP) por el factor de tiempo válido para el paso actual (S_PRESET).
|
Nota El tiempo de ejecución restante en el paso actual (DCC) se reduce únicamente si está activado el bit de evento correspondiente (EVENTi). |
Al insertar la instrucción en el programa, el cuadro de diálogo "Opciones de llamada" se abre automáticamente; en él se puede determinar si los parámetros de bloque de la instrucción se depositan en un bloque de datos propio (instancia individual) o bien como variable local (multiinstancia) en la interfaz del bloque. Si crea un bloque de datos propio, lo encontrará en el árbol del proyecto, en la carpeta "Recursos de programa", en "Bloques de programa > Bloques de sistema". Encontrará más información al respecto en "Consulte también".
Si, al llamar la instrucción, el parámetro RESET tiene el valor "1", el circuito secuencial sucesivo pasará al paso cuyo número se ha asignado al parámetro DSP.
Un paso puede programarse con un valor de tiempo, con un evento o con ambos. Los pasos programados con un bit de evento y el valor de tiempo "0" pasan al siguiente paso en cuanto el estado lógico del bit de evento es "1". Los pasos programados solo con un valor de tiempo empiezan a contar el tiempo inmediatamente. Los pasos programados con un bit de evento y un valor de tiempo mayor que "0" empiezan a contar el tiempo en cuanto el estado lógico del bit de evento es "1".
El circuito secuencial sucesivo también se puede conmutar en progresión en todo momento a través del valor del parámetro JOG.
En la primera llamada de la instrucción, el parámetro RESET se debe poner a 1.
Si el circuito secuencial se encuentra en el último paso y ha transcurrido el tiempo de ejecución predefinido para este paso, se activan los parámetros Q y EOD. La instrucción permanece en el último paso hasta que el parámetro RESET adopte el valor "1".
Esta instrucción se ejecuta solo en los estados operativos ARRANQUE y RUN.
El sistema operativo inicializa la instrucción "Materializar circuito secuencial sucesivo" cuando se efectúa un arranque en frío. La instrucción no se inicializa en caso de un rearranque completo (en caliente). Si la instrucción "Materializar circuito secuencial sucesivo" debe inicializarse tras un rearranque completo (en caliente), es preciso llamarla en el OB 100 con el valor "1" en el parámetro RESET.
Parámetros
La tabla siguiente muestra los parámetros de la instrucción:
|
Parámetro |
Declaración |
Tipo de datos |
Área de memoria |
Descripción |
|---|---|---|---|---|
|
RESET |
Input |
BOOL |
I, Q, M, D, L |
El estado lógico "1" desactiva el circuito secuencial. En la primera llamada de la instrucción, el parámetro RESET se debe poner a "1". |
|
JOG |
Input |
BOOL |
I, Q, M, D, L |
Un flanco de señal ascendente (con respecto a la última llamada) provoca la transición al paso siguiente, siempre que el circuito secuencial no se encuentre aún en el último paso. La transición tiene lugar independientemente del valor asignado al parámetro DRUM_EN. |
|
DRUM_EN |
Input |
BOOL |
I, Q, M, D, L |
Parámetro de control que determina si se puede realizar una transición al paso siguiente en función del tiempo. Si el valor es "1", es posible una transición en función del tiempo. |
|
LST_STEP |
Input |
BYTE |
I, Q, M, D, L |
Número del último paso Los valores admisibles son 1 a 16. |
|
EVENTi, 1 ≤ i ≤ 16 |
Input |
BOOL |
I, Q, M, D, L |
Bit de evento n.º i (pertenece al paso i) |
|
OUTj, 0 ≤ j ≤ 15 |
Output |
BOOL |
I, Q, M, D, L |
Bit de salida n.º j (idéntico al bit n.º j de OUT_WORD) |
|
Q |
Output |
BOOL |
I, Q, M, D, L |
Parámetro de estado que indica si ha transcurrido el tiempo predefinido por el usuario para la ejecución del último paso. |
|
OUT_WORD |
Output |
WORD |
I, Q, M, D, L, P |
Bits de salida resumidos en una variable |
|
ERR_CODE |
Output |
WORD |
I, Q, M, D, L, P |
Información de error |
|
JOG_HIS |
Static |
BOOL |
I, Q, M, D, L |
Irrelevante para el usuario (parámetro de entrada JOG de la llamada anterior) |
|
EOD |
Static |
BOOL |
I, Q, M, D, L |
Idéntico al parámetro de salida Q |
|
DSP |
Static |
BYTE |
I, Q, M, D, L, P |
Número del primer paso Los valores admisibles son 1 a 16. |
|
DSC |
Static |
BYTE |
I, Q, M, D, L, P |
Número del paso actual |
|
DCC |
Static |
DWORD |
I, Q, M, D, L, P |
Tiempo de ejecución restante del paso actual, indicado en milisegundos (ms) (relevante solo si DRUM_EN = 1 y el bit de evento correspondiente = 1) |
|
DTBP |
Static |
WORD |
I, Q, M, D, L, P |
Base de tiempo en milisegundos (ms) válida para todos los pasos |
|
PREV_TIME |
Static |
DWORD |
I, Q, M, D, L |
(Irrelevante para el usuario: hora de sistema de la llamada anterior) |
|
S_PRESET |
Static |
ARRAY of WORD |
I, Q, M, D, L |
Campo unidimensional con los factores de tiempo para cada paso. Selección recomendada de índices: [1 a 16]. En este caso, S_PRESET [x] contiene el factor de tiempo del paso x. |
|
OUT_VAL |
Static |
ARRAY of BOOL |
I, Q, M, D, L |
Campo bidimensional con los valores que deben emitirse en cada paso, a no ser que se hayan inhibido vía S_MASK. Selección recomendada de índices: [1 a 16, 0 a 15]. En este caso, OUT_VAL [x, y] contiene el valor asignado al bit de salida OUTy en el paso x. |
|
S_MASK |
Static |
ARRAY of BOOL |
I, Q, M, D, L |
Campo bidimensional con los bits de máscara para cada paso. Selección recomendada de índices: [1 a 16, 0 a 15]. En este caso, S_MASK [x, y] contiene el bit de máscara para el valor "y"-ésimo que debe emitirse en el paso x. Significado de los bits de máscara:
|
Encontrará más información sobre los tipos de datos válidos en "Consulte también".
Parámetro ERR_CODE
La tabla siguiente muestra el significado de los valores del parámetro ERR_CODE:
|
ERR_CODE* |
Explicación |
|---|---|
|
0000 |
Ningún error |
|
8081 |
Valor no admisible en el parámetro LST_STEP |
|
8082 |
Valor no admisible en DSC |
|
8083 |
Valor no admisible en DSP |
|
8084 |
El producto DCC = DTBP * S_PRESET[DSC] excede el valor 2**31-1 (aprox. 24,86 días). |
|
*En el editor de programas, los códigos de error se pueden representar como valores enteros o hexadecimales. Encontrará más información sobre el cambio de los formatos de visualización en "Consulte también". |
|
Ejemplo
En el ejemplo siguiente, la instrucción pasa del paso 1 al paso 2. Los bits de salida (OUT0 a OUT15) y la palabra de salida (OUT_WORD) se activan según la máscara configurada para el paso 2 y los valores del parámetro OUT_VAL.
|
Nota Los parámetros estáticos pueden inicializarse en el bloque de datos. |
|
"DRUM_DB"(RESET := "Tag_Reset" |
|
JOG := "Tag_Input_Jog" |
|
DRUM_EN := "Tag_Input_DrumEN" |
|
LST_STEP := "Tag_Number_LastStep" |
|
EVENT1 := "MyTag_Event_1" |
|
EVENT2 := "MyTag_Event_2" |
|
EVENT3 := "MyTag_Event_3" |
|
EVENT4 := "MyTag_Event_4" |
|
EVENT5 := "MyTag_Event_5" |
|
EVENT6 := "MyTag_Event_6" |
|
EVENT7 := "MyTag_Event_7" |
|
EVENT8 := "MyTag_Event_8" |
|
EVENT9 := "MyTag_Event_9" |
|
EVENT10 := "MyTag_Event_10" |
|
EVENT11 := "MyTag_Event_11" |
|
EVENT12 := "MyTag_Event_12" |
|
EVENT13 := "MyTag_Event_13" |
|
EVENT14 := "MyTag_Event_14" |
|
EVENT15 := "MyTag_Event_15" |
|
EVENT16 := "MyTag_Event_16" |
|
OUT0 => "MyTag_Output_0" |
|
OUT1 => "MyTag_Output_1" |
|
OUT2 => "MyTag_Output_2" |
|
OUT3 => "MyTag_Output_3" |
|
OUT4 => "MyTag_Output_4" |
|
OUT5 => "MyTag_Output_5" |
|
OUT6 => "MyTag_Output_6" |
|
OUT7 => "MyTag_Output_7" |
|
OUT8 => "MyTag_Output_8" |
|
OUT9 => "MyTag_Output_9" |
|
OUT10 => "MyTag_Output_10" |
|
OUT11 => "MyTag_Output_11" |
|
OUT12 => "MyTag_Output_12" |
|
OUT13 => "MyTag_Output_13" |
|
OUT14 => "MyTag_Output_14" |
|
OUT15 => "MyTag_Output_15" |
|
Q => "Tag_Output_Q" |
|
OUT_WORD => "Tag_OutputWord" |
|
ERR_CODE => "Tag_ErrorCode"); |
Las tablas siguientes muestran el funcionamiento de la instrucción con valores concretos.
Antes de la ejecución
En este ejemplo se utilizan los siguientes valores para asignar valores a los parámetros de entrada:
|
Parámetro |
Operando |
Dirección |
Valor |
|---|---|---|---|
|
RESET |
Tag_Reset |
M0.0 |
FALSE |
|
JOG |
Tag_Input_JOG |
M0.1 |
FALSE |
|
DRUM_EN |
Tag_Input_Drum_EN |
M0.2 |
TRUE |
|
LST_STEP |
Tag_Number_LastStep |
MB1 |
B#16#08 |
|
EVENT2 |
MyTag_Event_2 |
M20.0 |
FALSE |
|
EVENT4 |
MyTag_Event_4 |
M20.1 |
FALSE |
|
EVENT6 |
MyTag_Event_6 |
M20.2 |
FALSE |
|
EVENT8 |
MyTag_Event_8 |
M20.3 |
FALSE |
|
EVENT10 |
MyTag_Event_10 |
M20.4 |
FALSE |
|
EVENT12 |
MyTag_Event_12 |
M20.5 |
FALSE |
|
EVENT14 |
MyTag_Event_14 |
M20.6 |
FALSE |
|
EVENT16 |
MyTag_Event_16 |
M20.7 |
FALSE |
Los siguientes valores se almacenan en el bloque de datos de instancia "DRUM_X_DB" de la instrucción:
|
Parámetro |
Dirección |
Valor |
|---|---|---|
|
JOG_HIS |
DBX12.0 |
FALSE |
|
EOD |
DBX12.1 |
FALSE |
|
DSP |
DBB13 |
W#16#0001 |
|
DSC |
DBB14 |
W#16#0001 |
|
DCC |
DBD16 |
DW#16#0000000A |
|
DTBP |
DBW20 |
W#16#0001 |
|
S_PRESET[1] |
DBW26 |
W#16#0064 |
|
S_PRESET[2] |
DBW28 |
W#16#00C8 |
|
OUT_VAL[1,0] |
DBX58.0 |
TRUE |
|
OUT_VAL[1,1] |
DBX58.1 |
TRUE |
|
OUT_VAL[1,2] |
DBX58.2 |
TRUE |
|
OUT_VAL[1,3] |
DBX58.3 |
TRUE |
|
OUT_VAL[1,4] |
DBX58.4 |
TRUE |
|
OUT_VAL[1,5] |
DBX58.5 |
TRUE |
|
OUT_VAL[1,6] |
DBX58.6 |
TRUE |
|
OUT_VAL[1,7] |
DBX58.7 |
TRUE |
|
OUT_VAL[1,8] |
DBX59.0 |
TRUE |
|
OUT_VAL[1,9] |
DBX59.1 |
TRUE |
|
OUT_VAL[1,10] |
DBX59.2 |
TRUE |
|
OUT_VAL[1,11] |
DBX59.3 |
TRUE |
|
OUT_VAL[1,12] |
DBX59.4 |
TRUE |
|
OUT_VAL[1,13] |
DBX59.5 |
TRUE |
|
OUT_VAL[1,14] |
DBX59.6 |
TRUE |
|
OUT_VAL[1,15] |
DBX59.7 |
TRUE |
|
OUT_VAL[2,0] |
DBX60.0 |
FALSE |
|
OUT_VAL[2,1] |
DBX60.1 |
FALSE |
|
OUT_VAL[2,2] |
DBX60.2 |
FALSE |
|
OUT_VAL[2,3] |
DBX60.3 |
FALSE |
|
OUT_VAL[2,4] |
DBX60.4 |
FALSE |
|
OUT_VAL[2,5] |
DBX60.5 |
FALSE |
|
OUT_VAL[2,6] |
DBX60.6 |
FALSE |
|
OUT_VAL[2,7] |
DBX60.7 |
FALSE |
|
OUT_VAL[2,8] |
DBX61.0 |
FALSE |
|
OUT_VAL[2,9] |
DBX61.1 |
FALSE |
|
OUT_VAL[2,10] |
DBX61.2 |
FALSE |
|
OUT_VAL[2,11] |
DBX61.3 |
FALSE |
|
OUT_VAL[2,12] |
DBX61.4 |
FALSE |
|
OUT_VAL[2,13] |
DBX61.5 |
FALSE |
|
OUT_VAL[2,14] |
DBX61.6 |
FALSE |
|
OUT_VAL[2,15] |
DBX61.7 |
FALSE |
|
S_MASK[2,0] |
DBX92.0 |
FALSE |
|
S_MASK[2,1] |
DBX92.1 |
TRUE |
|
S_MASK[2,2] |
DBX92.2 |
TRUE |
|
S_MASK[2,3] |
DBX92.3 |
TRUE |
|
S_MASK[2,4] |
DBX92.4 |
TRUE |
|
S_MASK[2,5] |
DBX92.5 |
FALSE |
|
S_MASK[2,6] |
DBX92.6 |
TRUE |
|
S_MASK[2,7] |
DBX92.7 |
TRUE |
|
S_MASK[2,8] |
DBX93.0 |
FALSE |
|
S_MASK[2,9] |
DBX93.1 |
FALSE |
|
S_MASK[2,10] |
DBX93.2 |
TRUE |
|
S_MASK[2,11] |
DBX93.3 |
TRUE |
|
S_MASK[2,12] |
DBX93.4 |
TRUE |
|
S_MASK[2,13] |
DBX93.5 |
TRUE |
|
S_MASK[2,14] |
DBX93.6 |
FALSE |
|
S_MASK[2,15] |
DBX93.7 |
TRUE |
Los parámetros de salida tienen los valores siguientes antes de ejecutarse la instrucción:
|
Parámetro |
Operando |
Dirección |
Valor |
|---|---|---|---|
|
Q |
Tag_Output_Q |
M6.0 |
FALSE |
|
OUTWORD |
Tag_OutputWord |
MW8 |
W#16#FFFF |
|
OUT0 |
MyTag_Output_0 |
M4.0 |
TRUE |
|
OUT1 |
MyTag_Output_1 |
M4.1 |
TRUE |
|
OUT2 |
MyTag_Output_2 |
M4.2 |
TRUE |
|
OUT3 |
MyTag_Output_3 |
M4.3 |
TRUE |
|
OUT4 |
MyTag_Output_4 |
M4.4 |
TRUE |
|
OUT5 |
MyTag_Output_5 |
M4.5 |
TRUE |
|
OUT6 |
MyTag_Output_6 |
M4.6 |
TRUE |
|
OUT7 |
MyTag_Output_7 |
M4.7 |
TRUE |
|
OUT8 |
MyTag_Output_8 |
M5.0 |
TRUE |
|
OUT9 |
MyTag_Output_9 |
M5.1 |
TRUE |
|
OUT10 |
MyTag_Output_10 |
M5.2 |
TRUE |
|
OUT11 |
MyTag_Output_11 |
M5.3 |
TRUE |
|
OUT12 |
MyTag_Output_12 |
M5.4 |
TRUE |
|
OUT13 |
MyTag_Output_13 |
M5.5 |
TRUE |
|
OUT14 |
MyTag_Output_14 |
M5.6 |
TRUE |
|
OUT15 |
MyTag_Output_15 |
M5.7 |
TRUE |
Después de la ejecución
Una vez ejecutada la instrucción, los valores siguientes se escriben en los parámetros de salida:
|
Parámetro |
Operando |
Dirección |
Valor |
|---|---|---|---|
|
OUT0 |
MyTag_Output_0 |
M4.0 |
TRUE |
|
OUT1 |
MyTag_Output_1 |
M4.1 |
FALSE |
|
OUT2 |
MyTag_Output_2 |
M4.2 |
FALSE |
|
OUT3 |
MyTag_Output_3 |
M4.3 |
FALSE |
|
OUT4 |
MyTag_Output_4 |
M4.4 |
FALSE |
|
OUT5 |
MyTag_Output_5 |
M4.5 |
TRUE |
|
OUT6 |
MyTag_Output_6 |
M4.6 |
FALSE |
|
OUT7 |
MyTag_Output_7 |
M4.7 |
FALSE |
|
OUT8 |
MyTag_Output_8 |
M5.0 |
TRUE |
|
OUT9 |
MyTag_Output_9 |
M5.1 |
TRUE |
|
OUT10 |
MyTag_Output_10 |
M5.2 |
FALSE |
|
OUT11 |
MyTag_Output_11 |
M5.3 |
FALSE |
|
OUT12 |
MyTag_Output_12 |
M5.4 |
FALSE |
|
OUT13 |
MyTag_Output_13 |
M5.5 |
FALSE |
|
OUT14 |
MyTag_Output_14 |
M5.6 |
TRUE |
|
OUT15 |
MyTag_Output_15 |
M5.7 |
FALSE |
|
Q |
Tag_Output_Q |
M6.0 |
FALSE |
|
OUTWORD |
Tag_OutputWord |
MW8 |
W#16#4321 |
|
ERR_CODE |
Tag_ErrorCode |
MW10 |
W#16#0000 |
Los siguientes valores se almacenan en el bloque de datos de instancia "DRUM_X_DB" de la instrucción:
|
Parámetro |
Dirección |
Valor |
|---|---|---|
|
JOG_HIS |
DBX12.0 |
FALSE |
|
EOD |
DBX12.1 |
FALSE |
|
DSC |
DBB14 |
W#16#0002 |
|
DCC |
DBD16 |
DW#16#000000C8 |