share memory address of variable among multiple s-functions

Hello, I am implementing a communication protocol using TCP socket in simulink. I use s-functions My initial idea is to define three C s-functions, that uses the same socket. 1. communication initialization, create a socket and get connected 2. a transmit block 3. a receive block I have included a header file defining some global variables that are necessary to all the three s-functions. I want the three s-function blocks are able to these variables (access to the same memory address) However, what I found is although I use the same header file, three s-functions create different variable instances. For example, I create the socket in the initialization s-function but this socket can not be used in the transmit and receive block.
So I wonder if there is any way we can share variables among different s-functions?

3 Comments

I suspect that you are implementing in C or C++?
Yep it is in C/C++ S-FUNCTION
I seem to remember that some of the rest comes down to the code placement model properties that you define; it would take me a bit of time to find the settings.

Sign in to comment.

Answers (1)

Hallo Chong,
Did you solve this problem? If you have any idea, please tell me how to share memory across several S-Function blocks.
Thank you!

2 Comments

Hi, Xiaojie
This is solved by employing a dynamic link library (DLL). You can create a dll file by using the same compiler as you use in Matlab. You can just defiine the variable you need to share. Then call this dll in your s-functions.
Multiple s-function instances will visit this dll and update the variable.
That is how I solve this problem. There could be some other ways, but I use this.
Thanks
Hi Chong,
Thank you very much for your answer! I solved this problem by using the method below:
Best Regards

Sign in to comment.

Categories

Find more on Simulink in Help Center and File Exchange

Tags

Asked:

on 13 Mar 2017

Commented:

on 8 Jul 2019

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!