function [bonds,status] = PS_cause(bonds); % Causality for PS component %SUMMARY PS: Power sensor %DESCRIPTION Port[in]: Inflowing bond %DESCRIPTION Port[out]: Outflowing bond e_2=e_1; f_2=f_1. %DESCRIPTION Port[power]: f = power = e_1*f_1 = e_2*f_2 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %% Version control history % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %% $Id$ % %% $Log$ % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Copyright (c) P.J. Gawthrop, 1997. status = -1; % Check that there are exactly three bonds. if check_bonds(bonds,3,'PS')==0 return end % Do the [in] and [out] ports -- like a TF inout_bonds = bonds(1:2,:); [inout_bonds,inout_status] = TF_cause(inout_bonds); % Do the power port -- must have flow out and effort in power_bonds = bonds(3,:); for i = 1:2 if (power_bonds(i)==1) power_status = 0; elseif (power_bonds(i)==0) power_bonds(i)==1; power_status = 0; else power_status = 1; end; end; % Reconstruct the bonds bonds = [inout_bonds; power_bonds]; % Generate an overall status if (inout_status==1)|(power_status==1) status = 1; elseif (inout_status==-1)|(power_status==-1) status=-1; else status = 0; end;