function capacitorsf(block)
setup(block);
function setup(block)
block.SetPreCompInpPortInfoToDynamic;
block.SetPreCompOutPortInfoToDynamic;
block.NumDialogPrms = 4;
nChannels = block.DialogPrm(1).Data;
block.NumInputPorts = 5 + nChannels;
block.InputPort(1).Dimensions = 3;
block.InputPort(1).DatatypeID = 0;
block.InputPort(1).Complexity = 'Real';
block.InputPort(1).DirectFeedthrough = true;
block.InputPort(2).Dimensions = 3;
block.InputPort(2).DatatypeID = 0;
block.InputPort(2).Complexity = 'Real';
block.InputPort(2).DirectFeedthrough = true;
block.InputPort(3).Dimensions = 3;
block.InputPort(3).DatatypeID = 0;
block.InputPort(3).Complexity = 'Real';
block.InputPort(3).DirectFeedthrough = true;
block.InputPort(4).Dimensions = 1;
block.InputPort(4).DatatypeID = 0;
block.InputPort(4).Complexity = 'Real';
block.InputPort(4).DirectFeedthrough = true;
block.InputPort(5).Dimensions = 1;
block.InputPort(5).DatatypeID = 0;
block.InputPort(5).Complexity = 'Real';
block.InputPort(5).DirectFeedthrough = true;
for i=1:nChannels
block.InputPort(5+i).Dimensions = 1;
block.InputPort(5+i).DatatypeID = 0;
block.InputPort(5+i).Complexity = 'Real';
block.InputPort(5+i).DirectFeedthrough = true;
end
block.NumOutputPorts = 3 + nChannels;
block.OutputPort(1).Dimensions = 1;
block.OutputPort(1).DatatypeID = 0;
block.OutputPort(1).Complexity = 'Real';
block.OutputPort(1).SamplingMode = 'Sample';
block.OutputPort(2).Dimensions = 1;
block.OutputPort(2).DatatypeID = 0;
block.OutputPort(2).Complexity = 'Real';
block.OutputPort(2).SamplingMode = 'Sample';
block.OutputPort(3).Dimensions = 3;
block.OutputPort(3).DatatypeID = 0;
block.OutputPort(3).Complexity = 'Real';
block.OutputPort(3).SamplingMode = 'Sample';
for i=1:nChannels
block.OutputPort(i+3).Dimensions = 3;
block.OutputPort(i+3).DatatypeID = 0;
block.OutputPort(i+3).Complexity = 'Real';
end
block.SampleTimes = [0 0];
block.SimStateCompliance = 'DefaultSimState';
block.RegBlockMethod('PostPropagationSetup', @DoPostPropSetup);
block.RegBlockMethod('Start', @Start);
block.RegBlockMethod('Outputs', @Outputs);
block.RegBlockMethod('Terminate', @Terminate);
block.RegBlockMethod('SetInputPortSamplingMode', @SetInpPortFrameData);
function DoPostPropSetup(block)
block.NumDworks = 4;
block.Dwork(1).Name = 'nChannels';
block.Dwork(1).Dimensions = 1;
block.Dwork(1).DatatypeID = 7;
block.Dwork(1).Complexity = 'Real';
block.Dwork(1).UsedAsDiscState = false;
block.Dwork(2).Name = 'eps0';
block.Dwork(2).Dimensions = 1;
block.Dwork(2).DatatypeID = 0;
block.Dwork(2).Complexity = 'Real';
block.Dwork(2).UsedAsDiscState = false;
block.Dwork(3).Name = 'posOffset';
block.Dwork(3).Dimensions = 3;
block.Dwork(3).DatatypeID = 0;
block.Dwork(3).Complexity = 'Real';
block.Dwork(3).UsedAsDiscState = false;
block.Dwork(4).Name = 'forceNormal';
block.Dwork(4).Dimensions = 3;
block.Dwork(4).DatatypeID = 0;
block.Dwork(4).Complexity = 'Real';
block.Dwork(4).UsedAsDiscState = false;
function Start(block)
block.Dwork(1).Data = uint32(block.DialogPrm(1).Data);
block.Dwork(2).Data = block.DialogPrm(2).Data;
block.Dwork(3).Data = block.DialogPrm(3).Data;
block.Dwork(4).Data = block.DialogPrm(4).Data;
function Outputs(block)
N = uint32(block.Dwork(1).Data);
eps0 = block.Dwork(2).Data;
posOffset = block.Dwork(3).Data;
forceNormal = block.Dwork(4).Data;
TMpos = block.InputPort(1).Data;
TMrot = block.InputPort(2).Data;
elPos = block.InputPort(3).Data;
A = block.InputPort(4).Data;
VDC = block.InputPort(5).Data;
roll = TMrot(1);
pitch = TMrot(2);
yaw = TMrot(3);
dcm = angle2dcm( yaw, pitch, roll );
posOffset = dcm*posOffset;
posNow = posOffset + TMpos;
d = sqrt(sum((posNow - elPos) .^ 2));
C = eps0 * A/d;
block.OutputPort(1).Data = C;
block.OutputPort(2).Data = d;
block.OutputPort(3).Data=posOffset;
for i=1:N
VAC = block.InputPort(5+i).Data;
f = (VDC + VAC)^2 * eps0*A/2/d^2;
block.OutputPort(i+3).Data = f.*forceNormal;
end
function Terminate(block)
function SetInpPortFrameData(block, idx, fd)
block.InputPort(idx).SamplingMode = fd;
for i = 1:block.NumOutputPorts
block.OutputPort(i).SamplingMode = fd;
end
Not enough input arguments.
Error in capacitorsf (line 33)
setup(block);