1
0
Fork 0
mirror of https://git.rwth-aachen.de/acs/public/villas/node/ synced 2025-03-09 00:00:00 +01:00

Merge branch 'master' into develop

This commit is contained in:
Steffen Vogel 2017-04-18 18:49:21 +02:00
commit 98eabc7581
12 changed files with 443 additions and 234 deletions

View file

@ -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 <stvogel@eonerc.rwth-aachen.de>
- 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 <ELiegmann@eonerc.rwth-aachen.de>
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 <umar.farooq@rwth-aachen.de>

Binary file not shown.

View file

@ -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

View file

@ -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_...

162
clients/opal/README.md Normal file
View file

@ -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:
theres 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 )

View file

@ -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

View file

@ -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 "%<Auto>"
LastModifiedBy "ACS"
ModifiedDateFormat "%<Auto>"
LastModifiedDate "Thu Sep 04 16:25:19 2014"
RTWModifiedTimeStamp 331748717
ModelVersionFormat "1.%<AutoIncrement:445>"
LastModifiedDate "Thu May 19 14:14:01 2016"
RTWModifiedTimeStamp 385568034
ModelVersionFormat "1.%<AutoIncrement:446>"
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"

View file

@ -23,10 +23,10 @@
#include <unistd.h>
#include <signal.h>
#include <time.h>
#include <pthread.h>
#if defined(__QNXNTO__)
#include <process.h>
#include <pthread.h>
#include <devctl.h>
#include <sys/dcmd_chr.h>
#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)

View file

@ -16,9 +16,11 @@
#include <unistd.h>
#include <stdlib.h>
#include <fcntl.h>
#include <string.h>
#include <sys/time.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
/* Define RTLAB before including OpalPrint.h for messages to be sent
* to the OpalDisplay. Otherwise stdout will be used. */

View file

@ -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)

View file

@ -3,15 +3,17 @@
<General>
<att_name>s2ss_tests</att_name>
<att_description>This is a project!</att_description>
<att_ip_address>134.130.169.90:25252</att_ip_address>
<att_hashcode>C2357876-6DB6-422F-ABD4-AB47963523A2</att_hashcode>
<att_autosave>ON</att_autosave>
<att_filename>D:\msv\svo\opal\s2ss_tests\s2ss_tests.llp</att_filename>
<att_filename>D:\svo\s2ss\clients\opal\udp\s2ss_tests.llp</att_filename>
</General>
<Models>
<Model>
<Path>
<Relative>models\send_receive\send_receive.mdl</Relative>
<Absolute>D:\msv\svo\opal\s2ss_tests\models\send_receive\send_receive.mdl</Absolute>
<UNC>D:\msv\svo\opal\s2ss_tests\models\send_receive\send_receive.mdl</UNC>
<Relative>models/send_receive/send_receive.mdl</Relative>
<Absolute>D:/svo/s2ss/clients/opal/udp/models/send_receive/send_receive.mdl</Absolute>
<UNC>//E265/D/svo/s2ss/clients/opal/udp/models/send_receive/send_receive.mdl</UNC>
</Path>
</Model>
</Models>

View file

@ -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:
theres 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
---------------------------------------------------