From da9ce46b278c3ac49ec478332498badffad246be Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Fri, 16 Oct 2015 10:31:07 +0200 Subject: [PATCH 1/7] added note to submodule for GTFPGA repo --- clients/README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/clients/README.md b/clients/README.md index 85ccf0f48..08bb25925 100644 --- a/clients/README.md +++ b/clients/README.md @@ -9,3 +9,7 @@ Date: Mid 2014 - End 2015 - opal/udp Contains the implementation of an asynchronous process block for RT-LAB. This block allows exchanging messages with an S2SS server over UDP/TCP. + +- rtds + This is a seperate Git repository which can be included as a submodule. + See: https://github.com/RWTH-ACS/GTFPGA From 7bde76bc4d924e9727425ed1126d749818d796b4 Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Wed, 10 Feb 2016 15:24:51 +0100 Subject: [PATCH 2/7] updated link to documentation --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a2273c252..2581cb147 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ This is S2SS, a gateway to forward and process simulation data between real time The docuementation for this software is available at [documentation/Mainpage](documentation/Mainpage.md). -You can access the prebuild documentation at: http://46.101.131.212/s2ss/doc/. +You can access the prebuild documentation at: http://s2ss.0l.de (User: `s2ss`, Pass: `Nie4di5e`). Alternatively, you can build the documentation yourself by calling `doxygen` in this directory. ## Contact From 9929ed65d5174f88f04fe748c39f76df9844e6bd Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Thu, 25 Feb 2016 16:53:03 +0100 Subject: [PATCH 3/7] updated LabView files from Eyke --- clients/labview/Data_to_string.vi | Bin 0 -> 21394 bytes clients/labview/I16_to_string.vi | Bin 0 -> 17945 bytes clients/labview/I32_to_string.vi | Bin 0 -> 17933 bytes clients/labview/MSG_create.vi | Bin 0 -> 15130 bytes clients/labview/MSG_interpret.vi | Bin 0 -> 20641 bytes clients/labview/SGL_to_string.vi | Bin 0 -> 17973 bytes clients/labview/Simple.UDP_v1.vi | Bin 0 -> 19829 bytes clients/labview/UNIX_Time_Simple.vi | Bin 0 -> 9236 bytes clients/labview/UNIX_Time_string.vi | Bin 0 -> 23636 bytes 9 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 clients/labview/Data_to_string.vi create mode 100644 clients/labview/I16_to_string.vi create mode 100644 clients/labview/I32_to_string.vi create mode 100644 clients/labview/MSG_create.vi create mode 100644 clients/labview/MSG_interpret.vi create mode 100644 clients/labview/SGL_to_string.vi create mode 100644 clients/labview/Simple.UDP_v1.vi create mode 100644 clients/labview/UNIX_Time_Simple.vi create mode 100644 clients/labview/UNIX_Time_string.vi diff --git a/clients/labview/Data_to_string.vi b/clients/labview/Data_to_string.vi new file mode 100644 index 0000000000000000000000000000000000000000..1ae0cf914a48655424b5fb6d6055f0b2d6ddd009 GIT binary patch literal 21394 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 VleA6W&U17cwz=UgZaQoP`9D?a8F&By literal 0 HcmV?d00001 diff --git a/clients/labview/I16_to_string.vi b/clients/labview/I16_to_string.vi new file mode 100644 index 0000000000000000000000000000000000000000..f7bd91495c47651b3a7955b83a592a44ae4f086d GIT binary patch literal 17945 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%0D%erP=B7HO=WB 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 literal 0 HcmV?d00001 diff --git a/clients/labview/MSG_create.vi b/clients/labview/MSG_create.vi new file mode 100644 index 0000000000000000000000000000000000000000..5338123286ecdd5217d36e0a7a6a9f008ae49828 GIT binary patch literal 15130 zcmeHubyQW~_U}0yy1Tm(q&d=^(%mK9l9Eb`fHVjKij-J%Nl15x(v2XE0@CpILA+nD zdhhRz@&0(@jqxU|z2^GNx#pU4?HGHlJ&%T_h7<-W2%@B;prRzHqYDD@*@8d_r63T9 z8sO!DIu0Kc2vjft4pzZ~ARu9&rVz!63SzuLcNG*8 z0301CFn!Pw(L;s=K3K zl7$cX`g*}Y-|KO(1sLBlG)J0sDMb}#JMGUQ03vvpZNQy-ATTT%fJFeo=_sh_z(5>n za}RS<4;NE+4>vn!8+I={H7$8gKtcrb9`vUe5CPpJuPVTbj=~QBTY(GuZ)QN(b_lQR z{3(WYgZp6y=FLBLc)0(oo!`YUJCMKF(UepAZ+89=!|cHSX$MbRMM2M0%g)K_j~ODl zitKL+Fk2vmYhw^t0}g};t3W2e++liWSnS?0b1|!K1hqzs_rkZcnTaMsu(^4g^vp;w zBhZZqpwVnd8Uu^sHT;dAH5Ip$o;xtiC@wW+AYGFvJoX0+NG3)cCM@ zctIfJcI6S+5O7F9APC+WVVbJ)`0B)$*0XgJGZ*hA@5p|V#PL$|z`t2xU~@;;HujAP zz47h}6+8#ojO1MrcPWmGc-*?O&Bs8Hs#G|M7Ci-xXapZM+cLGhF~ks6Kz z_5ya!SN!GotJJ9Rlso>tM3OrQH(z+ z#L=^$j|e}n_~0{l-ciTD=fOW1vz0ziB|S;;fZ;Ms4%Y}tObK@iVv495mEHJe{xt4{ zc`;6k>dOs&G+F)d!MaR(3&U2(8ES@oorN*M^io42d#J5wOukbQ_Ew>bvd-{9|Iyyl zsgrki?m51Fk2J=1xHy)PLnZ3@td8wH&v8e8`nQ+>i}i{``G`!8y3C!L7#H^KvFS(6 zNVWF((@oi*O^%b?WlIM#@-h>q&Y??6J$v@}E#}q>X^qTX=Fq2o4b)X2wnTf-VmM)< zK+5HtmZ$KDcgUMIAnhQwMUmvcRqoF?0h1A{8PJ+XP8KIu@qNTK9^yqVfp|XwxhfcvlGtWYA5t%HQC z8UPw#>_2Xx|88OQ-z|W#6@I^w|9k(|Kl=ZN=gpPgkHfDK)LlWadl7{lc(~DfXKd*` za3q%_cve4EYdDp@XCQY^K3WZB z&XSz^sXc4I${;ljtw@A;gNk^0ZF*W;GDEL=j8f?bddZ+y

p`>k$!Z7Q=B%^=T6a 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 V8irvgYs#5gxLKKdSOLEe{a>{HI4l4F literal 0 HcmV?d00001 diff --git a/clients/labview/MSG_interpret.vi b/clients/labview/MSG_interpret.vi new file mode 100644 index 0000000000000000000000000000000000000000..7ff08636da9f17c0a8c12df7be42849bd485cff2 GIT binary patch literal 20641 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 QgLmWp=wQ?zKc5W#0oG!v`2YX_ literal 0 HcmV?d00001 diff --git a/clients/labview/SGL_to_string.vi b/clients/labview/SGL_to_string.vi new file mode 100644 index 0000000000000000000000000000000000000000..3d6399b3935d905b1a0ff0a344d465822ff06ba6 GIT binary patch literal 17973 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 literal 0 HcmV?d00001 diff --git a/clients/labview/Simple.UDP_v1.vi b/clients/labview/Simple.UDP_v1.vi new file mode 100644 index 0000000000000000000000000000000000000000..60ae4707721f6cce5da3a3e12d3af4d26537d0e6 GIT binary patch literal 19829 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 ATmS$7 literal 0 HcmV?d00001 diff --git a/clients/labview/UNIX_Time_Simple.vi b/clients/labview/UNIX_Time_Simple.vi new file mode 100644 index 0000000000000000000000000000000000000000..f807592167ed8582bf1b898b0f849eb8c6af76cc GIT binary patch literal 9236 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 XaUTOM^uh0U7APlI4~(6VkJJAE6G&oH literal 0 HcmV?d00001 diff --git a/clients/labview/UNIX_Time_string.vi b/clients/labview/UNIX_Time_string.vi new file mode 100644 index 0000000000000000000000000000000000000000..b9c05e74e28de7fbfea5bb867d2d7ff8778cc2fd GIT binary patch literal 23636 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 Date: Thu, 19 May 2016 14:00:30 +0200 Subject: [PATCH 4/7] updated AsyncIP to RT-LAB 11, removed some warnings and fixed a typo --- clients/opal/udp/models/send_receive/s2ss.mk | 28 +++++++++++++------ .../opal/udp/models/send_receive/src/s2ss.c | 4 +-- .../opal/udp/models/send_receive/src/socket.c | 2 ++ 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/clients/opal/udp/models/send_receive/s2ss.mk b/clients/opal/udp/models/send_receive/s2ss.mk index b2b20b766..d285033b4 100644 --- a/clients/opal/udp/models/send_receive/s2ss.mk +++ b/clients/opal/udp/models/send_receive/s2ss.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 = -OBJS = s2ss.o msg.o utils.o socket.o +LIBPATH = -L. $(OPAL_LIBPATH) +CC_OPTS = -std=c99 +LD_OPTS = +OBJS = s2ss.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/models/send_receive/src/s2ss.c b/clients/opal/udp/models/send_receive/src/s2ss.c index 9e88a2eac..d48922534 100644 --- a/clients/opal/udp/models/send_receive/src/s2ss.c +++ b/clients/opal/udp/models/send_receive/src/s2ss.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. */ From f84f886bac64c7419451caf310097eda7e6115ef Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Thu, 19 May 2016 14:16:53 +0200 Subject: [PATCH 5/7] converted readme file to Markdown and merged troubleshooting infos --- .../OPAL_Async in complex models.txt | 75 -------- .../Problem_AsyncIP_multiple_subsystems.txt | 18 -- clients/opal/README.md | 162 ++++++++++++++++++ clients/opal/udp_readme.txt | 67 -------- 4 files changed, 162 insertions(+), 160 deletions(-) delete mode 100644 clients/opal/Problem_AsyncIP_multiple_subsystems/OPAL_Async in complex models.txt delete mode 100644 clients/opal/Problem_AsyncIP_multiple_subsystems/Problem_AsyncIP_multiple_subsystems.txt create mode 100644 clients/opal/README.md delete mode 100644 clients/opal/udp_readme.txt 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..a4e43ebfd --- /dev/null +++ b/clients/opal/README.md @@ -0,0 +1,162 @@ +# Asynchronous Process interface to S2SS + +To "models" folder of OPAL project folder copy: +folder: include +folder: src +file: s2ss.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 +s2ss.mk=Ascii +src\msg.c=Ascii +src\s2ss.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 + +## S2SS executable still running on OPAL-RT target + +- During ***Build the model*** a message should be printed: +``` +### Created executable: s2ss +``` + +- After the simulation stop + `s2ss` 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 s2ss 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 's2ss' + + $ killall s2ss + +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_readme.txt b/clients/opal/udp_readme.txt deleted file mode 100644 index 1dbd36f77..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: s2ss.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 -s2ss.mk=Ascii -src\msg.c=Ascii -src\s2ss.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 - ---------------------------------------------------- - From a09020bf93013807f69b767d997dbc241fcd9440 Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Thu, 19 May 2016 14:21:50 +0200 Subject: [PATCH 6/7] updated OPAL example model to latest RT-LAB and Simulink version --- .../udp/models/send_receive/send_receive.llm | 35 ++- .../udp/models/send_receive/send_receive.mdl | 272 +++++++++++++++--- clients/opal/udp/s2ss_tests.llp | 10 +- 3 files changed, 253 insertions(+), 64 deletions(-) diff --git a/clients/opal/udp/models/send_receive/send_receive.llm b/clients/opal/udp/models/send_receive/send_receive.llm index d6cd1fb19..667b085d3 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\s2ss.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 af07a97e3..bcf6d118a 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 S2SS to OPAL test using UDP messages" Position [288, 52] + ZOrder -1 FontName "Verdana" FontSize 14 FontWeight "bold" 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 From 7e133f4990d358d6895e97cf22f453fe99fc5cfd Mon Sep 17 00:00:00 2001 From: Marija Stevic Date: Sat, 21 May 2016 22:59:50 -0600 Subject: [PATCH 7/7] added note that the name of the asynchronous process exe has changed --- clients/opal/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/clients/opal/README.md b/clients/opal/README.md index a4e43ebfd..5dd93b406 100644 --- a/clients/opal/README.md +++ b/clients/opal/README.md @@ -34,6 +34,9 @@ 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 +-------------------------------------------------- +Note that the name of the asynchronous process has changed as of May 2016. The name of the executable was ‚AsyncIP‘ and now is ‚s2ss‘. You have to change that in the AsyncCtrl block. + -------------------------------------------------- max umber of values in UDP packets: