Procesar origen de comando (Process Command Source, PCMDSRC)
Esta información se aplica a los controladores CompactLogix 5380P, ControlLogix 5580P y ControlLogix 5590P.
La instrucción Procesar origen de comando (PCMDSRC) selecciona el origen del comando para un dispositivo.
La instrucción incluye estos orígenes de comando:
- Mano
- Fuera de servicio
- Mantenimiento
- Anulación
- Externo
- Programa bloqueado
- Programa
- Operador bloqueado
- Operador
Idiomas disponibles
Diagrama de lógica de escalera

Diagrama de bloque de funciones

Texto estructurado
PCMDSRC (PCMDSRC tag);
Operandos
IMPORTANTE:
Puede ocurrir un funcionamiento inesperado si:
- Los operandos de etiqueta de salida se sobrescriben.
- Los miembros de un operando de estructura se sobrescriben.
- A no ser que se especifica, los operandos de estructura son compartidos por varias instrucciones.
Existen reglas de conversión de datos para utilizar diversos tipos de datos numéricos en una instrucción. Consulte Conversiones de datos.
Operandos de configuración
Operando | Tipo | Formato | Descripción |
|---|---|---|---|
PlantPAx Control | P_COMMAND_SOURCE | etiqueta | Estructura de datos requerida para el funcionamiento adecuado de la instrucción. |
Estructura de P_COMMAND_SOURCE
Miembros de entrada | Tipo de datos | Descripción |
|---|---|---|
EnableIn | BOOL | Habilita la entrada. Diagrama de lógica de escalera: Corresponde a la condición del renglón. El valor predeterminado es verdadero. |
Inp_OwnerCmd | DINT | Comando del dispositivo propietario: 0 = Ninguno, Inp_OwnerCmd.10 = Bloqueo de operador, Inp_OwnerCmd.11 = Desbloqueo de Operador, Inp_OwnerCmd.12 = Bloqueo de Programa, Inp_OwnerCmd.13 = Desbloqueo de programa, Inp_OwnerCmd.14 = Adquirir mantenimiento, Inp_OwnerCmd.15 = Liberar Mantenimiento, Inp_OwnerCmd.16 = Adquirir Externo, Inp_OwnerCmd.17 = Liberar Externo, Inp_OwnerCmd.29 = Eco. El valor predeterminado es 0. |
Inp_InitializeReq | BOOL | 1 = Solicita la inicialización de la instrucción. Normalmente, la instrucción se inicializa en la primera ejecución de la instrucción. Utilice esta solicitud cuando sea necesario reinicializar. La instrucción borra este operando automáticamente. El valor predeterminado es verdadero. |
Inp_Hand | BOOL | 1 = Adquirir mano (normalmente establecido siempre en local), 0 = Liberar mano. El valor predeterminado es falso. |
Inp_Ovrd | BOOL | 1 = Adquirir anulación (lógica de programa de mayor prioridad), 0 = Liberar anulación. El valor predeterminado es falso. |
Inp_ExtInh | BOOL | 1 = Inhibir la adquisición de externo, 0 = Permitir la adquisición de externo. El valor predeterminado es verdadero. |
Cfg_HasOper | BOOL | 1 = Existe un operador (desbloqueado), se puede seleccionar. El valor predeterminado es verdadero. |
Cfg_HasOperLocked | BOOL | 1 = Existe un operador bloqueado, se puede seleccionar. El valor predeterminado es verdadero. |
Cfg_HasProg | BOOL | 1 = Existe un programa (desbloqueado), se puede seleccionar. El valor predeterminado es verdadero. |
Cfg_HasProgLocked | BOOL | 1 = Existe un programa bloqueado, se puede seleccionar. El valor predeterminado es verdadero. |
Cfg_HasExt | BOOL | 1 = Existe un externo, se puede seleccionar. El valor predeterminado es falso. |
Cfg_HasMaint | BOOL | 1 = Existe un mantenimiento, se puede seleccionar. El valor predeterminado es verdadero. |
Cfg_HasMaintOoS | BOOL | 1 = Existe un mantenimiento fuera de servicio, se puede seleccionar. El valor predeterminado es verdadero. |
Cfg_OvrdOverLock | BOOL | 1 = Anulación reemplaza a Bloqueo de programa/operador, 0 = No anular el bloqueo. El valor predeterminado es verdadero. |
Cfg_ExtOverLock | BOOL | 1 = Externo reemplaza el bloqueo de programa/operador, 0 = No anular el bloqueo. El valor predeterminado es falso. |
Cfg_ProgPwrUp | BOOL | 1 = Encendido de programa, 0 = Encendido de operador. El valor predeterminado es falso. |
Cfg_ProgNormal | BOOL | Origen normal: 1 = Programa si no hay solicitudes, 0 = Operador si no hay solicitudes. El valor predeterminado es falso. |
Cfg_PCmdPriority | BOOL | Prioridad de comando. 1 = Los comandos de programa ganan, 0 = Los comandos de operador ganan. El valor predeterminado es falso. |
Cfg_PCmdProgAsLevel | BOOL | 1 = PCmd_Prog utilizado como Nivel. El valor predeterminado es falso. |
Cfg_PCmdLockAsLevel | BOOL | 1 = PCmd_Lock utilizado como un Nivel (1=Bloqueo, 0=Desbloqueo). El valor predeterminado es falso. |
Cfg_ExtAcqAsLevel | BOOL | 1 = XCmd_Acq utilizado como nivel (1 = Adquirir, 0 = Liberar). El valor predeterminado es falso. |
PCmd_Oper | BOOL | Comando de programa para seleccionar el operador (de programa a operador). La instrucción borra este operando automáticamente. El valor predeterminado es falso. |
PCmd_Prog | BOOL | Comando de programa para seleccionar el programa (de operador a programa). La instrucción borra este operando automáticamente. El valor predeterminado es falso. |
PCmd_Lock | BOOL | Comando de programa para bloquear el programa (inhabilitar al operador). La instrucción borra este parámetro automáticamente si Cfg_PCmdLockAsLevel = 0. El valor predeterminado es falso. |
PCmd_Unlock | BOOL | Comando de programa para desbloquear programa (permitir que se pueda adquirir el operador). La instrucción borra este operando automáticamente. El valor predeterminado es falso. |
PCmd_Normal | BOOL | Comando de programa para seleccionar Normal (operador o programa). La instrucción borra este operando automáticamente. El valor predeterminado es falso. |
MCmd_OoS | BOOL | Comando de mantenimiento para seleccionar fuera de servicio. La instrucción borra este operando automáticamente. El valor predeterminado es falso. |
MCmd_IS | BOOL | Comando de mantenimiento para seleccionar en servicio. La instrucción borra este operando automáticamente. El valor predeterminado es falso. |
MCmd_Acq | BOOL | Comando de mantenimiento para adquirir la propiedad (de operador/programa/externo/anulación a mantenimiento). La instrucción borra este operando automáticamente. El valor predeterminado es falso. |
MCmd_Rel | BOOL | Comando de mantenimiento para liberar la propiedad (de mantenimiento a operador/programa/externo/anulación). La instrucción borra este operando automáticamente. El valor predeterminado es falso. |
XCmd_Acq | BOOL | Comando externo para adquirir la propiedad (de operador/programa/anulación/mantenimiento a externo). La instrucción borra este operando automáticamente si Cfg_ExtAcqAsLevel = 0. El valor predeterminado es falso. |
XCmd_Rel | BOOL | Comando externo para liberar la propiedad si Cfg_ExtAcqAsLevel = 0 (de externo a operador/programa/anulación/mantenimiento). La instrucción borra este operando automáticamente. El valor predeterminado es falso. |
OCmd_Oper | BOOL | Comando de operador para seleccionar operador (de programa a operador). La instrucción borra este operando automáticamente. El valor predeterminado es falso. |
OCmd_Prog | BOOL | Comando de operador para seleccionar programa (de operador a programa). La instrucción borra este operando automáticamente. El valor predeterminado es falso. |
OCmd_Lock | BOOL | Comando de operador para bloquear al operador (inhabilitar programa). La instrucción borra este operando automáticamente. El valor predeterminado es falso. |
OCmd_Unlock | BOOL | Comando de operador para desbloquear/liberar (permitir que se pueda adquirir programa) la propiedad. La instrucción borra este operando automáticamente. El valor predeterminado es falso. |
OCmd_Normal | BOOL | Comando de operador para seleccionar Normal (operador o programa). La instrucción borra este operando automáticamente. El valor predeterminado es falso. |
Miembros de salida | Tipo de datos | Descripción |
|---|---|---|
EnableOut | BOOL | Habilita la salida. Este estado de salida siempre refleja el estado de la entrada EnableIn. |
Sts_Initialized | BOOL | 1 = La instrucción se inicializa. Utilice Inp_InitializeReq para reinicializar. |
Sts_eSrc | INT | El origen de comando actual se muestra con bits de estado: Sts_eSrc.0: Bloquear, Sts_eSrc.1: Normal, Sts_eSrc.2: Mano, Sts_eSrc.3: Mantenimiento, Sts_eSrc.4: Anulación, Sts_eSrc.5: Programa, Sts_eSrc.6: Operador, Sts_eSrc.7: Fuera de servicio, Sts_eSrc.8: Externo. |
Sts_bSrc | INT | Activa la selección del mapa de bits (para tótem de HMI con selección de solicitud de origen de comando) Sts_bSrc.0: Mano, Sts_bSrc.1: Fuera de servicio programado (falso para renglón), Sts_bSrc.2: Mantenimiento fuera de servicio, Sts_bSrc.3: Mantenimiento, Sts_bSrc.4: Anulación, Sts_bSrc.5: Externo, Sts_bSrc.6: Programa bloqueado, Sts_bSrc.7: Programa, Sts_bSrc.8: Operador bloqueado, Sts_bSrc.9: Operador. |
Sts_Hand | BOOL | 1 = Se selecciona mano (reemplaza a fuera de servicio, mantenimiento, anulación, externo, programa, operador). |
Sts_OoS | BOOL | 1 = Se selecciona fuera de servicio (reemplaza a mantenimiento, anulación, externo, programa, operador). |
Sts_Maint | BOOL | 1 = Se selecciona mantenimiento (reemplaza a anulación, externo, programa, operador). |
Sts_Ovrd | BOOL | 1 = Se selecciona anulación (reemplaza a externo, programa, operador). |
Sts_Ext | BOOL | 1 = Se selecciona externo (reemplaza a programa y operador). |
Sts_Prog | BOOL | 1 = Se selecciona programa. |
Sts_ProgLocked | BOOL | 1 = Se selecciona programa y se bloquea. |
Sts_Oper | BOOL | 1 = Operador está seleccionado. |
Sts_OperLocked | BOOL | 1 = Se selecciona operador y se bloquea. |
Sts_ProgOperSel | BOOL | Estado de la selección de programa/operador (enclavamiento): 1 = Programa, 0 = Operador. |
Sts_ProgOperLock | BOOL | Estado de bloqueo de programa/operador (enclavamiento), 1 = Bloqueado, 0 = Desbloqueado. |
Sts_Normal | BOOL | 1 = La selección es igual a Normal (programa u operador). |
Sts_ExtReqInh | BOOL | 1 = Solicitud de externo inhibida, no se puede acceder a externo desde el estado actual. |
Sts_ProgReqInh | BOOL | 1 = Solicitud de programa inhibida, no se puede acceder a programa desde el estado actual. |
Sts_MAcqRcvd | BOOL | 1 = El comando de adquisición de mantenimiento ha recibido este escaneado. |
MRdy_OoS | BOOL | 1 = Listo para MCmd_OoS, habilitar el botón de HMI. |
MRdy_IS | BOOL | 1 = Listo para MCmd_IS, habilitar el botón de HMI. |
MRdy_Acq | BOOL | 1 = Listo para MCmd_Acq, habilitar el botón de HMI. |
MRdy_Rel | BOOL | 1 = Listo para MCmd_Rel, habilitar el botón de HMI. |
XRdy_Acq | BOOL | 1 = Listo para XCmd_Acq, habilitar el botón de HMI. |
XRdy_Rel | BOOL | 1 = Listo para XCmd_Rel, habilitar el botón de HMI. |
ORdy_Oper | BOOL | 1 = Listo para OCmd_Oper, habilitar el botón de HMI. |
ORdy_Prog | BOOL | 1 = Listo para OCmd_Prog, habilitar el botón de HMI. |
ORdy_Lock | BOOL | 1 = Listo para OCmd_Lock, habilitar el botón de HMI. |
ORdy_Unlock | BOOL | 1 = Listo para OCmd_Unlock, habilitar el botón de HMI. |
ORdy_Normal | BOOL | 1 = Listo para OCmd_Normal, habilitar el botón de HMI. |
Out_OwnerSts | DINT | Estado del origen del comando, handshake del comando del propietario y estado de preparado: 0 = Ninguno, .10 = Bloqueo de operador, .11 = Desbloqueo de operador, .12 = Bloqueo de programa, .13 = Desbloqueo de programa, .14 = Adquirir mantenimiento, .15 = Liberar mantenimiento, .16 = Adquirir externo, .17 = Liberar externo, .18 = Tiene mantenimiento, .19 = Bloqueo de anulación de externo, .20 = Tiene externo, .21 = Tiene operador, .22 = Tiene operador bloqueado, .23 = Tiene programa, .24 = Tiene programa bloqueado, .29 = Eco, .30 = No está listo |
Operación
La instrucción usa estos orígenes de comando. Los orígenes de comando se priorizan del más alto al más bajo en esta tabla.
Origen de comando | Descripción |
|---|---|
Mano | La lógica programada u otra lógica fuera de la instrucción controlan el dispositivo. La instrucción hace el seguimiento del estado del dispositivo para una transferencia sin perturbaciones hasta uno de los otros orígenes de comando. (Origen de comando de prioridad máxima) |
Fuera de servicio | La instrucción está deshabilitada y no tiene propietario. |
Mantenimiento | Mantenimiento controla el dispositivo y reemplaza al control de operador, programa, externo y anulación. Se aceptan los comandos y las configuraciones del operador del HMI. |
Anulación | La lógica de prioridad controla el dispositivo y reemplaza al control de operador, programa y externo. Se acepta la entrada de anulación (Inp_Ovrd). |
Externo | La lógica externa (por ejemplo, control de pruebas piloto de campo o SCADA ascendente) controla el dispositivo. Se aceptan comandos externos (XCmd_). |
Programa bloqueado | La lógica del programa controla el dispositivo. Se aceptan los comandos del programa (PCmd_). El operador no puede asumir el control del programa. La anulación no puede asumir el control del programa a menos que Cfg_OvrdOverLock = 1. |
Programa | La lógica del programa controla el dispositivo. Se aceptan los comandos del programa (PCmd_). |
Operador bloqueado | El operador controla el dispositivo. Se aceptan los comandos del operador (OCmd_) desde el HMI. Programa no puede asumir el control de operador. Anulación no puede tomar el control del operador a menos que Cfg_OvrdOverLock = 1. |
Operador | El operador controla el dispositivo. Se aceptan los comandos del operador (OCmd_) desde el HMI. (Origen de comando de prioridad más baja) |
La instrucción habilita o deshabilitaestas operaciones:
- Existe un mantenimiento fuera de servicio
- Existe un mantenimiento
- Existe un externo
- Existe un programa (desbloqueado)
- Existe un programa (bloqueado)
- Existe un operador (desbloqueado)
- Existe un operador bloqueado
- PCmd_Lock utilizado como Nivel (1 = Bloquear, 0 = Desbloquear)
La instrucción comprueba si hay configuraciones de control inválidas y fuerza la configuración válida más cercana.
El modelo de control de núcleo arbitra el origen de los comandos y los parámetros que acepta la función receptora. El modelo de control del núcleo determina si el origen es:
- Una entidad programática que reside completamente en el entorno de procesamiento, o
- Una entidad de interfaz externa que emite comandos y parámetros externa y asincrónicamente al entorno de procesamiento.
El bloqueo de un origen de comando impide que el otro origen de comando adquiera un privilegio.
Modelo de origen de comando de núcleo
El modelo de control de núcleo consta de estos orígenes de comando:
- Oper
- OperLocked
- Prog
- ProgLocked
El modelo de control se establece de forma predeterminada en esta configuración. Es posible que haya otros orígenes de comando en el modelo, pero actúan como orígenes de comando de anulación, independientemente de la máquina de estados del operador/programa base.
Habilitar orígenes de comando como configuración
El usuario puede habilitar o deshabilitar los orígenes de comandos individuales. La configuración predeterminada utiliza el modelo base completo; al arrancar el entorno de procesamiento, el origen de comando será el predeterminado designado. Algunas combinaciones de orígenes de comando habilitados no están permitidas ya que son innecesarias o pueden crear cambios no deseados.
Encendido de programa
La configuración permite al usuario especificar si operador o programa es el predeterminado del encendido.
Prioridad de programa
La configuración permite al usuario especificar si los comandos de operador o programa tienen prioridad cuando se afirman simultáneamente.
Restablecimiento automático de los comandos
Todos los comandos se consideran enclavados por única vez. Esto significa que todos los comandos se borran automáticamente cuando la instrucción los ejecuta y los procesa.
Cambiar los estados de destino
Bajo ciertas configuraciones, el origen del comando de destino para algunos comandos puede cambiar. Esto concuerda con la intención del comando. Por ejemplo, si Prog está deshabilitado, el destino del comando OCmd_Prog se direcciona al estado ProgLocked en lugar de al estado Prog. Esto mantiene la intención del comando OCmd_Prog: la entidad del operador desea que la función esté en control del programa. Si se eliminara el comando, no habría forma de lograrlo. Esto solo se hace en configuraciones en las que esto no causaría ningún conflicto ni condición de carrera, pero sirve para conservar toda la funcionalidad del usuario que sea práctica.
Orígenes de comando de mayor prioridad
Estos orígenes de comando de mayor prioridad funcionan de manera independiente dentro del modelo:
- Externo
- Anulación
- Mantenimiento
- Fuera de servicio
- En servicio (In-Service)
- Mano
Inicialización
Normalmente, la instrucción se inicializa en la primera ejecución de la instrucción. La reinicialización se puede solicitar en cualquier momento configurando Inp_InitializeReq = 1. Para que la inicialización sea correcta, al añadir la instrucción mientras realiza una edición en línea del código, asegúrese de que Inp_InitializeReq = 1 (valor predeterminado).
Monitorizar la instrucción PCMDSRC
Utilice la plantilla del operador de la biblioteca de procesos PlantPAx para la monitorización.
Afecta a las marcas de estado matemáticas
No.
Fallos mayores/menores
No es específico para esta instrucción. Consulte el Índice a través de matrices para ver si hay fallos de indexación de matrices.
Ejecución
Diagrama de lógica de escalera
Condición/estado | Acción realizada |
|---|---|
Pre-escaneado | La condición de salida de renglón cambia a falsa. Sts_eSrc está configurado en 0. Sts_bSrc está establecido en 0. |
Primera ejecución de instrucción | Todos los comandos que se borran automáticamente en cada ejecución son borrados e ignorados. La selección de programa/operador se establece en la configuración (Cfg_ProgPwrUp). La selección de bloqueo de programa u operador está configurada como desbloqueada. El estado adquirido/liberado de mantenimiento no se modifica y persiste durante el encendido del controlador o la transición PROG-to-RUN. |
La condición de entrada de renglón es falsa | La instrucción está fuera de servicio si Inp_Hand=0. La salida está desactivada. El procesamiento de la selección del origen del comando continúa, excepto que los comandos de programa y operador son ignorados y borrados y todos los bits de estado de propiedad (Sts_Maint, Sts_Ovrd, Sts_Ext, Sts_Prog y Sts_Oper) cambian a 0. Cuando la condición de entrada de renglón se convierte en verdadera, la selección de programa/operador se establece en función de la configuración (Cfg_ProgPwrUp). |
La condición de entrada de renglón es verdadera | Establecer la condición de salida de renglón a condición de entrada de renglón. La instrucción se ejecuta. |
Post-escaneado | La condición de salida de renglón se borra a falsa. |
Diagrama de bloque de funciones
Condición/estado | Acción realizada |
|---|---|
Pre-escaneado | El valor de EnableOut se borra a falso. Sts_eSrc está configurado en 0. Sts_bSrc está establecido en 0. |
Primera ejecución de instrucción | Todos los comandos que se borran automáticamente en cada ejecución son borrados e ignorados. La selección de programa/operador se establece en la configuración (Cfg_ProgPwrUp). La selección de bloqueo de programa u operador está configurada como desbloqueada. El estado adquirido/liberado de mantenimiento no se modifica y persiste durante el encendido del controlador o la transición PROG-to-RUN. |
Primer escaneado de instrucción | Consulte la primera ejecución de la instrucción en la tabla Diagrama de bloque de funciones. |
EnableIn es falso | El valor de EnableOut se borra a falso. La instrucción está fuera de servicio si Inp_Hand=0. La salida está desactivada. El procesamiento de la selección del origen del comando continúa, excepto que los comandos de programa y operador son ignorados y borrados y todos los bits de estado de propiedad (Sts_Maint, Sts_Ovrd, Sts_Ext, Sts_Prog y Sts_Oper) cambian a 0. Cuando la condición de entrada de renglón se convierte en verdadera, la selección de programa/operador se establece en función de la configuración (Cfg_ProgPwrUp). |
EnableIn es verdadero | El valor de EnableOut se establece en verdadero. La instrucción se ejecuta. |
Post-escaneado | Los bits EnableIn y EnableOut se establecen en falsos. |
Texto estructurado
En Texto estructurado, EnableIn siempre es verdadero durante un escaneado normal. Por tanto, si la instrucción se encuentra en la ruta de control activada por la lógica, se ejecutará.
Condición/estado | Acción realizada |
|---|---|
Pre-escaneado | Consultar Pre-escaneado en la tabla Diagrama de lógica de escalera. |
Primera ejecución de instrucción | Consultar la primera ejecución de la instrucción en la tabla Diagrama de lógica de escalera. |
EnableIn es verdadero | Consultar La condición de entrada de reglón es verdadera en la tabla Diagrama de escalera. |
Post-escaneado | Los bits EnableIn y EnableOut se establecen en falsos. |
Entregue su opinión