I’m now writing a custom driver for Simulink Real-time and have a question about how to change the number of input/output-terminals. I want to change the number of the terminals by setting the mask parameter “channel” like pre-installed drivers, e.g. MM-32 Diamond Analog Input or PCI-6621 National Instr. Analog Input.
I started to write the driver using “xpcdrivertool” and added initialization function (below) using these pre-installed drivers as examples.
function [maskdisplay] = init(channel)maskdisplay = sprintf( 'disp(''Interface Baord'');' );for i=1:length(channel) maskdisplay = sprintf('%s port_label(''output'', %d, ''%d'');', maskdisplay, i, channel(i) );end
In the mask editor of the driver block, I added ‘channel’ parameter and wrote an initialization command as follows.
[maskDisplay] = init(channel);set_param(gcb, 'MaskDisplay', maskDisplay);
Also, I’m changing the number of terminals in the initialization function in C code as follows.
if (!ssSetNumOutputPorts(S, number_of_channels)) return;for (i = 0; i < number_of_channels; i++) { ssSetOutputPortWidth(S, i, 1);}
However, the number of terminals does not change in the block diagram. Can someone please help me out?
Best Answer