tutorial transferencia sistema segundo rlc resueltos resorte orden masa funcion ejercicios ejemplo ecuacion diferencial descargar circuito amortiguador matlab batch-file cmd simulink coupling

matlab - transferencia - Co-simulación con Simulink: ejecución paso a paso e intercambio de parámetros con aplicaciones externas



sistema masa resorte amortiguador matlab simulink (2)

Hasta donde yo sé, la forma "adecuada" de combinar simulink con otras aplicaciones sería escribir S-Functions. Si la aplicación externa tiene una interfaz C / C ++, esta también debería ser, con mucho, la mejor solución para el rendimiento: http://www.mathworks.de/de/help/simulink/create-cc-s-functions.html

Tengo que realizar una simulación acoplada con Simulink y una aplicación externa (LS-DYNA). La simulación líder se realiza en Simulink, donde quiero implementar un bloque de funciones de la siguiente manera:

La interacción se realiza usando el cmd de las ventanas, por lo que el bloque Simulink debería hacer lo siguiente:

function [ x,y ] = ExternalSimlation( u,v ) % open the windows cmd and run the external simulation by passing u and v [status,cmdout] = system( ''command for executing the external simulation -u -v''); function [ x,y ] = readcmd( cmdout ) %algorithm to evaluate the cmd output end [x,y] = readcmd(cmdout); end

El código exacto NO debería ser relevante aquí. Mi pregunta es, ¿cómo puedo implementar la interfaz en el modelo simulink? ¿Puedo usar uno de los bloques de funciones personalizadas, usar mi código anterior y funcionará? Pero cuál, realmente no veo la diferencia.

O, mi otra idea era construir algo como lo siguiente:

Y luego usa un ciclo while como este:

while ... do [u,v] = sim(''model'', ''x'',x,''y'', y, ''some option just to run a single step''); [x,y] = ExternalSimlation( u,v ) [u,v] = sim(''model'' .... next step ...)

para ejecutar las simulaciones simulink paso a paso. ¿Cómo puedo darme cuenta de eso? (El resto de la simulación contiene algoritmos de control complejos, derivaciones e integraciones)

No tengo experiencia en escribir archivos por lotes, pero eso también me parece posible.

Si se pregunta por qué no solo estoy probando las cosas, es porque no tengo la aplicación externa disponible (solo sé cómo funcionan las entradas y salidas) y no quiero perder el tiempo codificando una aplicación sustitutiva solo para la prueba, si no es posible en absoluto.

¡Todos los consejos y experiencias en simulaciones acopladas con simulink son muy apreciados! ¡Gracias!


La pregunta se refiere a los mecanismos de co-simulación de Simulink. Sugiero http://www.mathworks.in/help/matlab/calling-external-functions.html como primer paso. Y para comparar y comprender las implementaciones de la solución de software existente, este manual debería ser de ayuda. http://vector.com/portal/medien/cmc/application_notes/AN-IND-1-007_Using_MATLAB_with_CANoe.pdf

Para empezar, básicamente todos los softwares de co-simulación con los que he trabajado usan interfaces COM de Windows. (No he trabajado matlab en ningún otro sistema operativo) Crean objetos y usan memoria compartida para transmisiones de datos. Y básicamente es a través de S- funciones que los alcanzan. También puede considerar la generación de código desde simulink o stateflow y escribir un contenedor para aplicaciones externas.