Editing Sci cosim

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 5: Line 5:


== Installation ==
== Installation ==
1. Install Octave (version 4.0.0 or higher) and Scilab v.5.5.2 _specifically_ (note: the BackDoor module is currently not supported for the new SciLab v6.0.0 version)
1. Install Octave version 4.0.0 or higher and Scilab v.5.5.2 or higher


2. Install the `sockets` package in Octave by executing  
2. Install sockets package in Octave by executing  


''pkg install -forge sockets''
''pkg install -forge -auto sockets''


3. Download the `sci_cosim` package from  https://github.com/amromanov/sci_cosim  
3. Download sci_cosim package from  https://github.com/amromanov/sci_cosim  


4. Install the `sci_cosim` package in Octave by executing  
4. Install sci_cosim package in Octave by executing  


''pkg install sci_cosim_0.1.3.tar.gz''
''pkg install -auto sci_cosim_0.1.2.tar.gz''


5. Start the Scilab GUI and install the `Backdoor` toolbox from the main menu: Applications → Module manager - ATOMS → Technical → Backdoor → Install
5. Start Scilab GUI and install Toolbox Backdoor by pressing in main menu Applications → Module manager - ATOMS → Technical → Backdoor → Install


6. Restart Scilab. If every thing was done correctly, after restarting there will be a message in the command window "BackDoor: listening to connections on TCP port"
6. Restart Scilab. If every thing was done correct, after restart there will message in command window "BackDoor: listening to connections on TCP port"
 
You _may_ encounter an error that the files "backdoor.start" / "backdoor.quit" cannot be found. This occurs if the files are named e.g. "BackDoor.start" on the disk (i.e. case-sensitive). Simply rename the files to lowercase and restart SciLab.


== Running demo ==
== Running demo ==


1. Download demo from https://github.com/amromanov/sci_cosim/raw/master/demo.tar.gz
1. Download demo from https://github.com/amromanov/sci_cosim/demo.tar.gz


2. Extract it to any folder, where your user has read/write rights
2. Extract it to any folder, where your user has read/write rights
Line 33: Line 31:
4. Run Octave and change folder to the one, where you have extracted demo
4. Run Octave and change folder to the one, where you have extracted demo


5. Load the two packages ''pkg load sockets'' and ''pkg load sci_cosim'' in octave.
5. Run sci_sim_example.m
 
6. Run sci_sim_example.m


== Function description ==
== Function description ==
Line 51: Line 47:


For more detailed usage description execute ''help FUNCTION_NAME'' in Octave.
For more detailed usage description execute ''help FUNCTION_NAME'' in Octave.
== Usage cases ==
In all usage case, described below, user doesn't need to have any knowledge about using Scilab interface and in the most cases they don't have to know Scilab scripting language. You can use only Xcos and do the rest of things in Octave.
1. Simple dynamic systems rapid prototyping.
In this case you, actually, we need only Xcos. In other cases, described below, we also assume that Xcos is used for dynamic system simulation. The good starting point is to read [http://www.scilab.org/content/download/1107/10095/file/Xcos_beginners.pdf "Xcos for very beginners" guide] (even if you are familiar with Simulink).
2. Dynamic system rapid prototyping, when systems parameters have to be calculated by script.
In this case you write and execute all scripts you need using Octave, and then transfer scripts results to Scilab workspace. For example, we have Octave script "calc_pid_params.m" that can tune PID controller parameters and return them as Kp, Ki and Kd variables to Octave workspace. In case we want to use those parameters in Xcos simulation we should run in Octave
''sci_setvar('Kp','Ki','Kd');''
After that we can use those varibles in Xcos simulation. Of course, before running ''sci_setvar'', you should setup connection with Scilab using Sciconnect
3. Dynamic system rapid prototyping, when simulation results should be processed by script.
In this case we have to move all simulation results you need into Octave workspace and then process them with any Octave script. For example, if your Xcos simulation return two vectors "speed" and "pos", to transfer them into Octave you will need to run
''sci_getvar('speed','pos');''
After that two new variables with names "speed" and "pos" will appear in Octave. If there were variables with such name, they will be changed to the ones received from Scilab. After that you can use them, as if they were created in Octave.
4. Automated Dynamic system simulation
In this case we use Octave scripts for setting up dynamic model parameters and result analysis. The Xcos simulation can be started both from Xcos GUI or from Octave using ''sci_sim'' function. In case of using ''sci_sim'' function the current directory in Octave contain .xcos model file. The current directory in Scilab doesn't matter, because it will be changed automatically. If you don't need Xcos GUI, you can ran  Scilab in console mode, it will cause no problem for starting Xcos simulations from Octave. The example of this usage is distributed with Scilab co-simulation package as demo.
5. Using Scilab co-simulation package to use Scilab toolboxes
In this case you need to connect to Scilab using ''sci_connect'' function. Transfer function arguments to Scilab workspace with ''sci_setvar'' function. After that you can execute any of Scilab function from Octave with ''sci_cmd''. And when you need to return results from Scilab you have to use ''sci_getvar''. For example, you want to generate key for BlowFish chiper using Scilab Cryptography Toolbox from your Octave script. First of all, you should know, that any call of ''sci_setvar'', ''sci_getvar'' or ''sci_sim'' command will change Scilab current folder to the same you use in Octave, but ''sci_cmd'' won't. That means, if you use only sci_cmd function, you should change Scilab current folder, before running any scripts. It can be done directly from Octave by transferring any variable to Scilab using ''sci_setvar'' or with command
''sci_cmd(['cd ' pwd]);''
After current folder in Scilab and Octave are synchronized you can generate the key by Octave command:
''sci_cmd('keyGen_blowfish("sampleKey", "sampleIV", "samplePublicKey", "samplePrivateKey");');''
As with Octave, Scilab is initially distributed without any toolboxes. That means, before using Scilab Cryptography Toolbox or any other toolbox for Scilab you need to install it with ATOMS manager.
== How to Run and Change an Xcos diagram ==
1) After installing Scilab and and the sci_cosim package and getting the Toolbox Backdoor for Scilab to work, then you can try this help section.
2) Download examples from the GitHub
https://github.com/amromanov/sci_cosim/raw/master/demo.tar.gz
3) Click in the sci_pid_model.zcos file to start Scilab and Xcos You should see a diagram of the control system.
4) Open the sci_pid_example.m file in your octave editor.
5) Run the sci_pid_example.m file
You should see a plot that has the output of the plant  with no feedback, and the output of the plant in the feedback loop and the control action signal that has been clipped at 5 volts.
6) You can then play with the PID parameters in the M file and see how they affect the output.
7) In the loop diagram in Xcos click in the  "SATURATION"(clipper) box and change the clipping to be 10 Volts
8) Rerun the M file and retune the PID.
9) Now for a little harder problem. Lets change the plant parameters to (s+1)*(s+5)
If you just click on the plant and try and do this, Xcos might complain that it doesn't know what k is, if this happens you have to first go to the Scilab main window and put k=1 there. k will be changed  from your M file later. Now you will be able to change the plant in both locations.
10) In the sci_pid_example.m file set k=5 and run the new system
11) Now lets add a time delay in the feedback part of the loop.
11.1)  Click on the wire that goes from the output of the plant back to an input of the summing junction. This should highlight the line as dashes.
11.2) Press the delete button to delete this wire.
11.3) Select the "view" menu tab at the top of the Xcos diagram.
11.4) Select the "palette browser"
11.5) In the new pop up window select  "Continuous time systems" then scroll down, select and move to the diagram, the "TIME_DELAY" box.
11.6) The input and outputs are on the wrong side, so we will mirror it.
Right click on the box and the select" format" and "Mirror"
11.7) Move the box to a convenient place to rewire it in the feedback loop,
11.8) Now rewire it:
On the left side of the delay box is an output black arrow point, click on this and drag the mouse to the left until you are to the left of the summing junction box.
Now let go of the left button and move the mouse pointer up to the height of the input pin of the summing box.
Click the left button  to place a corner in the wire.
   
Now move to the input pin until you get a green box around the input pin.
   
Click the left mouse button again to make the connection.
11.9) We now have to join a wire to an existing wire.
Place the mouse pointer on the wire from the output of the plant.
The wire should be highlighted but not selected.
Hold the left mouse button down and start drawing a wire.
Join it to the input of the delay
12)    Double click on the delay box and change the delay to be .1 seconds.
13)    Save your new model with a new name.
14)    In the M file change the line:
            sci_sim('sci_pid_model.zcos');    %Running xcos simulation
      to
            sci_sim('newname.zcos');          %Running xcos simulation
15) Rerun the M file and have fun tuning the PID.


== Author and Licensing ==
== Author and Licensing ==
Line 174: Line 54:


Distributed under the New BSD License
Distributed under the New BSD License
[[Category:Packages]]
Please note that all contributions to Octave may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see Octave:Copyrights for details). Do not submit copyrighted work without permission!

To edit this page, please answer the question that appears below (more info):

Cancel Editing help (opens in new window)