Scilab/C4/Calling-User-Defined-Functions-in-XCOS/English-timed

From Script | Spoken-Tutorial
Revision as of 11:16, 11 July 2014 by Gaurav (Talk | contribs)

Jump to: navigation, search
Time Narration
00:01 Welcome to the spoken tutorial on “Calling user-defined functions in Xcos”
00:07 In this tutorial we will learn,
00:09 To write a squaring function in Scilab


00:12 To use the scifunc block in Xcos


00:15 To use MUX block to draw multiple plots
00:19 To call functions having multiple inputs and outputs
00:24 Ubuntu 12.04 is the operating system used with Scilab version 5.3.3 installed.
00:32 You should have Basic knowledge of Scilab


00:35 Basic knowledge of Xcos
00:38 If not, for relevant tutorials please visit spoken hyphen tutorial dot org
00:44 Start Scilab on your computer.
00:47 In the Scilab console, type editor and press Enter


00:53 Then type the following code
00:55 function space y is equal to squareit open bracket a close bracket
01:07 Press the enter key and type
01:10 y is equal to a raise to 2


01:14 put a semicolon in the end


01:17 The function has one input variable a and one output variable y
01:24 The name of the function is squareit


01:27 This function will do the job of squaring the variable a.
01:31 It will store the result in y.


01:34 Let us save this file in the desired directory.


01:38 I will save this file with file name squareit and extension .sci
01:44 Here we are following the convention of saving functions in .sci format.
01:50 Switch to the Scilab console
01:53 Now, type Xcos and press Enter.
01:57 Two windows will open
01:59 A palette browser and an untitled Xcos window.


02:04 Now we will make the Xcos diagram.


02:06 This will access the function squareit created just now.


02:10 This can be done by using scifunc block.


02:14 Switch to the palette browser window
02:17 Click on the User-Defined function in the pallet browser.


02:21 Locate the block scifunc_block_m in this section.
02:27 Drag and drop it in untitled Xcos window.
02:32 I will zoom the untitled Xcos window for better view.
02:36 I will use the Zoom button as you see.
02:40 Now double click on the scifunc block to configure it.


02:44 A window named Scilab multiple values request will open
02:49 This window will allow you to change the number of input and output ports of the scifunc block.
02:56 Our function squareit has only one input and output variable.


03:00 'Hence, we will keep the settings unchanged.
03:03 Click on Ok.
03:05 A new Scilab input value request window will open.


03:09 In the text box, type the function name along with input and output variables.
03:14 This function will be called by the scifunc block


03:18 In the text box available,


03:20 edit the default function name.
03:22 Type y1 equal to squareit open bracket u1 close the bracket
03:31 Note that, here the input and output variables are u1 and y1 respectively.


03:37 These should be strictly in u and y form and not as per the variable names used in the actual function.


03:45 Cick on OK.
03:47 Another Scilab input value request window will open.
03:51 Keep clicking on Ok in the subsequent 3 windows that will appear.


03:56 The scifunc block is now configured.


04:00 Next we will include a sinusoid generator block.
04:04 In the palette browser window, click on Sources section.


04:08 Drag and drop the Sinusoid Generator block in untitled Xcos window.
04:14 Place the block towards the left of the scifunc block for convenience.
04:20 Now we need a block to plot the output variable.
04:23 'In the palette browser window, click on Sinks section.
04:29 Drag and drop the CScope block in the untitled Xcos window.


04:34 Place the block towards the right of the scifunc block


04:38 Place it away from scifunc block, for convenience.


04:43 Notice that the CScope block has a red input port.
04:47 This is an event input


04:49 we need an event generator block.


04:52 In the palette browser window, click on Sources section.


04:57 Drag and drop the clock underscore c block in the untitled Xcos window.
05:05 Place it above the CScope block.
05:08 Notice that the CScope block has only one input port.
05:13 But we want to plot both the input and output variables in a single plot window.
05:18 Hence, we need a multiplexer block,
05:22 This block will multiplex two inputs and generate output on one output port.


05:28 In the palette browser window, click on Signal Routing section.
05:33 Drag and drop the MUX block in the untitled Xcos window.


05:39 Place the block between the scifunc block and CScope block.
05:43 Let me resize and realign the Mux block
05:47 Now let us connect the blocks together.


05:51 Connect the output port of Sinusoid generator block to the input port of scifunc block


05:57 Now connect the output port of scifunc block to the lower input port of the MUX.
06:04 Connect the output port of MUX block to the input port of CScope block.
06:10 Connect the output port of clock underscore c block to the event input port of CScope block.
06:19 We also have to plot sine input.
06:22 We have to connect the Sinusoid generator block to the MUX.
06:26 Click on the upper input port of the MUX block.
06:30 Then without releasing, move your mouse pointer towards the link between the Sinusoid generator block and scifunc block.


06:39 To bend the link, release the mouse button or click at places
06:44 As you bring the pointer on the link, the link turns green.
06:49 Release the mouse button or click once to create a link between these two blocks.
06:55 Now let us see the configuration of other blocks
06:59 We can change the frequency, magnitude and phase of the sinusoid generator block.


07:04 To do this, double click on the Sinusoid generator block.
07:09 The configuration window will open.
07:11 We will keep the magnitude and frequency as 1 and phase as 0
07:18 Click on Ok to close the configuration window.
07:21 Now let us configure the CScope block.
07:25 Double click on the CScope block to open its configuration window.
07:30 Change the Ymin parameter to minus 2 and Ymax parameter to 2
07:37 Change the Refresh period value to 10.
07:41 Make a mental note of this value.
07:44 Change the buffer size value to 2 .
07:47 click on OK


07:50 Now let us configure the CLOCK_c block
07:54 Double click on the block to open its configuration window.
07:58 Keep the value of Period as 0.1
08:02 Change the Initialisation Time to be 0.
08:06 Click on OK
08:08 Now let us change the Simulation parameters.
08:12 On the menu bar of the untitled Xcos window click on the Simulation tab.
08:17 Now click on Setup from the drop down menu.
08:22 Change the Final Integration time to match the Refresh period of CScope block.
08:28 The value of Refresh period was 10.
08:32 Hence, put the value of Final integration time as 10.
08:36 Click on OK
08:38 Now, click on File and then click on Save to save the Xcos diagram.


08:44 Choose a desired directory to save the Xcos diagram.
08:48 However, it is advised to save it in the folder where you have saved the squareit.sci file.
08:56 Click on OK


08:58 Note that the scifunc block will call the squareit function.


09:02 This means that we should first load the squareit function before we execute the xcos diagram.
09:09 Switch to the Scilab editor window, which has the squareit.sci file open.
09:16 Click on the Execute button available on the menu bar of the editor.
09:21 This will load the squareit function.


09:24 Now we can execute the Xcos diagram.
09:28 Open the Xcos diagram file
09:31 Click on the Start button available on the menu bar of Xcos window


09:37 A graphic window will appear.
09:39 This window will have two plots.
09:42 Input sine wave in black color and output sine wave in green color.
09:47 Notice that the squaring function implemented in the squareit function, has indeed squared the input sine wave.
09:55 Hence, the output sine wave has been shifted to the positive axis.
10:00 Close the plot window
10:02 Now, let us see how to edit the scifunc block to call a function which has more than one input and output variables.
10:10 Switch to scilab editor window.
10:13 Edit the squareit function to have two input and output variables.
10:19 Edit the output variable as open square bracket y comma z close the square bracket .
10:28 Edit the input variables as open bracket a comma b close bracket
10:36 We will change the function to shift the squared output by 1 unit.
10:41 Edit the main function line as
10:44 y is equal to b plus a raise to two put a semicolon in the end


10:51 Also generate an output whose amplitude will be half of the input.
10:56 Go to next line by pressing enter key and type
11:01 z is equal to 0.5 multiplied by a put a semicolon in the end
11:10 Now save the file


11:12 switch to the xcos window
11:15 Double click on the scifunc block to configure it.
11:19 In the input port size field, put a semi colon after 1 comma 1 and type 1 comma one again
11:27 Similarly, in the output port size field, put a semi colon after 1 comma 1 and type 1 comma 1 again
11:36 Click on Ok


11:38 A new Scilab input value request window will open.
11:41 In the text box,
11:43 Put a comma after y1 and type y2.
11:48 Put y1 and y2 in square brackets
11:52 Now put a comma after u1 and type u2
11:57 Click on OK
11:59 Another Scilab input value request window will open.
12:03 Keep clicking on Ok in the subsequent 3 windows that will appear.
12:08 The scifunc block is now configured.
12:11 Let me realign the scifunc block
12:14 Switch to the palette browser window.
12:17 In the sources section, drag and drop the Constant underscore m block in the xcos window.
12:24 Place it below the sinusoid generator block.


12:28 Connect the Constant underscore m block to the lower input of the scifunc block
12:36 The default value of this block is 1.
12:39 Keep it unchanged.
12:41 Double click on the MUX block.
12:44 Change the input port size to 3
12:47 Click on OK
12:48 Let me resize the MUX block and I will connect MUX and CSCOPE block properly.
12:59 Connect the lower output port of the scifunc block to the lower input port of MUX block


13:07 Click on File and choose Save to save the xcos file.
13:12 Switch to the Scilab editor which has the squareit.sci file open.
13:18 Click on the Execute button available on the menu bar of the editor.
13:23 This will load the squareit function.
13:26 Now we can execute the Xcos diagram.
13:30 Click on the Start button available on the menu bar of the Xcos window.
13:35 A graphic window will appear.
13:38 This window will have three plots.
13:40 Input sine wave in black color,
13:43 output sine wave in green color and
13:45 amplitude scaled input in red colour
13:49 Notice that the function has indeed squared the input sine wave and also shifted it by an offset of 1 unit, which is as expected.
13:59 We also get the amplitude scaled of the input sine wave, as expected
14:05 Close the plot window
14:08 Now let us summarize.
14:10 In this tutorial we learnt,


14:12 To write a squaring function in Scilab
14:15 To use the scifunc block in Xcos
14:19 To use MUX block to draw multiple plots
14:22 To call functions having multiple input and output


14:26 Watch the video available at the following link
14:29 It summarises the Spoken Tutorial project


14:33 If you do not have good bandwidth, you can download and watch it
14:37 The spoken tutorial project Team
14:40 Conducts workshops using spoken tutorials


14:43 Gives certificates for those who pass an online test


14:47 For more details, please write to contact@spoken-tutorial.org


14:53 Spoken Tutorial Project is a part of Talk to a Teacher project


14:57 It is supported by the National Mission on Eduction through ICT, MHRD, Government of India.
15:05 More information on this mission is available at spoken-tutorial.org/NMEICT-Intro


15:15 Thank you for joining .Hope you found this tutorial useful
15:19 This is Anuradha Amruthkar from IIT Bombay signing off.

Contributors and Content Editors

Gaurav, PoojaMoolya, Sandhya.np14