Control de posición en el controlador con SM_Drive_PosControl
Vea el proyecto de ejemplo para esto PosControl.project
en el directorio de instalación de CODESYS por debajo ..\CODESYS SoftMotion\Examples
.
En la mayoría de los casos, un servocontrol asume el control de posición del variador, así como el control de potencia y el control de velocidad de rotación. Sin embargo, hay casos de uso en los que el controlador asume el control de posición del eje. Este ejemplo demuestra cómo un dispositivo con control de velocidad (por ejemplo, un convertidor de frecuencia con realimentación de posición) es controlado por posición por CODESYS SoftMotion.
El requisito es un dispositivo que esté controlado por la velocidad establecida y devuelva su posición actual. En este ejemplo, se utiliza un terminal de salida analógica de 10 V EL4031 con una señal que se utiliza como punto de ajuste de velocidad para un convertidor de frecuencia. Se utiliza un terminal de codificador EL5101 para la retroalimentación de posición.
Control de la posición del eje mediante SM_Drive_PosControl
Agregar un eje de tipo controlado por posición
SM_Drive_PosControl
debajo Piscina SoftMotion General Axis en el árbol de dispositivos.Agregue los terminales para el terminal analógico (EL4031) y el codificador (EL5101) al árbol de dispositivos.
Árbol de dispositivos:
Sugerencia
Las descripciones de los dispositivos de bus de campo deben descargarse e instalarse del fabricante.
Abre el
SM_Drive_PosControl
dispositivo en el editor y especifique el parámetro general Módulo con valor360.0
sobre el General pestaña.Haga clic en el Escalado / Mapeo pestaña. El número de incrementos por vuelta del motor se toma de la hoja de datos del codificador. En este ejemplo,
4096
los incrementos (1) son una vuelta de motor. Como está trabajando con grados angulares en la aplicación, especifique el valor360
(2) para unidades en aplicación.Ajustes:
Cambie al SoftMotion Drive: bucle de control de posición pestaña y especifique los siguientes parámetros:
D 2.0
El tiempo muerto determina el número de ciclos en los que la posición real recibida (codificador) se desplaza de fase a la posición establecida del eje. El tiempo muerto depende de los componentes aplicados y debe determinarse mediante prueba y error.
Kp 0.0
La constante de proporcionalidad es el factor por el cual se multiplica el error de posición (la desviación entre la posición establecida y la real) para agregarla más tarde a la velocidad establecida. Ahora establezca este valor en
0
. Determinará el valor experimentalmente en un momento posterior.Bit width: 16
El ancho de bits del valor real se recibe en función de los componentes utilizados y se puede establecer como valores de 16, 24 o 32 bits. Establezca el valor en
16
porque los componentes usados dan la posición comoUINT
.max
Deje el interruptor de control de errores de posición apagado. Puede volver a encenderlo si es necesario. Seleccione la casilla de verificación y especifique un retraso máximo permitido. Si se excede este valor durante el funcionamiento, el eje entra en un estado de error.
δ/δt
El parámetro tiene el valor 1 y debe cambiarse solo en casos muy especiales. Define la relación entre la velocidad establecida y la derivación de la posición. El rango de valores es de 0 a 1:
0
: El valor defSetVelocity
se utiliza como fuente.1
: La derivación numérica de la posición establecida se utiliza como fuente.
Bucle de control:
Ahora configura los valores de velocidad que se envían al actuador. Para ello, debe conocer la velocidad máxima en unidades de aplicación y el valor bruto correspondiente de los datos transferidos. En este ejemplo, la velocidad máxima se logra mediante la salida del valor
16#7FFF
, que corresponde a una velocidad de 10 vueltas por segundo. Esto también corresponde a 3600 grados por segundo según la configuración.Ajustes:
Mapeo de variables a entradas y salidas
Asigne las variables con los datos del eje a los módulos de E / S. Los datos cíclicos disponibles del eje se encuentran en las estructuras de datos in
y out
. Puede establecer esta conexión en el editor de dispositivos del dispositivo de entrada y salida mediante programación o directamente.
Conecte la salida (velocidad establecida) al dispositivo EL4031. Abra el dispositivo en el editor y haga clic en el Asignación de E / S EtherCAT pestaña. Asignar la variable
out.iSetVelocity
del eje a la salida. En el caso de una salida de 32 bits,out.diSetVelocity
se utiliza.Cartografía:
Proceda de la misma forma con la entrada de posición. Abra el dispositivo EL5101 en el editor y establezca el valor de entrada de posición en
in.wActPosition
. Para una entrada de 32 bits, establezca el valor enin.dwActPosition
. Cartografía:Para que funcionen la habilitación de control, la parada rápida y el interruptor de límite, las entradas correspondientes de
SMC_PosControlInput
tienen que estar definidos por los valores de la unidad. Las salidas deSMC_PosControlOutput
deben transmitirse al convertidor (consulte la descripción a continuación). Si la unidad no admite la parada rápida, por ejemplo,SM_Drive_PosControl.in.bDriveStartRealState := TRUE
tiene que ser configurado ySM_Drive_PosControl.out.bDriveStart
puede ignorarse. En este ejemplo,bDriveStartRealState
ybRegulatorRealState
deben configurarse en la aplicación.
SM_Drive_PosControl.in.bDriveStartRealState := TRUE; SM_Drive_PosControl.in.bRegulatorRealState := TRUE;
Determinación del tiempo muerto del sistema
Ahora configure el modo en línea con el eje y configure los parámetros de control.
Importante
Tenga en cuenta que el eje puede moverse fuera de control. Por lo tanto, debe tomar las precauciones de seguridad correspondientes.
Luego intente operar el eje sin control de posición.fKp
ya está establecido en 0.0 y la configuración de escala está verificada. Cambie el eje a MC_Power
y empezar MC_MoveVelocity
. El eje se mueve ahora con la velocidad programada de 1 U / s. En el caso de desviaciones, debe corregir la escala en consecuencia.
Termine el movimiento, por ejemplo con
MC_MoveRelative
e inicie la función de seguimiento.Determine el tiempo muerto del sistema midiendo la diferencia de tiempo entre la posición establecida y la posición real.
En
MC_MoveRelative
, establezca la velocidad máxima y una gran aceleración. Inicie la traza de muestreo conMC_MoveRelative
. Ahora determine la diferencia de tiempo entre el movimiento inicial de la posición ajustada y la primera reacción de la posición real.Rastro:
Para determinar el tiempo muerto
D
, divide esta diferencia de tiempo por el tiempo del ciclo (D = diferencia horaria/tiempo del ciclo). En el SoftMotion Drive: control de posición pestaña, especifique este valor en el bucle de control enD
.Ahora intenta determinar el ajuste correcto para
fKp
. Para ello, cambie el valor de la variable<drive>.controller.fKp
en una lista de vigilancia.Set
fKp
a un número pequeño (por ejemplo, 0,0001) y aumente el valor paso a paso. Compruebe el comportamiento de cada cambio con la traza de muestreo. Tan pronto como detecte fluctuaciones, se habrá alcanzado el límite superior. Ahora disminuya el valor defKp
aproximadamente un 10% y especifíquelo en el SoftMotion Drive: control de posición pestaña en el bucle de control enKp
.Ahora puedes usar el eje.
Bloque de funciones: SMC_PosControlInput
Biblioteca: SM3_Drive_PosControl
Nombre | Tipo de datos | Valor inicial | Descripción |
---|---|---|---|
|
| Final de carrera en sentido positivo (solo para ejes finitos) Desde SoftMotion la versión 4.12.0.0, la supervisión del interruptor de límite está habilitada de forma predeterminada. Para las versiones anteriores, esto debe habilitarse manualmente configurando
| |
|
| Final de carrera en dirección negativa
| |
|
| Posición actual (posición real) como valor de 16 bits | |
|
| Posición actual (posición real) como valor de 32 bits | |
|
| Error externo | |
|
|
| |
|
|
| |
|
|
| |
|
|
Caso de uso: el valor se mantiene en |
Bloque de funciones: SMC_PosControlOutput
Biblioteca: SM3_Drive_PosControl
Nombre | Tipo de datos | Valor inicial | Descripción |
---|---|---|---|
|
|
| |
|
|
| |
|
| Establecer velocidad | |
|
| Establecer velocidad |
Bloque de funciones: SMC_SetPosControlParams
Biblioteca: SM3_Drive_PosControl
Cambia los parámetros de un SM3_Drive_PosControl
eje
Nombre | Tipo de datos | Valor inicial | Descripción |
---|---|---|---|
|
| Referencia de eje | |
|
|
| |
|
| -1 | Ganancia proporcional por retraso Se ignora un valor menor que 0. |
|
| -1 | Factor para el control de velocidad con 0: Sin control piloto de velocidad; 1: Salida directa de |
|
| -1 | Retraso de tiempo en ciclos entre Este valor no debe ser 0. Se ignora un valor menor que 0. |
|
| -1 | Retraso de posición máximo 0 desactiva la comprobación del retardo de posición máximo. Se ignora un valor menor que 0. |
Nombre | Tipo de datos | Valor inicial | Descripción |
---|---|---|---|
|
| La ejecución del bloque de funciones ha finalizado. | |
|
|
| |
|
| Error de identificación |
Los parámetros de la unidad de eje SM_Drive_PosControl
se establecen.
PROGRAM PLC_PRG VAR fbSetPosControlParams : SMC_SetPosControlParams; END_VAR fbSetPosControlParams.fKp := 1; fbSetPosControlParams.fPartVelPilotControl :=0; fbSetPosControlParams.fDeadTime :=0.1; fbSetPosControlParams.fMaxPositionDiff :=1; fbSetPosControlParams(Axis:= SM_Drive_PosControl, bExecute:= TRUE);