Beruflich Dokumente
Kultur Dokumente
Ejemplos:
#define
/*======================================================
IPOS Source File
========================================================*/
#define Setpoint H123
#define MAXIMO
2000
Setpoint = MAXIMO
#undef
Hace posible desactivar el macro creado con #define
#declare
Hace posible declarar simblicamente variables IPOS
relativamente a una variables base.
#declare IdentificadorNuevo IdentificadorViejo : Offset
/*======================================================
IPOS Source File
========================================================*/
#define
#declare
#declare
#declare
BASEVAR H100
Setpoint BASEVAR:0
ActVal
BASEVAR:1
i
BASEVAR:5
NOTA:
Se puede definir un mximo de 600
directivas #define + #declare
Estructuras pre-definidas
Estas estructuras Standard se
utilizan de la siguiente manera:
/*======================================================
IPOS Source File
========================================================*/
SSPOSSPEED VelocidadRapida, VelocidadLenta;
main()
{
/*------------------------------------Initialisation
--------------------------------------*/
VelocidadRapida.CW = 14000;
VelocidadRapida.CCW = 12500;
VelocidadLenta.CW
= 3000;
VelocidadLenta.CCW = 4500;
Declaracin de Variables
Long
Localizada en una
variable voltil
(global variable)
initial long
Localizada en una
variable no voltil
(H0 H127)
Identificadores
3200)
Identificadores validos:
Identificadores no validos:
Identifier_1
_ControlWord
CONSTANT
1_Identifier
Control-Word
My Identifier
EsteNombreEsMuyLargoParaUtilizarCo
mo
Direccionamiento indirecto
Se determina un direccionamiento indirecto con: *H0.*H511.
Ejemplo
H2=5;
H3=6;
H5=7;
H6=3;
H1= *H2 + *H3;
Construcciones en C
if e if else
If
Se ejecuta si la expresin dentro del
parntesis es verdadera (!= 0).
La expresin puede contener varias
condiciones.
Else
Se
For
La
While
La
do while
La
declaracin do es un bucle
condicional en donde la condicin
se verifica al final del bucle.
La
declaracin al menos se
ejecuta una vez.
La
declaracin se ejecuta
nuevamente si la expresin es
verdadera al final del bucle.
switch case
La
numof()
La palabra clave numof()
retorna el numero de una
variable.
#include <const.h>
#define INPUTS H483
#define DI03
0b1000
main()
{
if((INPUTS & DI03)!=0)
{
H10 = 1;
}
}
Ejemplo 1
Escriba un programa en Compilador que:
Escriba un valor a una variable.
Escriba un valor desde una variable a otra variable.
Primero, elegir nombres de variables.
/*=====================================================
IPOS Source File
=====================================================*/
long PrimeraVariable, SegundaVariable, TerceraVariable;
_WaitInput
Espera
Ejemplo 2
Escriba un programa en compilador que:
Conmute el Bit 4 de una variable cada 500 ms.
Primero, elija el nombre de la variable.
/*=====================================================
IPOS Source File
=====================================================*/
long VariableConmutable
/*---------------------------------------------Initialisation
-----------------------------------------------*/
VariableConmutable = 0;
/*----------------------------------------------Main Loop
-----------------------------------------------*/
while(1)
{
_BitSet( VariableConmutable, 4 );
_
/*----------------------------------------------Main Loop
-----------------------------------------------*/
while(1)
{
_BitSet( VariableConmutable, 4 );
_Wait( 500 );
_BitClear( VariableConmutable, 4 );
_Wait( 500 );
}
Ejemplo 3
Escriba un programa en compilador que:
Si DI10 esta en alto, parpadee DO14.
Si DI10 esta en bajo, ponga el Bit 0 de una variable al mismo
valor que la variable DI17.
Primero, elija el nombre de la variable.
/*=====================================================
IPOS Source File
=====================================================*/
long VariableConmutable;
/*----------------------------------------------Main Loop
-----------------------------------------------*/
while(1)
{
if( DI10 )
{
_BitMoveNeg( OptOutpIPOS, 4, OptOutpIPOS, 4 );
_Wait( 500 );
}
else
{
_BitClear( OptOutpIPOS, 4);
_BitMove( VariableConmutable, 0, InputLevel, 13 );
}
}
Actividad 1
Escriba un programa en Compilador :
Active la salidas de la placa opcional DIO11A en orden.
Use un intervalo de 500 ms entre cada salida.
Desactive todas las salidas luego que la salida DO17 estuvo activa
500 ms.
Repetir.
Instrucciones aritmticas
Operadores unitarios
Example
Operadores
binarios
Description
Valores iniciales:
Multiplicacin
Division
Divisin modulo
Adicion
Substraccin
Mover izquierda
Mover derecha
Menor que
Menor o igual que
Mayor que
Mayor o igual que
Compara por igual
Compara por no igual
Bit por bit AND
Bit por bit Exclusive OR
Bit por bit OR
AND lgica
OR lgica
Ejemplo 4
Escriba un programa en Compilador que:
Calcule un valor usando una formula de torque cuando DI10
conmuta de bajo a alto.
Use un contador para recordar la cantidad de clculos.
Primero, defina la mascara de la entrada digital para el
comando _WaitInput y el nombre de las variables lgicas.
/*=====================================================
IPOS Source File
=====================================================*/
#define DI10_mascara 0b1000000
long Torque, kW, rpm, eff, Contador;
/*----------------------------------------------Main Loop
-----------------------------------------------*/
while(1)
{
_WaitInput( IC_HIGH, DI10_mascara );
_WaitInput( IC_LOW, DI10_mascara );
if( rpm != 0 )
{
Torque = ((kW * 9550 * eff)/(rpm * 1000));
Contador++;
}
}
*El coeficiente 1000 se usa para permitir un decimal mas para los hp y dos decimales
para eff.
** Use solo parntesis ( ) en ecuaciones matemticas. No use corchetes [ ] o llaves { }.
Funciones de Sistema
Funciones de Comando del Sistema
_GetSys
Carga un valor interno del sistema a
una o mas variables.
Esta incluye:
Corriente activa
Velocidad actual
Cdigo de falla
Status de sistema
Posicin actual
Status de entradas/salidas
Status entradas/salidas
analgicas
Datos PO.
Estructuras Pre-definidas
Algunas funciones requieren mas
de una variable. El Compilador
incluye estructuras para esto.
Esta incluye:
Velocidades fijas
Datos PI
Modo de operacin
Corriente mxima
Rampa de
posicionamiento
Velocidad de pos.
Posicin actual
Ejemplo 5
Escriba un programa en compilador que:
Lea el valor de las entradas analgicas,
Escale el valor de AI1 por 1.5,
Use el valor escalado para ajustar la n11, y
Use la Palabra de Control para hacer trabajar el motor a esta
velocidad.
/*=====================================================
Initialisation
=====================================================*/
_BitSet( ControlWord, 4 );
0V
AI1
-10V
+10V
0V
AI2
-10V
DIO11A: X20 3
+10V
/*=====================================================
IPOS Source File
=====================================================*/
GSAINPUT Ain;
/*----------------------------------------------Main Loop
-----------------------------------------------*/
while(1)
{
_GetSys( Ain.Input1, GS_ANINPUTS );
Ain.Input1 = (Ain.Input1 * 3)/2;
_
}
#160
N11 Valor en
RPM
Cambiar el Parmetro
Fix Setpoint
N11
/*----------------------------------------------Main Loop
-----------------------------------------------*/
while(1)
{
_GetSys( Ain.Input1, GS_ANINPUTS );
Ain.Input1 = (Ain.Input1 * 3)/2;
_SetSys( SS_N11, Ain.Input1 );
}
Ejemplo 6
El Movidrive provee 6 velocidades fijas.
Use el Compilador para expandir el numero de velocidades
fijas a 8. Seleccione las vel. fijas a travs de las entradas
digitales (DI15, DI16, DI17)
Muestre en el panel de comando el numero correspondiente
seleccionado (0...7) usando las salidas digitales (DO15, DO16,
DO17)
Bit 13
DI 17
Bit 12
DI 16
Bit 11
DI 15
Bit 10
DI 14
Bit 9
DI 13
Bit 8
DI 12
Bit 7
DI 11
Bit 6
DI 10
Bit 5
DI 05
Bit 4
DI 04
Bit 3
DI 03
Bit 2
DI 02
Bit 1
DI 01
Bit 0
DI 00
"0"
"0"
"0"
"0"
6
1
10
11
&
& & & & & & & & & & & & & & &
Mascara lgica AND de valorhex
7
"0"
Bit 31
"0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "1" "1" "1"
Bit14
Bit 9
Bit 8
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
22=4
21=2 20=1
4 + 2 + 1=7
Variable IPOSplus VelocidadAsignada luego de la
"0"
Bit 31
Bit 9
Bit 8
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
DI17
Bit 2
DI16
Bit 1
DI15
Bit 0
Condicin Terminal
Como resultado de la operacin AND, estos bits siempre son "0.
/*=====================================================
IPOS Source File
=====================================================*/
#define VelocidadAsignada ((InputLevel >> 11) & 0x7)
#define Velocidad1 H0
#define Velocidad2 H1
#define Velocidad3 H2
#define Velocidad4 H3
#define Velocidad5 H4
#define Velocidad6 H5
#define Velocidad7 H6
#define Velocidad8 H7
long Apuntador, VelocidadDeseada;
/*=====================================================
Initialisation
=====================================================*/
Velocidad1 = 500 * 10;
Velocidad2 = 700 * 10;
Velocidad3 = 750 * 10;
Velocidad4 = 1000 * 10;
Velocidad5 = 1100 * 10;
Velocidad6 = 1200 * 10;
Velocidad7 = 1500 * 10;
Velocidad8 = 3000 * 10;
_BitSet( ControlWord, 4 );
VelocidadAsignada
n11 Valor en
rpm
Ve
l
oc
i
2.
d=
ida
1.
da
dD
es
.=
loc
Ve
75
[Apuntador]
H0
H1
H2
H3
H4
H5
H6
H7
Velocidad1 Velocidad2 Velocidad3 Velocidad4 Velocidad5 Velocidad6 Velocidad7 Velocidad8
500 (rpm) 700 (rpm) 750 (rpm) 1000 (rpm) 1100 (rpm) 1200 (rpm) 1500 (rpm) 3000 (rpm)
/*----------------------------------------------Main Loop
-----------------------------------------------*/
while(1)
{
Apuntador = VelocidadAsignada;
VelocidadDeseada = *Apuntador;
}
#160
N11 Valor en
RPM
Cambia el parmetro
Fix Setpoint
N11
Condition terminal
Bit 4 Bit 3
DO17DO16 DO15
Bit 2 Bit 1 Bit 0
/*----------------------------------------------Main Loop
-----------------------------------------------*/
while(1)
{
Apuntador = VelocidadAsignada;
VelocidadDeseada = *Apuntador;
_SetSys( SS_N11, VelocidadDeseada );
OptOutpIPOS = VelocidadAsignada << 5;
}
Actividad 2
Escriba un programa en Compilador que:
Use las salida digitales de la placa DIO11A como indicador de
torque.
A medida que el torque se incremente, encienda mas salidas
digitales.
A medida que el torque disminuya, apague salidas digitales.
Use los siguientes niveles para el torque:
DO10 > 5% IN
DO11 > 10% IN
DO12 > 20% IN
DO13 > 30% IN
Funciones de Comando de
Programa
_Copy
Ejemplo 7
Agregue una rutina de interrupcin al Ejemplo 6:
Haga que la interrupcin se ejecute en funcin a una falla.
Use la entrada digital DI05 para disparar una falla externa.
Haga que la rutina de interrupcin determine cual fue la falla
ocurrida.
Haga que la rutina de interrupcin restablezca la falla externa.
/*=====================================================
IPOS Source File
=====================================================*/
long Apuntador, VelocidadDeseada, NumeroFalla;
#602
Binary Input
DI03
#603
Binary Input
DI04
Cambiar el parmetro
#604
Binary Input
DI05
Parametros Movidrive.
NumeroFalla
Codigo error
25
EEPROM
26
27
External Terminal Limit Switches
Missing
28
Fieldbus Timeout
XX
Fault
codes
Lista de Fallas
/*=====================================================
Interrupt Service Routine
=====================================================*/
Interrupt()
{
_GetSys( NumeroFalla, GS_ERROR );
}
/*=====================================================
Interrupt Service Routine
=====================================================*/
Interrupt()
{
_GetSys( NumeroFalla, GS_ERROR );
if( NumeroFalla == 26 )
{
_BitSet( ControlWord, 12 );
_BitClear( ControlWord, 12 );
}
}
/*=====================================================
Task2
=====================================================*/
Task2()
{
_BitMoveNeg( OptOutpIPOS, 0, OptOutpIPOS, 0 );
_Wait( 500 );
}
/*=====================================================
IPOS Source File
=====================================================*/
#define ValorRequerido_a H0
#define ValorRequerido_b H1
#define ValorRequerido_c H2
/*=====================================================
Initialisation
=====================================================*/
Bloque1_a = 1000 * 10;
Bloque1_b = 1200 * 10;
Bloque1_c = 1500 * 10;
Bloque2_a = 950 * 10;
Bloque2_b = 1150 * 10;
Bloque2_c = 1450 * 10;
Bloque3_a = 1175 * 10;
Bloque3_b = 1375 * 10;
Bloque3_c = 1675 * 10;
Actividad 3
Escriba un programa en Compilador que:
Use una entrada digital para hacer parpadear un led.
Luego de 5 segundos, el motor debe arrancar en sentido
horario (CW).
Utilice una segunda entrada para detener el parpadeo del led
y el motor.
Ejemplo 9
Escriba un programa en Compilador que:
Use las funciones touchprobe para utilizarlas como entradas rpidas.
/*----------------------------------------------Main Loop
-----------------------------------------------*/
while(1)
{
_TouchProbe( TP_EN1_HI );
_TouchProbe( TP_EN2_HI );
}
Posicionamiento en funcin de
un punto de referencia
_GoAbs.
Posicionamiento relativo a la
posicin actual _GoRel.
Parmetros
Parmetros de posicionamiento
P90_ Reference Travel
Establece valores usados por el
comando _Go0
P92_ Monitoring
Establece valores de limites de
carrera software.
Establece valores de error de
posicin.
P94_ - Encoder
Ejemplo 10
Escriba un programa en Compilador que:
Haga 5 revoluciones del motor, 10 veces, con una pausa de
un segundo entre cada movimiento.
Luego, vuelva a la posicin de home.
Esperar otro segundo.
Repetir.
/*=====================================================
IPOS Source File
=====================================================*/
#define MOVER 40960
#define HOME 0
long Contador;
/*=====================================================
Initialisation
=====================================================*/
_Go0( GO0_C_W_ZP );
Contador = 0;
/*----------------------------------------------Main Loop
-----------------------------------------------*/
while(1)
{
while( Contador <= 4 )
{
_GoRel( GO_WAIT, MOVER );
_Wait( 1000 );
Contador++;
}
_GoAbs( GO_WAIT, HOME );
_Wait( 1000 );
Contador = 0;
}
Ejemplo 11
Escriba un programa en Compilador que:
Contenga 8 posiciones de tabla.
Vaya a una de estas posiciones segn el estado de las
entradas digitales DI15, DI16 y DI17.
Use la entrada DI14 para sealizar cuando todas las entradas
estn listas.
Una vez que el motor este en posicin programe las
correspondientes salidas DO15, DO16 y DO17.
Bit 13
DI 17
Bit 12
DI 16
Bit 11
DI 15
Bit 10
DI 14
Bit 9
DI 13
Opcion DIO11
Bit 8
DI 12
Bit 7
DI 11
Bit 6
DI 10
Bit 5
DI 05
Bit 4
DI 04
Bit 3
DI 03
Bit 2
DI 02
Bit 1
DI 01
Movidrive Standard
Bit 0
DI 00
"0"
"0"
"0"
"0"
6
1
10
11
&
& & & & & & & & & & & & & & &
Mascara lgica AND de valorhex
7
"0"
Bit 31
"0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "1" "1" "1"
Bit14
Bit 9
Bit 8
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
2
2 =4
Bit 1
Bit 0
2 =2 20=1
4 + 2 + 1=7
Variable IPOSplus VelocidadAsignada luego de la
"0"
Bit 31
Bit 9
Bit 8
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
DI17
Bit 2
DI16
Bit 1
DI15
Bit 0
Condicin Terminal
Como resultado de la operacin AND, estos bits siempre son "0.
/*=====================================================
IPOS Source File
=====================================================*/
#define PosicionSeleccionada ((InputLevel >> 11) & 0x7)
#define Posicion1 H0
#define Posicion2 H1
#define Posicion3 H2
#define Posicion4 H3
#define Posicion5 H4
#define Posicion6 H5
#define Posicion7 H6
#define Posicion8 H7
#define DI14_mascara 0b10000000000
long Apuntador, PosicionDeseada;
/*=====================================================
Initialisation
=====================================================*/
Posicion1 = -20000;
Posicion2 = -10000;
Posicion3 = 10000;
Posicion4 = 20000;
Posicion5 = 30000;
Posicion6 = 40000;
Posicion7 = 60000;
Posicion8 = 100000;
_Go0( GO0_C_W_ZP );
/*----------------------------------------------May Loop
-----------------------------------------------*/
while(1)
{
_WaitInput( IC_LOW, DI14_mascara );
}
PosicionDeseada
H1
Posicion2
-10,000
H2
Posicion3
10,000
Po
si
ci
c i.
H0
Posicion1
-20,000
on
D
2.
c
ele
nS
1.
es
ea
da
io
s ic
Po
=3
20
Posicin Seleccin.
[Data Pointer]
H3
Posicion4
20,000
H4
Posicion5
30,000
H5
Posicion6
40,000
H6
Posicion7
60,000
/*----------------------------------------------Main Loop
-----------------------------------------------*/
while(1)
{
_WaitInput( IC_LOW, DI14_mascara );
Apuntador = PosicionSeleccionada;
PosicionDeseada = *Apuntador;
}
H7
Posicion8
100,000
/*----------------------------------------------Main Loop
-----------------------------------------------*/
while(1)
{
_WaitInput( IC_LOW, DI14_mascara );
Apuntador = PosicionSeleccionada;
PosicionDeseada = *Pointer;
_GoAbs( GO_WAIT, PosicionDeseada);
}
Bit 4
Bit 3
Condicin Terminal
/*----------------------------------------------Main Loop
-----------------------------------------------*/
while(1)
{
_WaitInput( IC_LOW, DI14_mascara );
Apuntador = PosicionSeleccionada;
PosicionDeseada = *Apuntador;
_GoAbs( GO_WAIT, PosicionSeleccionada);
OptOutpIPOS = PosicionSeleccionad << 5;
}
Actividad 4
Escriba un programa en Compilador:
Que busque la posicin de home.
Moverse 10 revoluciones absolutas y -10 revoluciones
absolutas.
Lo siguiente es mover 10 revoluciones adicionales absolutas
hasta que el motor llegue a 50 revoluciones absolutas.
Luego moverse, volver a la posicin de home.
Repetir.
_SBusCommDef
_SBusCommDef
_SBusCommOn
Esta instruccin permite iniciar la comunicacin
_MoviLink
Modifica parmetros de
Movidrive o Movidrive
compact.
Intercambia valores de
proceso (process data) con
otra unidad Movidrive,
Movidrive compact,
Movimot, o Movitrac 07.
_SBusCommDef y
_SBusCommOn
Intercambia datos en
aplicaciones IPOSplus
corriendo en otra unidad
Movidrive.
Ejemplo 12
Escriba un programa en Compilador que:
Enve y reciba dos variables de y desde otro equipo.
Inserte las estructuras para enviar y recibir comandos
a travs de una comunicacin S-Bus.
/*=====================================================
IPOS Source File
=====================================================*/
SCTRCYCL Enviar;
SCREC Recibir;
long EviarDato,RecibirDato;
/*=====================================================
Initialisation
=====================================================*/
Enviar.ObjectNo
= 1025;
Enviar.CycleTime
= 1;
Enviar.Offset
= 0;
Enviar.Format
= 8;
Enviar.DPointer
= numof(Enviar);
Recibir.ObjectNo = 1026;
Recibir.Format
= 8;
Recibir.DPointer = numof(Recibir);
/*=====================================================
Initialisation
=====================================================*/
Enviar.ObjectNo
= 1025;
Enviar.CycleTime
= 1;
Enviar.Offset
= 0;
Enviar.Format
= 8;
Enviar.DPointer
= numof(EnviarData);
Recibir.ObjectNo = 1026;
Recibir.Format
= 8;
Recibir.DPointer = numof(RecibirData);
_SBusCommDef( SCD_TRCYCL, Enviar );
_SBusCommDef( SCD_REC, Recibir );
_SBusCommOn( );
Ejemplo 13
Escriba un programa en Compilador que:
Cambie el parmetro P130 de otro equipo.
Inserte la estructura para los comandos Movilink.
/*=====================================================
IPOS Source File
=====================================================*/
MOVLNK Ml;
MLDATA Mld;
/*=====================================================
Initialisation
=====================================================*/
Ml.BusType
= 5;
Ml.Address
= 0;
Ml.Format
= 134;
Ml.Service
= 3;
Ml.Index
= 8470;
Ml.DPointer = numof(Mld);
Mld.WritePar = 1500;
/*----------------------------------------------Main Loop
-----------------------------------------------*/
while(1)
{
_MoviLink( Ml );
}
Actividad 5
Escriba dos programas en Compilador:
Equipo #1 enve la velocidad actual a otro equipo.
Equipo #2 se mueva para atrs y adelante 30
revoluciones de motor.
Equipo #2 use la seal de velocidad del Equipo#1
para ajustar su velocidad de movimiento.