|
Application Note |
|
Altia
® DesignSimulation Graphics Software
The Altia Design and The MathWorks' Simulink Connection
Overview
Altia Design is graphics and user interface software used in conjunction with The MathWorks' Simulink
simulation product. Simulink simulations are very detailed, powerful and complex. Consequently, people unfamiliar with the Simulink’s methodology and its syntax can have difficulty understanding the simulation results. This is a problem since these unfamiliar observers are often developers, managers and customers who need to make critical decisions about a product’s development.
Altia solves this problem by helping modelers quickly create a user interface prototype for product
simulations that looks and behaves like the product’s real user interface. As a result, the people who need to make critical development and marketing decisions can easily operate and understand the simulation.
In addition to being an important communication tool, Altia can help the modeling expert during the design process. Altia’s animated graphical objects can monitor important internal system parameters in a visually compact, domain specific manner. This makes debugging and testing significantly more accurate and efficient.
In all cases, the animated graphics and user interfaces are created without programming.

With the Altia/Simulink connection, Simulink simulations can easily interface to Altia Design displays. Altia's connection to Simulink is through an S-Function. You must be familiar with Simulink, as well as Altia, to effectively use the connection.
The Simulink S-Function Connection
With the Altia S-Function connection, a Simulink simulation can easily communicate with an Altia interface. The Altia S-Function is provided as a dynamically loadable executable that has the ability to connect to an Altia interface process using Altia's API (Application Programming Interface) library. The library uses a TCP/IP socket to communicate with the Altia interface process. The Simulink user is completely insulated from the details of the communication protocol by the API and the supplied S-Function code.
The Altia S-Function can be inserted into any model without modification because it uses information from a text configuration file,
altiasfn.txt, to establish mappings between model inputs and outputs and Altia interface names. The Altia S-Function sends new model output values to the Altia interface as named events and named events received from the Altia interface are translated to new input values for the model. A named event sent from the S-Function to Altia can change the visual state of an animation that has the same name, cause a control WHEN block to execute that references the same name, or trigger the start or stop of a timer that references the name. The S-Function receives named events from Altia as a result of input stimulus execution, timer stimulus execution, or control SET or MATH statement execution.The Altia windows that display an interface are controlled by a separate process, Altia Runtime. This is a royalty free runtime engine that displays Altia user interface designs in a run-only mode. A user interface design resides in a file initially created using the Altia Design editor. Altia Runtime opens the file and reads its contents to display the graphics and control any animations associated with the various graphical objects.
The Altia API provides a function that allows other processes to start an Altia Runtime. The Altia S-Function uses this API function to start Altia Runtime, which is actually the program
altiart.exe (altiart.out on Unix). The Altia Runtime program is included with the connection software. For connection software installation instructions, see the section Installing the Connection Software for Windows 95 or NT.IMPORTANT NOTE
The connection established by the API between Altia Runtime and the S-Function is TCP/IP socket based. For this to work properly on Windows 95, the system must have a network card installed that is properly configured for the TCP/IP protocol. Windows/NT systems provide socket support with or without a network card if the system is configured for the TCP/IP protocol.
To work correctly, the Altia S-Function executable,
altiasfn.dll, must be installed in the working directory with the Altia S-Function configuration file, altiasfn.txt. With these files in place, you can add an S-Function to your own models as described later in the section Adding an Altia S-Function to a Simulink Model. But before you do this, try executing the automobile demo that is supplied with the connection software. The section Executing the Altia/Simulink Automobile Demonstration explains how this is done. For specific details on how to develop your own Altia interface designs and write configuration files, see the Developing Your Own Designs for the Altia/Simulink Connection, Configuration File Overview - A Must Read!, Configuration File Format and Configuration File Examples sections found later in this document.Installing the Connection Software for Windows 95 or NT
If you have access to the Internet, you can download the Altia/Simulink connection self-extracting ZIP archive,
altiasim.exe, from Altia’s FTP site. For specific instructions, please contact your Altia Sales Representative.The Altia/Simulink connection software for Windows 95 and NT is also supplied on a single 3.5" floppy labeled "Altia Simulink Demo". If you have a copy on 3.5" floppy, insert the floppy into your PC floppy drive and copy the single file
altiasim.exe from the floppy to a directory on your hard drive.The
altiasim.exe file is a self-extracting ZIP archive. After copying altiasim.exe to a local hard drive directory, view the altiasim.exe file from within the File Manager (Windows Explorer or My Computer window on 95 or NT 4.0), and double-click on the file name to execute it. This will display a dialog allowing you to select a destination directory for the various connection programs and files. This can be any existing directory on a local hard drive. When the extraction is complete, the selected directory will contain a new sub-directory named altiasim that contains the extracted files. You are ready to run the Altia/Simulink automobile demonstration. Continue to Executing the Altia/Simulink Automobile Demo.Executing the Altia/Simulink Automobile Demonstration
To execute the supplied automobile demonstration, follow these simple steps:
cd c:\altiasim
If you are using Matlab 5.1/Simulink 2.1, you must copy the file
copy altias51.dll altiasfn.dll
If you begin using Matlab 5.2/Simulink 2.2 in the future, simply copy
An Altia/Simulink Connection for Matlab releases older than 5.1 is NOT available.
sf_car
and press <Enter> to open the local
Executing the Altia/Simulink Engine Demonstration
A second demonstration is provided that is a simpler version of the automobile demonstration. This model contains no Stateflow block. To execute this model, follow these simple steps:
Adding an Altia S-Function to a Simulink Model
To add an Altia S-Function to your own model, copy an S-Function block from the Simulink Nonlinear library and place it in your model. Open the S-Function Parameters dialog and type
altiasfn for the S-function name and close the dialog. If inputs to the S-Function come from multiple blocks of the model, place a Mux from the Connection library at the input side of the S-Function and feed the appropriate block outputs into the Mux. Likewise, if outputs from the S-Function must connect to the inputs of more than one block in the model, place a Demux block on the output side of the S-Function and connect the outputs of the Demux to the appropriate block inputs. The use of the Mux and Demux blocks around an Altia S-Function block is illustrated in the example sf_car.mdl Simulink model.The number of inputs must match the number of outputs for the S-Function. To match these numbers, set the number of inputs for the Mux to the same number of outputs for the Demux where the number should be the larger of the actual number of inputs or outputs required for the S-Function. If this leaves some Mux inputs unused, add a Ground block from the Connection library for each unused input and connect each Ground block to one of the unused Mux inputs. If, however, some Demux outputs are left unused, add a Terminator block from the Connection library for each unused output and connect each Terminator block to one of the unused Demux outputs. In the sf_car example, terminators are attached to the outputs of the Demux because some of these outputs are unused.
Developing Your Own Altia Interfaces for the Altia/Simulink Connection
The Altia automobile and engine design files (
sf_car.dsn/sf_car.rtm and engine.dsn/engine.rtm), and the altiasfn.txt configuration file supplied with the connection software are specific to the Altia/Simulink automobile and engine demonstration.To develop a custom Altia interface for your own Simulink model, you would use the Altia Design Editor to visually create your animated interface and then write the
altiasfn.txt file (using the text editor of your choice) to define the Altia/Simulink mappings. The Altia S-Function works without modification to connect your custom Altia interface to Simulink using the information in your customized altiasfn.txt file.It's easy to learn how to use the Altia Design Editor from the supplied User's Guide and on-line tutorials. In addition, numerous components are already built to get you started quickly and they are all customizable from the editor (see the Models Libraries chapter of the Altia Design User's Guide for more details). And any components in existing designs (such as
sf_car.dsn and the large number of other demonstration designs supplied with the Altia Design product) are easily copied into your own design from a Models View window.After creating your Altia interface design, you'll need to describe the Altia/Simulink mappings in a configuration file. See Configuration File Overview - A Must Read!, Configuration File Format and Configuration File Examples for more details.
Configuration File Overview - A Must Read!
As mentioned earlier, the purpose of a configuration file is to supply the Altia S-Function with the information needed to map Simulink model inputs and outputs to Altia interface animation and event names for a given model/interface combination. The Altia/Simulink configuration file must be named
altiasfn.txt.The configuration file interprets inputs and outputs from the perspective of the model blocks connected to the S-Function. These blocks are usually a Mux block on the input side of the S-Function and a Demux block on the output side. From this perspective, an input line is an input into a model block (e.g., the Demux block at the output side of the S-Function). This means that it arrives in the S-Function from Altia and ends up as an output from the S-Function which makes it an input into the model block. Conversely, an output line is an output from a model block (e.g., the Mux
block at the input side of the S-Function). This means that it arrives in the S-Function as an output from a model block and is sent to Altia.
The first step in creating a configuration file is determining which Altia animation, stimulus, or control names you should map to Simulink model inputs and outputs. An output from the Simulink model would typically map to an animation associated with one of your Altia interface objects. For example, if output element 1 (i.e., vector element 1 coming from the Mux attached to the S-Function) is vehicle speed, then it would make sense that it maps to a speedometer needle animation in Altia. To determine the needle's animation name and range, select the object in the Altia Design Editor and open the Animation Editor. The name, low state, and high state will appear in the Animation Editor's list area. If the range of states for the object is not an exact match to the range of values from the Simulink model, the S-Function supports a multiplier and offset for the Simulink value to easily adjust it for the range expected by Altia.
You can also map an output to the name used in an Altia control WHEN statement or the start or stop condition name in a timer stimulus definition. This is possible because the Altia S-Function generates an event to Altia for each change in the value of an output (assuming the output is mapped to the appropriate name in the configuration file). The event to Altia contains the name specified in the mapping and a value determined by the output’s value. When the event gets to Altia, it is broadcast to all animations with the same name, all control WHEN blocks that reference the name, and all timer stimulus definitions that use the name for starting or stopping. If the value for the event is in the proper range, it can change the state of one or more animations, trigger execution of one or more control WHEN blocks, and start or stop one or more timers. In summary, a single change at an output can affect the state of an Altia interface in a simple way or a very complex way using Altia's easy to learn capabilities.
The configuration file also defines mappings of events generated by Altia to inputs into the Simulink model. Altia generates events when a user's input (e.g., mouse click or key press) causes a stimulus definition to execute, or each time an active timer's interval expires, or whenever a control block executes a SET or MATH statement. As with the events sent to an Altia interface by an Altia S-Function, each event that Altia generates has a name and a value. If a configuration file contains a mapping of a Simulink model input to a name, the Altia S-Function selects to receive events from Altia for the same name. The S-Function is automatically notified by the Altia interface whenever a new event with a selected name is generated. Altia passes the value for the event to the S-Function and it in turn assigns the new value to the appropriate pin. The Altia S-Function can select to receive any number of event names from an Altia interface. The events arrive from Altia in the exact order they were originally generated by input stimulus, timer stimulus, or control statement execution. If the range of values generated by Altia don't match the range expected by the Simulink model, the S-Function supports a multiplier and offset for the Altia value to easily adjust it for the range expected by Simulink.
Prior to any input or output mappings, the configuration file can also contain several initialization directives. Of particular interest is the start option. It instructs the Altia S-Function to automatically start Altia Runtime and load a design file before establishing any input/output mappings. For this to work properly, the Altia Runtime executable (
altiart.exe on the PC or altiart.out on Unix) must reside in the working directory, in the standard Altia bin directory (\usr\altia\bin on the PC or /usr/altia/bin on Unix), or the environment variable ALTIAHOME must specify the Altia software installation directory (e.g. /opt/altia instead of /usr/altia). In the last case, the Altia S-Function will search for the Altia Runtime program in %ALTIAHOME%\bin on the PC or $ALTIAHOME/bin on Unix. If the Altia Runtime program is in the working directory, the associated fonts.ali and colors.ali files must also be present. The Altia Runtime executable, fonts.ali, and colors.ali files are provided as part of the connection software to make it easy for you to set up your own connections. On Unix systems, a fonts.ali file may not be required on some platforms and a colors.ali file is never required. In these cases, one or both files are not included.Configuration File Format
The configuration file starts with one or more initialization directives, one per line, and each is completely optional. Following the initialization directives are the input and output mappings, one mapping per line, in any order, and any number. Blank lines and lines that begin with the # character are ignored.
As mentioned in the previous section, the Altia S-Function configuration file must be named
altiasfn.txt.The following initialization directives are supported (Please note that white space within individual fields is only allowed if it is explicitly shown in the description):
debug #
This option enables debugging. The level is specified by # which can be 0, 1, 2, or 3. Beware! Level 3 is V-E-R-Y verbose. Level 2 is good for most debugging. Level 1 only gives messages while initializing data arrays from information in the configuration file. The debug messages go to the Altia animation named
debug_text which is assumed to be the text animation for a Text I/O object (from the textio.dsn models library).start DESIGN_FILE_NAME [port :SOCKET]
This option requests the Altia S-Function to start an Altia Runtime as part of its initialization and have the runtime load the design file given by the file name DESIGN_FILE_NAME. The design file name can be a complete path name for the file or a relative path name (for example, if
sf_car.dsn is the name given, it must reside in the current working directory). This option only works correctly if altiart.exe (altiart.out on Unix) resides in the current working directory, in \usr\altia (/usr/altia on Unix), or if the ALTIAHOME environment variable is set and altiart.exe (altiart.out on Unix) resides in %ALTIAHOME%\bin ($ALTIAHOME/bin on Unix). For the supplied demonstration(s), altiart.exe/altiart.out is installed in the working directory. If the optional port argument is present, the Altia Runtime is forced to use the specified socket for connecting clients rather than the default socket. The port argument here follows the same syntax as the standalone port option described below. This argument is not usually required unless multiple Altia Runtimes are going to be executing simultaneously on the same machine.
port [HOST]:SOCKET | DOMAIN_SOCKET
The appearance of this option implies that an Altia interface is already running and was started with the
-port :SOCKET | DOMAIN_SOCKET options (see the
altia or altiart manual pages in Section I of the Altia Reference Manual for more details on the -port option). The port option in the configuration file requests that a connection be made to an Altia interface using a specific network socket (PC or Unix) or domain socket (Unix only) instead of the default socket. HOST is the name or IP address of the host already running Altia. If it is omitted, then the host is assumed to be the local machine. SOCKET is the socket number that Altia is serving for client connections. On Unix, a domain socket name is also supported and is represented by a unique file name path.The standard Altia S-Function is linked with the socket version of the Altia API library so only [HOST]:SOCKET (PC or Unix) and DOMAIN_SOCKET_NAME (Unix only) are appropriate.
This option must occur before any pin specifications. In addition, this option and the start option are mutually exclusive. If this option is not present and the start option is not present, then the Altia S-Function assumes that an Altia interface is already running on the local machine and is serving the default socket for client connections (see the
altia or altiart manual pages in Section I of the Altia Reference Manual for more details). All of this may be confusing, but you only need to use the port option if you plan on running more than 1 Altia interface on a system or you wish to connect to an Altia interface that is not residing on the local system.in#=ALTIA_EVENT_NAME [discrete | continuous] [x#] [+# | -#] [min=#] [max=#]
This maps the Simulink model input number # to values received from Altia events with the name ALTIA_EVENT_NAME. The input number # can only be a number from 1 to the maximum inputs defined for the Demux block on the output side of the S-Function. Please note that an input pin number here is really an S-Function output pin number. To put it better, an in#=... line is declaring an input into the model from an external point of view. From a view within the model, this input is coming into the S-Function from the external world and it exits on an S-Function output to the rest of the model. Hence, in#=... lines should only reference valid S-Function output numbers.
If an input is declared as a discrete type, each value received from Altia with the given name is returned to the Simulink model. If an input is declared as a continuous type, the most current value for the name is returned to the Simulink model. A discrete type is appropriate for a button because each state change is of interest. A continuous type is desirable for some types of knobs or sliders where only the latest state (i.e., most current position) is interesting. If no type is specified, then discrete is assumed.
If the optional x# argument is present, than each integer value from Altia is multiplied by the number # (using floating point arithmetic) before it is returned to the Simulink model. The number in x# can be an integer or a float. Usually, it is less than 1.0 to translate integer values from Altia into smaller floating point values. For example, x.01 would be used to translate Altia event integer values 0 to 100 to floating point values 0.00 to 1.0 for the Simulink model. This feature is provided because Altia only sends and receives integer values with its events. Only one x# is supported for each input description
The optional +# or -# argument declares an offset that should be added to or subtracted from the incoming Altia event value after the multiplier from the x# argument is applied if a x# is present. This order of execution is followed even if the +# or -# argument appears before the x# argument. The number in +# or -# can be an integer or a float and only one +# or one -# is supported for each input description.
If the optional min=# argument is present, values returned to the Simulink model are adjusted to be greater than or equal to the number specified in min=# after applying the optional multiplier and offset numbers. If a value is less than #, it is set equal to #. The number in min=# can be an integer or float and only one min=# argument is supported for each input description.
With the optional max=# argument present, values returned to the Simulink model are adjusted to be less than or equal to the number specified in max=# after applying the optional multiplier and offset numbers. If a value is greater than #, it is set equal to #. The number in max=# can be an integer or float and only one max=# argument is supported for each input description.
As a final note on input description lines, you can map a single input number to more than one Altia event name by having more than one input description line for the given input number. In addition, more than one input number can map to the same Altia event name if desired.
out#=ALTIA_EVENT_NAME [discrete | continuous] [min=#] [max=#] [+# | -#] [x#] [%[[0]field_width][.precision][l]d|i|o|u|x|X|f|e|E|g|G]
This maps Simulink model output number # values to Altia events with the name ALTIA_EVENT_NAME. The output number # can only be a number from 1 to the maximum outputs defined for the Mux block on the input side of the S-Function. Please note that an output pin number here is really an S-Function input pin number. To put it better, an out#=... line is declaring a model output as viewed from outside of the model. From a view within the model, this output is leaving the S-Function for the external world which means it was an input into the S-Function from the rest of the model. Hence, out#=... lines should only reference valid S-Function input numbers.
If an output is declared as discrete, then Altia is only sent a new event when the output's value actually changes. If an output is declared as continuous, then a new event is sent to Altia for each major time step of the simulation. A discrete type is appropriate for most types of outputs such as meters, led lamps, bar indicators, and numeric readouts. A continuous output type is most often mapped to an Altia strip chart's
nexty animation to keep the strip chart moving even when the data value is not changing. If no type is specified, then discrete is assumed.If the optional min=# argument is present, output values from the Simulink model are adjusted to be greater than or equal to the number specified in min=#. If a value is less than #, it is set equal to #. The number in min=# can be an integer or float and only one min=# argument is supported for each output description.
With the optional max=# argument present, output values from the Simulink model are adjusted to be less than or equal to the number specified in max=#. If a value is greater than #, it is set equal to #. The number in max=# can be an integer or float and only one max=# argument is supported for each output description.
After the Simulink model output value is optionally adjusted using the information from the min=# and max=# arguments, an offset is added to or subtracted from the result if a +# or -# argument is present. The offset is always applied after any minimum or maximum value adjustments are made even if the +# or -# argument appears before a min=# or max=# argument. The number in +# or -# can be an integer or a float and only one +# or one -# is supported for each output description.
If the optional x# argument is present, than a Simulink model output value is multiplied by the number from x# after any optional min/max and offset adjustments are made. The number in x# can be an integer or a float. It is usually greater than 1.0 to translate small floating point values from Simulink to larger values that can be cast to integers for Altia without losing too many digits of accuracy. For example, x100 would be used to translate output values in the range of 0.00 to 1.00 to integers from 0 to 100. This feature is necessary because Altia only receives integer event values.
Finally, an optional conversion specification beginning with % may be present. It indicates that the double floating point output value, after any min/max, offset, and multiplier adjustments, should be converted to a string using the format specification following the %. The conversion specification must follow the C language printf(3) library function syntax - consult a C library reference manual for more details if necessary. The resulting string is passed to Altia as text which requires that ALTIA_EVENT_NAME be the
text animation for a dynamic text i/o object. As an example, %5.3f is a request to convert an output value to a floating point string representation with 5 total digits, 3 to the right of the decimal point.If the %... conversion specification is not present, then the double floating point Simulink model output value is truncated to an integer after any min/max, offset, and multiplier adjustments are made. The resulting integer is used as the value for a new Altia event with the name ALTIA_EVENT_NAME.
As a final note, you can map a single output number to more than one Altia event name by having multiple out#=... lines where # is the same for each line. You can also map more than one output number to the same Altia event name by using the same event name in more than one out#=... line. The Altia S-Function generates events for Altia based on the ordering of the out#=... lines in the file starting with the first line and finishing with the last line.
Configuration File Examples
The
altiasfn.txt file provided for the automobile demonstration can serve as a starting point for your own custom configuration files. Here are some example configuration file lines that could also apply to the automobile demonstration. The explanations for the lines are shown in the accepted comment format.# Altia/Simulink connection configuration file for automobile
# demonstration. This file can be used with the Altia sf_car.dsn
# design file and Simulink sf_car.mdl model file. It must be named
# altiasfn.txt to be recognized by the Altia/Simulink S-function.
# Request Altia S-Function to start Altia Runtime and load the Altia
# user interface design found in sf_car.dsn.
#
start sf_car.dsn
# Gas pedal value is input #1 (throttle %) into the model (which means
# it is output #1 from the S-Function). The gas pedal generates values
# from 0 to 100 which is a perfect match for percent of throttle.
#
in1=gas_pedal continuous
# The brake pedal value from Altia is input #2 into the model
# (which means it is output #2 from the S-Function). Simulink wants a
# torque value. Through experimentation, a multiplier of 40 for
# Altia brake pedal values from 0 to 100 seems to give the best braking
# response. This means the values going into Simulink are 0 to 4000.
#
in2=brake_pedal x40 continuous
# Output #1 from the model (input #1 for the S-Function) drives the
# speedometer needle animation in Altia. Values from the model go
# from 0 to ? while the needle animation handles values from 0 to 100.
# A maximum of 100 is established so that we set the needle at 100
# for values greater than 100. That is to say, the needle will peg
# at 100 if a value that is less than 100 is immediately followed by
# a value that is greater than 100 - Altia animations simply ignore
# values outside of their defined ranges so specifying a maximum is
# important if larger values can potentially arrive from the model.
#
out1=speed_needle max=100
# Output #2 from the model (input #1 for the S-Function) drives the RPM
# needle animation up to 6000.
#
out2=rpm_needle max=6000
# Output #1 from the model is also displayed in a strip chart. The
# strip chart takes values from 0 to 74 so the model output (which has
# a range from 0 to 200+) is bound to the range 0 to 200 and then
# multiplied by .37 to bring it into the range of 0 to 74. It is
# declared as a continuous output so that the strip chart's data moves
# continuously (i.e., once for each major time step). The strip chart
# only draws its data when a draw event is provided hence the second
# definition for sending events to the strip chart's draw animation -
# the values for the draw events don't matter.
#
out1=speed_strip_nexty continuous min=0 max=200 x.37
out1=speed_strip_draw continuous
# The RPMs are also plotted in a strip chart. For our system view,
# we want to handle a range beyond that shown in the RPM gauge so we'll
# allow 0 to 10000. We have to multiply that by .0074 to bring it into
# the range of the strip chart which handles values 0 to 74.
#
out2=rpm_strip_nexty continuous min=0 max=10000 x.0074
out2=rpm_strip_draw continuous
# And the throttle percent is also plotted in a strip chart. We will
# handle a range of values from 0 to 100 and multiply by .74 to bring
# them into the range of 0 to 74 for the strip chart.
#
out4=throttle_strip_nexty continuous min=0 max=100 x.74
out4=throttle_strip_draw continuous
# We also output the gear number to our gear_position animation and
# we bound the gear value to the range 1 to 4 which is really
# unnecessary since this is the gear's actual range in Simulink.
#
out3=gear_position min=1 max=4
Sources for the Altia S-Function
Altia S-Function source, header, and library files for recompiling and relinking the S-Function executable are provided with the demonstration software. Rebuilding the S-Function should not be necessary unless you wish to try the S-Function for a newer release of Matlab/Simulink. If it is necessary, you can use the altiamex2.m Matlab script to initiate the recompile and relink. The script file may require some customization for your particular Matlab/Simulink software installation.
Installed Files Summary
The Altia Runtime program and its support files:
altiart.exe, fonts.ali
(required by altiart.exe on the PC), colors.ali (required by altiart.exe on the PC)The Altia S-Function executables:
altiasfn.dll
(Matlab 5.2/Simulink 2.2 Altia S-Function executable), altias52.dll (backup copy of altiasfn.dll), altias51.dll (Matlab 5.1/Simulink 2.1 Altia S-Function executable - must be copied to altiasfn.dll for use)The Altia user interface design files for the automobile and engine demonstrations:
sf_car.dsn, sf_car.rtm, engine.dsn, engine.rtm
The Altia S-Function configuration files for automobile demonstration:
altiasfn.txt
, sf_car.txt (backup copy of altiasfn.txt)The Altia S-Function configuration file for engine demonstration:
engine.txt
(must be copied to altiasfn.txt for use)The Altia S-Function source files, libraries, and Matlab build script:
altiasfn.c, altiasfn.h, ms32\*.*
(Microsoft 32-bit Altia libraries and header files), bor32\*.* (Borland 32-bit Altia libraries and header files), altiamex.m (Matlab 5.1 example build script), altiamex2.m (Matlab 5.2 example build script)Additional Questions?
If you have additional questions, feel free to contact an Altia Technical Support Representative at 719-598-4299 in the United States. Or, contact your Altia software distributor if you are located outside of the U.S.