diff --git a/clients/README.md b/clients/README.md index 51f110358..24e7f11ce 100644 --- a/clients/README.md +++ b/clients/README.md @@ -6,9 +6,15 @@ For a protocol specification, please see `include/msg_format.h`. - opal/udp Contains the implementation of an asynchronous process block for RT-LAB. + This block allows exchanging sample values with VILLASnode over UDP using the `socket` node-type. Author: Steffen Vogel - labview This example model is using LabView standard UDP blocks to exchange sample values with VILLASnode over UDP using the `socket` node-type. Author: Eyke Liegmann + This block allows exchanging messages with an S2SS server over UDP/TCP. + +- rtds + This directory contains RSCAD drafts showing how to use GTSYNC and GTNET together with VILLASnode. + Author: Umar Farooq diff --git a/clients/labview/Simple.UDP_v1.vi b/clients/labview/Simple.UDP_v1.vi new file mode 100644 index 000000000..60ae47077 Binary files /dev/null and b/clients/labview/Simple.UDP_v1.vi differ diff --git a/clients/opal/Problem_AsyncIP_multiple_subsystems/OPAL_Async in complex models.txt b/clients/opal/Problem_AsyncIP_multiple_subsystems/OPAL_Async in complex models.txt deleted file mode 100644 index e6f6be57b..000000000 --- a/clients/opal/Problem_AsyncIP_multiple_subsystems/OPAL_Async in complex models.txt +++ /dev/null @@ -1,75 +0,0 @@ - -Source: http://www.opal-rt.com/kb-article/arinc-and-asyncserial-processes-complex-models - -Question: - -I am working with a model that has multiple subsystems (2 or more) and I am using multiple asynchronous processes such as ARINC429 and AsyncSerial. Every time I compile and load my model, some files are either not transferred, transferred twice and I also get warnings such as File(s) not found. How can I make sure my settings for transferring files are good and make my model as efficient as possible? - -Answer: - -This is quite a difficult issue to solve for everyone. It is a case by case study but there are some things you need to know and some guidelines to follow that will improve your file transfer process. This article is divided in two sections: ARINC429 and AsyncSerial as both asynchronous processes behave differently in their file transfer. - -ARINC 429 - -Baseline: The ARINC process does not have any automation system regarding the file transfers. Everything must be done manually (ie via MainControl/Configuration/Advanced/Files&Commands). - -No mather where the source files are located on the host, either in the model's directory or somewhere else, it does not have any impact on how the transfer must be done. The source files are the .mk and .c files related to an ARINC process. - -Case A: Model with one subsystem (SM) - -In this case, follow these steps to transfer the files and generate everything: -1.Add the compilation command "make -f". -2.Add the source files to be tranferred to target during compilation (.c and .mk) in ASCII mode. -3.Add the executable to be retrieved from target at the end of compilation in binary mode. -4.Add the executable to be transferred to the target at load in binary mode. -Steps 2 to 4 must be done for each ARINC process used in the model. - -Case B: Model with more than one subsystem (SM, SS, etc) - -In this case, a few more things must be done to make it work: -1.As the librairies needed to compile asynchronous processes are transferred to SM only, you must add them -to be transferred to target during compilation so all subsystems can be built without errors. The libs to transfer are: libOpal_429.a and libOpalAsyncApiCore.a Those librairies are available under C:\Opal-rt\RT-LABx.x.x\Common\lib\qnx6 and should be transferred in binary mode. If you do not transfer those librairies an error will occur during compilation (see KB article: http://www.opal-rt.com/kb-article/asyncproc-429-demo-junk-error-during-c...) -2.Add the compilation command "make -f". -3.Add the source files to be tranferred to target during compilation (.c and .mk) in ASCII mode. -4.Add the executable to be retrieved from target at the end of compilation in binary mode. -5.Add the executable to be transferred to the target at load in binary mode. -Steps 3 to 5 must be done for each ARINC process used in the model. - -Bug found: In case B, a bug was found in RT-LAB 8.3.2 (and older versions). The executable created on the target is retrieved twice from one subsystem. This bug has been reported and is under investigation by the R&D team. - -ASYNCSERIAL - -Baseline: The AsyncSerial process has an automation system regarding the file transfers. Some transfers must be done manually (ie via MainControl/Configuration/Advanced/Files&Commands), while some other files are automatically transferred by RT-LAB. - -Note: The AsyncSerial process provided by RT-LAB contains a generic word structure, functional with the example models. The provided structure comprises a 8 bytes header followed by the data on 8 bytes each. The header is composed of a device ID (2 bytes), a message ID (4 bytes) and the message length (2 bytes). The data can contain up to 64 elements, each one on 8 bytes. If the user's device expects to send/receive data in another format, cast or size, the user must modify the asynchronous process source files accordingly. This is mainly done by modifying sections labeled as "FORMAT TO SPECIFIC PROTOCOL HERE". - -The source files location is very important regarding the automatic transfer process. The source files are the .mk, .c and .h files related to the AsyncSerial process. - -Case A: All source files are located in the RT-LAB model's directory (not a subdirectory or another external directory). - -In this case, the .c and .mk files files are automatically transferred during compilation and the executable is retrieved at the end. The executable is also automatically transferred to target at load. -1.Add the .h file to be transferred to target during compilation in ASCII mode. This has been reported to R&D too as it should be automatic (just like it is for the .c and .mk file). -2.There is no need to add the "make -f /usr/opalrt/common/bin/opalmodelmk" command as it is done automatically. Compile and load. This works fine with multiple subsystems models and with multiple AsyncSerial processes as long as all the source files for all the processes are located in the model's directory. - -Case B: The source files are located somewhere else on the host computer. - -In this case, the transfer is more complicated and raises warnings. -1.Add the compilation command "make -f /usr/opalrt/common/bin/opalmodelmk". -2.Add the source files to be transferred to target during compilation (.c, .mk and .h) in ASCII mode. -3.The executable is retrieved automatically and it is transferred automatically at load. -4.In the compilation log, do not bother with the warnings about "File(s) not found". The reason for their appearance is that the automatic file transfer process search for those files in the model's directory but as they are somewhere else, they cannot be found. Those warnings usually come in pair, one for the .c file and one for the .mk file. Therefore, the number of AsyncSerial processes used in a model times 2 should give the number of warnings about File(s) not found. This has been reported to R&D. -5.When using multiple AsyncSerial processes, make sure you add the .c and .mk files for the second, third, fourth, etc processes because no warning or error will be displayed in the compilation log about the process not being generated, as RT-LAB has been able to build the first one. The only error you might encounter if you do not add those files for the subsequent processes is that the Name_of_executable_for_process_2 is not found when automatically retrieved at the end of compilation. -6.When using multiple AsyncSerial processes in multiple subsystems, it is possible that one of the AsyncSerial process found in subsystem 2 only is generated in subsystem 1 and subsystem 2 (and potentially all subsystems). The executable is therefore retrieved from all subsystems but transferred at load only in subsystem 2, which is good. This behavior has been reported to R&D too. - - - -In any case, it is always possible to manually transfer or retrieve files to/from target at compilation or load (via telnet and ftp) but it is not recommended and from our tests it is not required at all unless there is a problem. - - - -How to add a compilation command in RT-LAB - -Before compiling, go to the Development tab of your model. Reach for the Compiler tab inside the Development tab. Under Compiler Command, add your compilation command ( make -f /usr/opalrt/common/bin/opalmodelmk ) - - -Contact Support \ No newline at end of file diff --git a/clients/opal/Problem_AsyncIP_multiple_subsystems/Problem_AsyncIP_multiple_subsystems.txt b/clients/opal/Problem_AsyncIP_multiple_subsystems/Problem_AsyncIP_multiple_subsystems.txt deleted file mode 100644 index fa96565c0..000000000 --- a/clients/opal/Problem_AsyncIP_multiple_subsystems/Problem_AsyncIP_multiple_subsystems.txt +++ /dev/null @@ -1,18 +0,0 @@ - -Problem occurs when there are multiple subsystems (SM_, SS_, ...) - -Even there is no OpAsyncIPCtrl in all subsystems, RT-Lab during building process wants to generate AsyncIP exe, if there is no OpAsyncIPCtrl it shows error - -Workaround for now: place fake OpAsyncIPCtrl in each subsystem - -Additional problem: After Load, only AsyncIP in SM_ is started - -Zapravo: this helps that you do not need fake blocks: - -.llm file should contain the following: -note: path to libOpalAsyncApiCore.a depends on version of RT-Lab - -[ExtraPutFilesComp] -C:\OPAL-RT\RT-LAB\v10.7.7.506\common\lib\redhawk\libOpalAsyncApiCore.a=Binary - -but it seems that still you can you it only in SM_... \ No newline at end of file diff --git a/clients/opal/README.md b/clients/opal/README.md new file mode 100644 index 000000000..629f87b1a --- /dev/null +++ b/clients/opal/README.md @@ -0,0 +1,162 @@ +# Asynchronous Process interface to VILLASnode / GTNET-SKT + +To "models" folder of OPAL project folder copy: +folder: include +folder: src +file: villas.mk + +---------------------------------------------- + +.llm file should contain the following: +note: path to libOpalAsyncApiCore.a depends on version of RT-Lab + +``` +[ExtraPutFilesComp] +C:\OPAL-RT\RT-LAB\v10.7.7.506\common\lib\redhawk\libOpalAsyncApiCore.a=Binary +include\config.h=Ascii +include\msg.h=Ascii +include\msg_format.h=Ascii +include\socket.h=Ascii +include\utils.h=Ascii +villas.mk=Ascii +src\msg.c=Ascii +src\main.c=Ascii +src\socket.c=Ascii +src\utils.c=Ascii +``` + +-------------------------------------------------- + +In RT-Lab under Files tab, we should see the files listed above for .llm file + +-------------------------------------------------- + +Development tab -> Compiler -> Compiler Command (makefile) add the following command +/usr/bin/make -f /usr/opalrt/common/bin/opalmodelmk + +-------------------------------------------------- + +max umber of values in UDP packets: +there’s a „#define“ inside the implementation which must be changed accordingly. +The #define is in file: model_directory/include/config.h There you will find a directive called MAX_VALUES. + +# Troubleshooting + +## AsyncIP executable still running on OPAL-RT target + +- During ***Build the model*** a message should be printed: +``` +### Created executable: AsyncIP +``` + +- After the simulation stop + `AsyncIP` may still stay alive after the simulation stop. You have to remove it manually because the next simulation start will not be able to start the new AsyncIP. + +# Kill running AsyncIP on OPAL + +1. Start putty.exe + +2. Connect to OPAL by using the existing profiles + - make sure that you are in the proper folder by + $ ll + +3. Kill all running processes with name 'AsyncIP' + + $ killall AsyncIP + +4. Logout from OPAL + + $ exit + +## Problem occurs when there are multiple subsystems (SM_, SS_, ...) + +Even there is no OpAsyncIPCtrl in all subsystems, RT-Lab during building process wants to generate AsyncIP exe, if there is no OpAsyncIPCtrl it shows error + +Workaround for now: place fake OpAsyncIPCtrl in each subsystem + +Additional problem: After Load, only AsyncIP in SM_ is started + +Zapravo: this helps that you do not need fake blocks: + +.llm file should contain the following: +note: path to libOpalAsyncApiCore.a depends on version of RT-Lab + +[ExtraPutFilesComp] +C:\OPAL-RT\RT-LAB\v10.7.7.506\common\lib\redhawk\libOpalAsyncApiCore.a=Binary + +but it seems that still you can you it only in SM_... + +## Complex models + +Source: http://www.opal-rt.com/kb-article/arinc-and-asyncserial-processes-complex-models + +Question: + +> I am working with a model that has multiple subsystems (2 or more) and I am using multiple asynchronous processes such as ARINC429 and AsyncSerial. Every time I compile and load my model, some files are either not transferred, transferred twice and I also get warnings such as File(s) not found. How can I make sure my settings for transferring files are good and make my model as efficient as possible? + +Answer: + +> This is quite a difficult issue to solve for everyone. It is a case by case study but there are some things you need to know and some guidelines to follow that will improve your file transfer process. This article is divided in two sections: ARINC429 and AsyncSerial as both asynchronous processes behave differently in their file transfer. + +### ARINC 429 + +Baseline: The ARINC process does not have any automation system regarding the file transfers. Everything must be done manually (ie via MainControl/Configuration/Advanced/Files&Commands). + +No mather where the source files are located on the host, either in the model's directory or somewhere else, it does not have any impact on how the transfer must be done. The source files are the .mk and .c files related to an ARINC process. + +#### Case A: Model with one subsystem (SM) + +In this case, follow these steps to transfer the files and generate everything: + +1. Add the compilation command "make -f". +2. Add the source files to be tranferred to target during compilation (.c and .mk) in ASCII mode. +3. Add the executable to be retrieved from target at the end of compilation in binary mode. +4. Add the executable to be transferred to the target at load in binary mode. + +Steps 2 to 4 must be done for each ARINC process used in the model. + +#### Case B: Model with more than one subsystem (SM, SS, etc) + +In this case, a few more things must be done to make it work: + +1. As the librairies needed to compile asynchronous processes are transferred to SM only, you must add them to be transferred to target during compilation so all subsystems can be built without errors. The libs to transfer are: libOpal_429.a and libOpalAsyncApiCore.a Those librairies are available under C:\Opal-rt\RT-LABx.x.x\Common\lib\qnx6 and should be transferred in binary mode. If you do not transfer those librairies an error will occur during compilation (see KB article: http://www.opal-rt.com/kb-article/asyncproc-429-demo-junk-error-during-c...) +2. Add the compilation command "make -f". +3. Add the source files to be tranferred to target during compilation (.c and .mk) in ASCII mode. +4. Add the executable to be retrieved from target at the end of compilation in binary mode. +5. Add the executable to be transferred to the target at load in binary mode. + +Steps 3 to 5 must be done for each ARINC process used in the model. + +Bug found: In case B, a bug was found in RT-LAB 8.3.2 (and older versions). The executable created on the target is retrieved twice from one subsystem. This bug has been reported and is under investigation by the R&D team. + +### ASYNCSERIAL + +Baseline: The AsyncSerial process has an automation system regarding the file transfers. Some transfers must be done manually (ie via MainControl/Configuration/Advanced/Files&Commands), while some other files are automatically transferred by RT-LAB. + +Note: The AsyncSerial process provided by RT-LAB contains a generic word structure, functional with the example models. The provided structure comprises a 8 bytes header followed by the data on 8 bytes each. The header is composed of a device ID (2 bytes), a message ID (4 bytes) and the message length (2 bytes). The data can contain up to 64 elements, each one on 8 bytes. If the user's device expects to send/receive data in another format, cast or size, the user must modify the asynchronous process source files accordingly. This is mainly done by modifying sections labeled as "FORMAT TO SPECIFIC PROTOCOL HERE". + +The source files location is very important regarding the automatic transfer process. The source files are the .mk, .c and .h files related to the AsyncSerial process. + +#### Case A: All source files are located in the RT-LAB model's directory (not a subdirectory or another external directory). + +In this case, the .c and .mk files files are automatically transferred during compilation and the executable is retrieved at the end. The executable is also automatically transferred to target at load. + +1. Add the .h file to be transferred to target during compilation in ASCII mode. This has been reported to R&D too as it should be automatic (just like it is for the .c and .mk file). +2. There is no need to add the "make -f /usr/opalrt/common/bin/opalmodelmk" command as it is done automatically. Compile and load. This works fine with multiple subsystems models and with multiple AsyncSerial processes as long as all the source files for all the processes are located in the model's directory. + +#### Case B: The source files are located somewhere else on the host computer. + +In this case, the transfer is more complicated and raises warnings. + +1. Add the compilation command "make -f /usr/opalrt/common/bin/opalmodelmk". +2. Add the source files to be transferred to target during compilation (.c, .mk and .h) in ASCII mode. +3. The executable is retrieved automatically and it is transferred automatically at load. +4. In the compilation log, do not bother with the warnings about "File(s) not found". The reason for their appearance is that the automatic file transfer process search for those files in the model's directory but as they are somewhere else, they cannot be found. Those warnings usually come in pair, one for the .c file and one for the .mk file. Therefore, the number of AsyncSerial processes used in a model times 2 should give the number of warnings about File(s) not found. This has been reported to R&D. +5. When using multiple AsyncSerial processes, make sure you add the .c and .mk files for the second, third, fourth, etc processes because no warning or error will be displayed in the compilation log about the process not being generated, as RT-LAB has been able to build the first one. The only error you might encounter if you do not add those files for the subsequent processes is that the Name_of_executable_for_process_2 is not found when automatically retrieved at the end of compilation. +6. When using multiple AsyncSerial processes in multiple subsystems, it is possible that one of the AsyncSerial process found in subsystem 2 only is generated in subsystem 1 and subsystem 2 (and potentially all subsystems). The executable is therefore retrieved from all subsystems but transferred at load only in subsystem 2, which is good. This behavior has been reported to R&D too. + +In any case, it is always possible to manually transfer or retrieve files to/from target at compilation or load (via telnet and ftp) but it is not recommended and from our tests it is not required at all unless there is a problem. + +### How to add a compilation command in RT-LAB + +Before compiling, go to the Development tab of your model. Reach for the Compiler tab inside the Development tab. Under Compiler Command, add your compilation command ( make -f /usr/opalrt/common/bin/opalmodelmk ) diff --git a/clients/opal/udp/models/send_receive/send_receive.llm b/clients/opal/udp/models/send_receive/send_receive.llm index 7dc26b5b9..8516670ae 100644 --- a/clients/opal/udp/models/send_receive/send_receive.llm +++ b/clients/opal/udp/models/send_receive/send_receive.llm @@ -21,10 +21,10 @@ MONITORING=ON MONITORING_BLOCK=OFF MONITORING_DISPLAY=NEVER MSG_PRECISION_FACTOR=0 -MaxDynamicSignals=2/0/100/24/42/ +MaxDynamicSignals=2/0/100/24/100/ NB_STEP_WITHOUT_OVERRUNS=10 OPAL_DEBUG=OFF -OP_MATLABR2011B=1 +OP_MATLABR2013A=1 OS_COMPILE_RELEASE=2.6.29.6-opalrt-5 PRINT_LOG_LEVEL=ALWAYS RESET_IO_MISSING=ON @@ -34,8 +34,10 @@ USER_SRCS= WATCHDOG_TIMEOUT=5000 [EnvVars_REDHAWK_DYN_1] INTERNAL_IGN_SOURCE_FILE=sfun_gen_async_ctrl.c sfun_recv_async.c sfun_send_async.c -INTERNAL_LIBRARY2=-lOpalAsyncApiR2011b +INTERNAL_LIBRARY2=-lOpalAsyncApiR2013a INTERNAL_LIBRARY3=-lOpalAsyncApiCore +[ExtraGetFilesComp_1_RT_LAB] +s2ss=Binary|Async_Proc [ExtraPutFilesComp] include\config.h=Ascii include\msg.h=Ascii @@ -48,30 +50,33 @@ src\main.c=Ascii src\socket.c=Ascii src\utils.c=Ascii [ExtraPutFilesComp_1_RT_LAB] -C:\OPAL-RT\RT-LAB\v10.5.9.356\common\lib\redhawk\libOpalAsyncApiCore.a=Binary +C:\OPAL-RT\RT-LAB\v11.0.2.410\common\lib\redhawk\libOpalAsyncApiCore.a=Binary|Other +[ExtraPutFilesLoad_1_RT_LAB] +.\send_receive_sm_model\OpREDHAWKtarget\s2ss=Binary|Async_Proc [General] -ATT_CHECKSUM1=703418586 -ATT_CHECKSUM2=799511679 -ATT_CHECKSUM3=2136361860 -ATT_CHECKSUM4=3725771660 +ATT_CHECKSUM1=1967915764 +ATT_CHECKSUM2=1071010712 +ATT_CHECKSUM3=752104040 +ATT_CHECKSUM4=1738184673 ATT_CREATED_BY=jwu ATT_CREATED_ON=Thu Apr 15 08:21:54 1999 ATT_ENABLE_PTA=OFF ATT_HANDLE_CONSOLE=ON ATT_LAST_SAVED_BY=ACS -ATT_LAST_SAVED_ON=Thu Sep 04 16:25:19 2014 -ATT_REVISION=1.445 +ATT_LAST_SAVED_ON=Thu May 19 14:14:01 2016 +ATT_REFERENCE_MDL_PATHS= +ATT_REVISION=1.446 AutoRetrieveFiles=ON AutoRetrieveRtlab=ON CompilerVersion=AUTOMATIC DESCRIPTION= DinamoFlag=OFF -FILENAME=D:\msv\02_msv-svo\opal\s2ss_tests\models\send_receive\send_receive.mdl +FILENAME=D:\svo\s2ss\clients\opal\udp\models\send_receive\send_receive.mdl FORCE_RECOMPILE=0 IMPORTED_GLOBAL_VARIABLES=1 -LastCompileRtlabVersion=v10.5.9.356 -LastMatlabUsed=21 -LastMatlabUsedName=v7.13 +LastCompileRtlabVersion=v11.0.2.410 +LastMatlabUsed=24 +LastMatlabUsedName=v8.1 MATLAB_USED_IN_MODEL=21 Name=send_receive PRINT_CYCLE=OFF @@ -94,6 +99,8 @@ TimeStep=0.000050000000000 sc_consoleTimeStep=-1.000000000000000 sm_modelTimeStep=0.000049999998737 sm_send_receiveTimeStep=0.000049999998737 +[General_1] +TargetPreCompileCmd=make -f /usr/opalrt/common/bin/opalmodelmk [NodeMapping] sm_model=ACS_OPAL_RT sm_model_CORE_ASSIGNATION=1 diff --git a/clients/opal/udp/models/send_receive/send_receive.mdl b/clients/opal/udp/models/send_receive/send_receive.mdl index 85cd66088..d710bdf25 100644 --- a/clients/opal/udp/models/send_receive/send_receive.mdl +++ b/clients/opal/udp/models/send_receive/send_receive.mdl @@ -1,13 +1,13 @@ # $Revision: 1.1 $ Model { Name "send_receive" - Version 7.8 + Version 8.1 MdlSubVersion 0 GraphicalInterface { NumRootInports 0 NumRootOutports 0 ParameterArgumentNames "" - ComputedModelVersion "1.445" + ComputedModelVersion "1.446" NumModelReferences 0 NumTestPointedSignals 0 } @@ -22,15 +22,89 @@ Model { MinMaxOverflowArchiveMode "Overwrite" FPTRunName "Run 1" MaxMDLFileLineLength 120 + Object { + $PropName "BdWindowsInfo" + $ObjectID 1 + $ClassName "Simulink.BDWindowsInfo" + Array { + Type "Simulink.WindowInfo" + Dimension 2 + Object { + $ObjectID 2 + IsActive [1] + Location [16.0, 52.0, 1452.0, 912.0] + Object { + $PropName "ModelBrowserInfo" + $ObjectID 3 + $ClassName "Simulink.ModelBrowserInfo" + Visible [0] + DockPosition "Left" + Width [50] + Height [50] + Filter [9] + } + Object { + $PropName "ExplorerBarInfo" + $ObjectID 4 + $ClassName "Simulink.ExplorerBarInfo" + Visible [1] + } + Object { + $PropName "EditorsInfo" + $ObjectID 5 + $ClassName "Simulink.EditorInfo" + IsActive [1] + ViewObjType "SimulinkSubsys" + LoadSaveID "13" + Extents [1402.0, 738.0] + ZoomFactor [1.6] + Offset [94.375, -58.375] + } + } + Object { + $ObjectID 6 + IsActive [0] + Location [346.0, 78.0, 876.0, 912.0] + Object { + $PropName "ModelBrowserInfo" + $ObjectID 7 + $ClassName "Simulink.ModelBrowserInfo" + Visible [0] + DockPosition "Left" + Width [50] + Height [50] + Filter [9] + } + Object { + $PropName "ExplorerBarInfo" + $ObjectID 8 + $ClassName "Simulink.ExplorerBarInfo" + Visible [1] + } + Object { + $PropName "EditorsInfo" + $ObjectID 9 + $ClassName "Simulink.EditorInfo" + IsActive [1] + ViewObjType "SimulinkTopLevel" + LoadSaveID "0" + Extents [826.0, 738.0] + ZoomFactor [1.0] + Offset [0.0, 0.0] + } + } + PropName "WindowsInfo" + } + } Created "Thu Apr 15 08:21:54 1999" Creator "jwu" UpdateHistory "UpdateHistoryNever" ModifiedByFormat "%" LastModifiedBy "ACS" ModifiedDateFormat "%" - LastModifiedDate "Thu Sep 04 16:25:19 2014" - RTWModifiedTimeStamp 331748717 - ModelVersionFormat "1.%" + LastModifiedDate "Thu May 19 14:14:01 2016" + RTWModifiedTimeStamp 385568034 + ModelVersionFormat "1.%" ConfigurationManager "none" SampleTimeColors off SampleTimeAnnotations off @@ -63,6 +137,24 @@ Model { AccelTemplateMakefile "accel_default_tmf" AccelMakeCommand "make_rtw" TryForcingSFcnDF off + Object { + $PropName "DataLoggingOverride" + $ObjectID 10 + $ClassName "Simulink.SimulationData.ModelLoggingInfo" + model_ "send_receive" + Array { + Type "Cell" + Dimension 1 + Cell "send_receive" + PropName "logAsSpecifiedByModels_" + } + Array { + Type "Cell" + Dimension 1 + Cell "" + PropName "logAsSpecifiedByModelsSSIDs_" + } + } RecordCoverage off CovPath "/" CovSaveName "covdata" @@ -105,14 +197,14 @@ Model { Type "Handle" Dimension 1 Simulink.ConfigSet { - $ObjectID 1 - Version "1.11.1" + $ObjectID 11 + Version "1.13.0" Array { Type "Handle" Dimension 8 Simulink.SolverCC { - $ObjectID 2 - Version "1.11.1" + $ObjectID 12 + Version "1.13.0" StartTime "0.0" StopTime "inf" AbsTol "1e-6" @@ -130,6 +222,7 @@ Model { MaxConsecutiveMinStep "1" RelTol "1e-3" SolverMode "SingleTasking" + EnableConcurrentExecution off ConcurrentTasks off Solver "ode4" SolverName "ode4" @@ -145,8 +238,8 @@ Model { InsertRTBMode "Whenever possible" } Simulink.DataIOCC { - $ObjectID 3 - Version "1.11.1" + $ObjectID 13 + Version "1.13.0" Decimation "1" ExternalInput "[]" FinalStateName "xFinal" @@ -177,8 +270,8 @@ Model { Refine "1" } Simulink.OptimizationCC { - $ObjectID 4 - Version "1.11.1" + $ObjectID 14 + Version "1.13.0" Array { Type "Cell" Dimension 4 @@ -226,11 +319,11 @@ Model { BufferReusableBoundary on SimCompilerOptimization "Off" AccelVerboseBuild off - AccelParallelForEachSubsystem on + ParallelExecutionInRapidAccelerator on } Simulink.DebuggingCC { - $ObjectID 5 - Version "1.11.1" + $ObjectID 15 + Version "1.13.0" RTPrefix "error" ConsistencyChecking "none" ArrayBoundsChecking "none" @@ -279,7 +372,7 @@ Model { UnnecessaryDatatypeConvMsg "none" VectorMatrixConversionMsg "none" InvalidFcnCallConnMsg "error" - FcnCallInpInsideContextMsg "Use local settings" + FcnCallInpInsideContextMsg "UseLocalSettings" SignalLabelMismatchMsg "none" UnconnectedInputMsg "warning" UnconnectedOutputMsg "warning" @@ -315,14 +408,17 @@ Model { SFNoUnconditionalDefaultTransitionDiag "warning" SFTransitionOutsideNaturalParentDiag "warning" SFUnconditionalTransitionShadowingDiag "warning" + SFUndirectedBroadcastEventsDiag "warning" + SFTransitionActionBeforeConditionDiag "warning" } Simulink.HardwareCC { - $ObjectID 6 - Version "1.11.1" + $ObjectID 16 + Version "1.13.0" ProdBitPerChar 8 ProdBitPerShort 16 ProdBitPerInt 32 ProdBitPerLong 32 + ProdBitPerLongLong 64 ProdBitPerFloat 32 ProdBitPerDouble 64 ProdBitPerPointer 32 @@ -332,17 +428,20 @@ Model { ProdEndianess "Unspecified" ProdWordSize 32 ProdShiftRightIntArith on + ProdLongLongMode off ProdHWDeviceType "32-bit Generic" TargetBitPerChar 8 TargetBitPerShort 16 TargetBitPerInt 32 TargetBitPerLong 32 + TargetBitPerLongLong 64 TargetBitPerFloat 32 TargetBitPerDouble 64 TargetBitPerPointer 32 TargetLargestAtomicInteger "Char" TargetLargestAtomicFloat "None" TargetShiftRightIntArith on + TargetLongLongMode off TargetIntDivRoundTo "Undefined" TargetEndianess "Unspecified" TargetWordSize 32 @@ -354,8 +453,8 @@ Model { ProdEqTarget on } Simulink.ModelReferenceCC { - $ObjectID 7 - Version "1.11.1" + $ObjectID 17 + Version "1.13.0" UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange" CheckModelReferenceTargetMessage "error" EnableParallelModelReferenceBuilds off @@ -369,8 +468,8 @@ Model { SupportModelReferenceSimTargetCustomCode off } Simulink.SFSimCC { - $ObjectID 8 - Version "1.11.1" + $ObjectID 18 + Version "1.13.0" SFSimEnableDebug on SFSimOverflowDetection on SFSimEcho on @@ -384,8 +483,8 @@ Model { } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" - $ObjectID 9 - Version "1.11.1" + $ObjectID 19 + Version "1.13.0" Array { Type "Cell" Dimension 1 @@ -396,6 +495,7 @@ Model { GenCodeOnly off MakeCommand "make_rtw" GenerateMakefile on + PackageGeneratedCodeAndArtifacts off TemplateMakefile "grt_default_tmf" GenerateReport off SaveLog off @@ -412,6 +512,14 @@ Model { RTWUseSimCustomCode off IncludeHyperlinkInReport off LaunchReport off + PortableWordSizes off + GenerateErtSFunction off + CreateSILPILBlock "None" + CodeExecutionProfiling off + CodeExecutionProfileVariable "executionProfile" + CodeProfilingSaveOptions "SummaryOnly" + CodeProfilingInstrumentation off + SILDebugging off TargetLang "C" IncludeBusHierarchyInRTWFileBlockHierarchyMap off IncludeERTFirstTime on @@ -421,8 +529,9 @@ Model { GenerateTraceReportSf off GenerateTraceReportEml off GenerateCodeInfo off - GenerateSLWebview off + GenerateWebview off GenerateCodeMetricsReport off + GenerateCodeReplacementReport off RTWCompilerOptimization "Off" CheckMdlBeforeBuild "Off" CustomRebuildMode "OnUpdate" @@ -430,8 +539,8 @@ Model { Type "Handle" Dimension 2 Simulink.CodeAppCC { - $ObjectID 10 - Version "1.11.1" + $ObjectID 20 + Version "1.13.0" Array { Type "Cell" Dimension 16 @@ -462,6 +571,7 @@ Model { PreserveName off PreserveNameWithParent off ShowEliminatedStatement on + OperatorAnnotations off IncAutoGenComments off SimulinkDataObjDesc off SFDataObjDesc off @@ -469,7 +579,7 @@ Model { IncDataTypeInIds off MangleLength 1 CustomSymbolStrGlobalVar "$R$N$M" - CustomSymbolStrType "$N$R$M" + CustomSymbolStrType "$N$R$M_T" CustomSymbolStrField "$N$M" CustomSymbolStrFcn "$R$N$M$F" CustomSymbolStrFcnArg "rt$I$N$M" @@ -484,14 +594,15 @@ Model { SimulinkBlockComments on MATLABSourceComments off EnableCustomComments off + InternalIdentifier "Shortened" InlinedPrmAccess "Literals" ReqsInCode off UseSimReservedNames off } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" - $ObjectID 11 - Version "1.11.1" + $ObjectID 21 + Version "1.13.0" Array { Type "Cell" Dimension 12 @@ -501,21 +612,20 @@ Model { Cell "ERTCustomFileBanners" Cell "GenerateSampleERTMain" Cell "GenerateTestInterfaces" - Cell "MultiInstanceERTCode" + Cell "SupportContinuousTime" Cell "PurelyIntegerCode" Cell "SupportNonInlinedSFcns" Cell "SupportComplex" Cell "SupportAbsoluteTime" - Cell "SupportContinuousTime" + Cell "GenerateAllocFcn" PropName "DisabledProps" } TargetFcnLib "ansi_tfl_tmw.mat" TargetLibSuffix "" TargetPreCompLibLocation "" - TargetFunctionLibrary "ANSI_C" + CodeReplacementLibrary "ANSI_C" UtilityFuncGeneration "Auto" ERTMultiwordTypeDef "System defined" - CodeExecutionProfiling off ERTMultiwordLength 256 MultiwordLength 2048 GenerateFullHeader on @@ -546,10 +656,12 @@ Model { SupportVariableSizeSignals off EnableShiftOperators on ParenthesesLevel "Nominal" - PortableWordSizes off + MATLABClassNameForMDSCustomization "Simulink.SoftwareTarget.GRTCustomization" ModelStepFunctionPrototypeControlCompliant off CPPClassGenCompliant off AutosarCompliant off + GRTInterface on + GenerateAllocFcn off UseMalloc off ExtMode off ExtModeStaticAlloc off @@ -577,8 +689,19 @@ Model { } Simulink.ConfigSet { $PropName "ActiveConfigurationSet" - $ObjectID 1 + $ObjectID 11 } + Object { + $PropName "DataTransfer" + $ObjectID 22 + $ClassName "Simulink.GlobalDataTransfer" + DefaultTransitionBetweenSyncTasks "Ensure deterministic transfer (maximum delay)" + DefaultTransitionBetweenAsyncTasks "Ensure data integrity only" + DefaultTransitionBetweenContTasks "Ensure deterministic transfer (minimum delay)" + DefaultExtrapolationMethodBetweenContTasks "None" + AutoInsertRateTranBlk [0] + } + ExplicitPartitioning off BlockDefaults { ForegroundColor "black" BackgroundColor "white" @@ -610,6 +733,25 @@ Model { FontWeight "normal" FontAngle "normal" } + MaskDefaults { + SelfModifiable "off" + IconFrame "on" + IconOpaque "on" + RunInitForIconRedraw "off" + IconRotate "none" + PortRotate "default" + IconUnits "autoscale" + } + MaskParameterDefaults { + Evaluate "on" + Tunable "on" + NeverSave "off" + Internal "off" + ReadOnly "off" + Enabled "on" + Visible "on" + ToolTip "on" + } BlockParameterDefaults { Block { BlockType Constant @@ -702,6 +844,7 @@ Model { YMax "5" SaveToWorkspace off SaveName "ScopeData" + DataFormat "Array" LimitDataPoints on MaxDataPoints "5000" Decimation "1" @@ -731,6 +874,7 @@ Model { SystemSampleTime "-1" RTWFcnNameOpts "Auto" RTWFileNameOpts "Auto" + FunctionInterfaceSpec "void_void" RTWMemSecFuncInitTerm "Inherit from model" RTWMemSecFuncExecute "Inherit from model" RTWMemSecDataConstants "Inherit from model" @@ -763,7 +907,7 @@ Model { } System { Name "send_receive" - Location [826, 82, 1646, 981] + Location [346, 78, 1222, 990] Open on ModelBrowserVisibility off ModelBrowserWidth 247 @@ -777,13 +921,14 @@ Model { ShowPageBoundaries off ZoomFactor "100" ReportName "simulink-default.rpt" - SIDHighWatermark "44" + SIDHighWatermark "46" Block { BlockType SubSystem Name "sc_console" SID "3" Ports [3] Position [410, 98, 610, 192] + ZOrder -1 BackgroundColor "lightBlue" MinAlgLoopOccurrences off PropExecContextOutsideSubsystem off @@ -794,7 +939,7 @@ Model { MaskHideContents off System { Name "sc_console" - Location [-17, 82, 1626, 997] + Location [16, 52, 1715, 1151] Open off ModelBrowserVisibility off ModelBrowserWidth 200 @@ -812,6 +957,7 @@ Model { Name "data recv" SID "4" Position [140, 168, 170, 182] + ZOrder -1 BackgroundColor "yellow" IconDisplay "Port number" } @@ -820,6 +966,7 @@ Model { Name "errors_status" SID "5" Position [140, 128, 170, 142] + ZOrder -2 BackgroundColor "yellow" Port "2" IconDisplay "Port number" @@ -829,6 +976,7 @@ Model { Name "data send" SID "29" Position [140, 208, 170, 222] + ZOrder -3 BackgroundColor "yellow" Port "3" IconDisplay "Port number" @@ -839,6 +987,7 @@ Model { SID "6" Ports [1, 2] Position [285, 116, 290, 154] + ZOrder -4 BackgroundColor "black" ShowName off Outputs "[2 1]" @@ -849,6 +998,7 @@ Model { SID "32" Ports [1, 5] Position [375, 211, 380, 299] + ZOrder -5 ShowName off Outputs "5" DisplayOption "bar" @@ -859,6 +1009,7 @@ Model { SID "39" Ports [1, 5] Position [375, 306, 380, 394] + ZOrder -6 ShowName off Outputs "5" DisplayOption "bar" @@ -869,6 +1020,7 @@ Model { SID "34" Ports [2, 1] Position [465, 236, 470, 274] + ZOrder -7 ShowName off Inputs "2" DisplayOption "bar" @@ -879,7 +1031,8 @@ Model { SID "9" Ports [3, 3] Position [225, 135, 255, 215] - LibraryVersion "1.348" + ZOrder -8 + LibraryVersion "1.471" SourceBlock "rtlab/OpComm" SourceType "RT-LAB OpComm" nbport "3" @@ -916,6 +1069,7 @@ Model { SID "10" Ports [1] Position [385, 72, 455, 118] + ZOrder -32 BackgroundColor "yellow" FontName "Arial" FontSize 8 @@ -928,6 +1082,7 @@ Model { SID "40" Ports [1] Position [590, 159, 620, 191] + ZOrder -33 BackgroundColor "yellow" Floating off Location [826, 517, 1334, 952] @@ -947,6 +1102,7 @@ Model { LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" MarkerStyles "none|none|none|none|none|none" } + ShowLegends off YMin "-1.75" YMax "4" SaveName "ScopeData1" @@ -959,6 +1115,7 @@ Model { SID "33" Ports [1] Position [590, 239, 620, 271] + ZOrder -34 BackgroundColor "yellow" Floating off Location [826, 517, 1334, 952] @@ -978,6 +1135,7 @@ Model { LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" MarkerStyles "none|none|none|none|none|none" } + ShowLegends off YMin "-1.75" YMax "4" DataFormat "StructureWithTime" @@ -989,6 +1147,7 @@ Model { SID "41" Ports [1] Position [590, 389, 620, 421] + ZOrder -35 BackgroundColor "yellow" Floating off Location [826, 517, 1334, 952] @@ -1008,6 +1167,7 @@ Model { LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" MarkerStyles "none|none|none|none|none|none" } + ShowLegends off YMin "-1.75" YMax "4" SaveName "ScopeData2" @@ -1020,6 +1180,7 @@ Model { SID "43" Ports [1] Position [590, 314, 620, 346] + ZOrder -36 BackgroundColor "yellow" Floating off Location [826, 517, 1334, 952] @@ -1039,6 +1200,7 @@ Model { LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" MarkerStyles "none|none|none|none|none|none" } + ShowLegends off YMin "-1.75" YMax "4" SaveName "ScopeData3" @@ -1051,6 +1213,7 @@ Model { SID "12" Ports [1] Position [390, 133, 450, 157] + ZOrder -37 BackgroundColor "yellow" FontName "Arial" FontSize 8 @@ -1170,8 +1333,10 @@ Model { } } Annotation { + SID "45" Name "Simple analysis of round trip time" Position [273, 42] + ZOrder -1 FontName "Verdana" FontSize 14 FontWeight "bold" @@ -1184,6 +1349,7 @@ Model { SID "13" Ports [0, 3] Position [55, 97, 235, 193] + ZOrder -2 BackgroundColor "lightBlue" MinAlgLoopOccurrences off PropExecContextOutsideSubsystem off @@ -1194,7 +1360,7 @@ Model { MaskHideContents off System { Name "sm_model" - Location [2, 82, 1662, 980] + Location [16, 52, 1468, 964] Open on ModelBrowserVisibility off ModelBrowserWidth 200 @@ -1206,13 +1372,14 @@ Model { TiledPaperMargins [1.270000, 1.270000, 1.270000, 1.270000] TiledPageScale 1 ShowPageBoundaries off - ZoomFactor "180" + ZoomFactor "160" Block { BlockType Mux Name "Mux" SID "16" Ports [3, 1] Position [870, 140, 875, 190] + ZOrder -1 ShowName off Inputs "3" DisplayOption "bar" @@ -1223,6 +1390,7 @@ Model { SID "17" Ports [2, 1] Position [290, 209, 295, 271] + ZOrder -2 BackgroundColor "yellow" ShowName off Inputs "2" @@ -1234,6 +1402,7 @@ Model { SID "18" Ports [] Position [105, 112, 234, 173] + ZOrder -3 LibraryVersion "1.10" SourceBlock "rtio_generic_ip/OpIPSocketCtrl" SourceType "OpAsyncIPCtrl" @@ -1243,7 +1412,7 @@ Model { ip_port_remote "12000" ip_port_local "12001" ip_addr_mcast "0.0.0.0" - exe_name "AsyncIP" + exe_name "s2ss" } Block { BlockType DiscretePulseGenerator @@ -1263,6 +1432,7 @@ Model { Name "constants" SID "19" Position [180, 216, 250, 234] + ZOrder -14 BackgroundColor "yellow" NamePlacement "alternate" Value "[1 2 3 4]" @@ -1273,6 +1443,7 @@ Model { SID "20" Ports [0, 1] Position [290, 131, 335, 149] + ZOrder -15 NamePlacement "alternate" Period "10" SampleTime "0.00005" @@ -1283,7 +1454,8 @@ Model { SID "21" Ports [1, 3] Position [625, 159, 800, 201] - LibraryVersion "1.348" + ZOrder -16 + LibraryVersion "1.471" SourceBlock "rtlab/Communication/Asynchronous/OpAsyncRecv" SourceType "OpAsyncRecv" ctl_id "1" @@ -1306,7 +1478,8 @@ Model { SID "22" Ports [2, 1] Position [375, 129, 545, 171] - LibraryVersion "1.348" + ZOrder -17 + LibraryVersion "1.471" SourceBlock "rtlab/Communication/Asynchronous/OpAsyncSend" SourceType "OpAsyncSend" ctl_id "1" @@ -1329,6 +1502,7 @@ Model { Name "set width" SID "23" Position [830, 187, 855, 203] + ZOrder -18 Dimensions "5" } Block { @@ -1336,6 +1510,7 @@ Model { Name "timeout" SID "25" Position [580, 173, 610, 187] + ZOrder -19 Value "2" } Block { @@ -1343,6 +1518,7 @@ Model { Name "data recv" SID "26" Position [915, 187, 950, 203] + ZOrder -20 BackgroundColor "yellow" IconDisplay "Port number" } @@ -1351,6 +1527,7 @@ Model { Name "errors_status" SID "27" Position [915, 142, 950, 158] + ZOrder -21 BackgroundColor "yellow" Port "2" IconDisplay "Port number" @@ -1360,6 +1537,7 @@ Model { Name "data send" SID "28" Position [915, 232, 950, 248] + ZOrder -22 BackgroundColor "yellow" Port "3" IconDisplay "Port number" @@ -1442,8 +1620,10 @@ Model { DstPort 2 } Annotation { + SID "46" Name "Simple VILLASnode to OPAL test using UDP messages" Position [288, 52] + ZOrder -1 FontName "Verdana" FontSize 14 FontWeight "bold" diff --git a/clients/opal/udp/models/send_receive/src/main.c b/clients/opal/udp/models/send_receive/src/main.c index e8398db11..744399482 100644 --- a/clients/opal/udp/models/send_receive/src/main.c +++ b/clients/opal/udp/models/send_receive/src/main.c @@ -23,10 +23,10 @@ #include #include #include +#include #if defined(__QNXNTO__) #include - #include #include #include #elif defined(__linux__) @@ -138,7 +138,7 @@ static void *SendToIPPort(void *arg) msg.sequence = seq++; msg.ts.sec = now.tv_sec; - msg.ts.nsec = now.tc_nsec; + msg.ts.nsec = now.tv_nsec; /* Perform the actual write to the ip port */ if (SendPacket((char *) &msg, MSG_LEN(&msg)) < 0) diff --git a/clients/opal/udp/models/send_receive/src/socket.c b/clients/opal/udp/models/send_receive/src/socket.c index 59fc2e0c4..298404a51 100644 --- a/clients/opal/udp/models/send_receive/src/socket.c +++ b/clients/opal/udp/models/send_receive/src/socket.c @@ -16,9 +16,11 @@ #include #include #include +#include #include #include #include +#include /* Define RTLAB before including OpalPrint.h for messages to be sent * to the OpalDisplay. Otherwise stdout will be used. */ diff --git a/clients/opal/udp/models/send_receive/villas.mk b/clients/opal/udp/models/send_receive/villas.mk index 1762c66f3..1e384d1be 100644 --- a/clients/opal/udp/models/send_receive/villas.mk +++ b/clients/opal/udp/models/send_receive/villas.mk @@ -1,17 +1,26 @@ +# ----------------------------------------------------------------------------# # Specify program name -PROGRAM = AsyncIP +PROGRAM = s2ss +# ----------------------------------------------------------------------------# # Specify default values if we are not compiling from RT-LAB +# +# ----------------------------------------------------------------------------# TARGET_OPALRT_ROOT = /usr/opalrt +# ----------------------------------------------------------------------------# # QNX v6.x +# ifeq "$(SYSNAME)" "nto" CC = gcc LD = $(CC) TARGET_LIB = -lsocket endif +# ----------------------------------------------------------------------------# +# ----------------------------------------------------------------------------# # RedHawk Linux +# ifeq "$(shell uname)" "Linux" RTLAB_INTEL_COMPILER ?= 1 @@ -37,6 +46,7 @@ ifeq "$(shell uname)" "Linux" TARGET_LIB = -lpthread -lm -ldl -lutil -lrt $(RH_LIBS) $(INTEL_LIBS) endif +# ----------------------------------------------------------------------------# # Support for debugging symbols ifeq ($(DEBUG),1) @@ -48,16 +58,16 @@ else endif INCLUDES = -I. -LIBPATH = -L. -CC_OPTS = -std=c99 -LD_OPTS = +LIBPATH = -L. $(OPAL_LIBPATH) +CC_OPTS = -std=c99 +LD_OPTS = OBJS = main.o msg.o utils.o socket.o -ADDLIB = -lOpalCore -lOpalUtils -LIBS = -lOpalAsyncApiCore $(ADDLIB) $(TARGET_LIB) +ADDLIB = -lOpalCore -lOpalUtils +LIBS = -lOpalAsyncApiCore $(ADDLIB) $(TARGET_LIB) $(OPAL_LIBS) -CFLAGS = -c $(CC_OPTS) $(CC_DEBUG_OPTS) $(RH_FLAGS) $(INCLUDES) -LDFLAGS = $(LD_OPTS) $(LD_DEBUG_OPTS) $(LIBPATH) +CFLAGS = -c $(CC_OPTS) $(CC_DEBUG_OPTS) $(RH_FLAGS) $(INCLUDES) +LDFLAGS = $(LD_OPTS) $(LD_DEBUG_OPTS) $(LIBPATH) all: $(PROGRAM) diff --git a/clients/opal/udp/s2ss_tests.llp b/clients/opal/udp/s2ss_tests.llp index e83c4c4ea..ff62308f7 100644 --- a/clients/opal/udp/s2ss_tests.llp +++ b/clients/opal/udp/s2ss_tests.llp @@ -3,15 +3,17 @@ s2ss_tests This is a project! + 134.130.169.90:25252 + C2357876-6DB6-422F-ABD4-AB47963523A2 ON - D:\msv\svo\opal\s2ss_tests\s2ss_tests.llp + D:\svo\s2ss\clients\opal\udp\s2ss_tests.llp - models\send_receive\send_receive.mdl - D:\msv\svo\opal\s2ss_tests\models\send_receive\send_receive.mdl - D:\msv\svo\opal\s2ss_tests\models\send_receive\send_receive.mdl + models/send_receive/send_receive.mdl + D:/svo/s2ss/clients/opal/udp/models/send_receive/send_receive.mdl + //E265/D/svo/s2ss/clients/opal/udp/models/send_receive/send_receive.mdl diff --git a/clients/opal/udp_readme.txt b/clients/opal/udp_readme.txt deleted file mode 100644 index fd524e393..000000000 --- a/clients/opal/udp_readme.txt +++ /dev/null @@ -1,67 +0,0 @@ - -To "models" folder of OPAL project folder copy: -folder: include -folder: src -file: villas.mk - ----------------------------------------------- - -.llm file should contain the following: -note: path to libOpalAsyncApiCore.a depends on version of RT-Lab - -[ExtraPutFilesComp] -C:\OPAL-RT\RT-LAB\v10.7.7.506\common\lib\redhawk\libOpalAsyncApiCore.a=Binary -include\config.h=Ascii -include\msg.h=Ascii -include\msg_format.h=Ascii -include\socket.h=Ascii -include\utils.h=Ascii -villas.mk=Ascii -src\msg.c=Ascii -src\villas.c=Ascii -src\socket.c=Ascii -src\utils.c=Ascii - - ----------------------------------------------------- - -In RT-Lab under Files tab, we should see the files listed above for .llm file - --------------------------------------------------- - -Development tab -> Compiler -> Compiler Command (makefile) add the following command -/usr/bin/make -f /usr/opalrt/common/bin/opalmodelmk - - ----------------------------------------------------- -max umber of values in UDP packets: -there’s a „#define“ inside the AsyncIP implementation which must be changed accordingly. -The #define is in file: model_directory/include/config.h There you will find a directive called MAX_VALUES. - ---------------------------------------------------- -AsyncIP executable - -- During ***Build the model*** a message should be printed: - ### Created executable: AsyncIP - -- After the simulation stop - AsyncIP may still stay alive after the simulation stop. You have to remove it manually because the next simulation start will not be able to start the new AsyncIP. - -# Kill running AsyncIP on OPAL - -1. Start putty.exe - -2. Connect to OPAL by using the existing profiles - - make sure that you are in the proper folder by - $ ll - -3. Kill all running processes with name 'AsyncIP' - - $ killall AsyncIP - -4. Logout from OPAL - - $ exit - ---------------------------------------------------- -