Code covered by the BSD License  

Highlights from
Function Chart V.3.2

image thumbnail
from Function Chart V.3.2 by Gert-Helge Geitner
Easy event-driven motion control for education with GUI based parameter, syntax and dead end check

BLN.m
function [name,FEH]=BLN(TKode,SKode,SNr,FoS,GUI,FEH)
%function [name,FEH]=BLN(TKode,SKode,SNr,FoS,GUI,FEH)
%Ermittlung eines Blocknamensstrings: inverse neue Kodierung!
%                                     wre auch fr VariablenNamen anwendbar

%  Copyright (c) 1997-2013. All Rights Reserved. 
%                     Dr. Gert-Helge Geitner; TU Dresden, Fak. EuI,
%                     Elektrotechnisches Institut (ETI); Mommsenstr. 13;
%                     D-01062 Dresden, Germany;
%                     http://eeiwzg.et.tu-dresden.de/ae2_files/ae_7_6e.htm

T_01={'SFDEKO-BLN: Abort - false TKode detected!';...
      'SFDEKO-BLN: Abort - false SKode detected!'};
switch TKode                  %Nur zur Sicherheit, j auch mit SKode setzbar
  case {10, 80, 20},     j=3; %zweistelliger SKode
  case {40, 50, 25, 30}, j=4; %dreistelliger SKode
  otherwise if GUI FEH(end+1,1)={T_01(1,1)}; return; else error(T_01(1,1)); end
end
switch SKode                  %Namensanfang nach alter Kodierung
  case {4892}, name='EX';
  case {6509}, name='ZX';
  case {4715}, name='ZA';
  case {5027}, name='ZE';
  case {5105}, name='ZF';
  case {3638}, name='KB';
  case {4701}, name='A2V';
  case {5017}, name='A2Z';
  case {5856}, name='P2V';
  case {6172}, name='P2Z';
  case {4779}, name='A3V';
  case {5095}, name='A3Z';
  case {5934}, name='P3V';
  case {6250}, name='P3Z';
  case {7816}, name='FUV';
  case {8210}, name='FVZ';
  otherwise if GUI FEH{end+1,1}=T_01{2,1}(1,:); return;
            else   error(T_01{2,1}(1,:)); end
end
if SKode==SNr|FoS return; end; %Sonderfall Namensanfang: direkt oder nur
SNr=SNr-SKode;
name(j)=char(rem(SNr,80^3)/80^2)+47;
SNr=fix(SNr/80^3);
if     SNr==0                         return; % 1 Stelle
elseif SNr<80 name(j+1)=char(SNr)+47; return; % 2 Stellen
else while j                 %ab 3 Stellen, beginnend mit 2. Stelle
       j=j+1;
       name(j)=char(rem(SNr,80))+47;
       SNr=fix(SNr/80);
       if SNr<80 name(j+1)=char(SNr)+47; return; end; end
end

Contact us