unit CONV32; interface uses gltype, glproc, mathobj, Classes,SysUtils, MVTU_TLB; function TElectro_CONV32 (at,adt:RealType;var time,dtime:RealType; var AU,AY:TPtrExt;var AX,ADX:array of RealType; var CU,CY : TIntArray;var Prop:TPtrArray;var Vars:Pointer; Action:Integer):Integer;export; //-------------------------------------------------------------// implementation //-------------------------------------------------------------// const sqrt3 = 1.7320508075688772935274463415059; //(корень из трёх, sqrt_3 = 0.57735026918962576450914878050196; // 1/sqrt(3) div1_3 = 1/3; // 1/3 div2_3 = 2/3; // 2/3 function TElectro_CONV32Convert(Action: integer; Vars: Pointer; Prop: TPtrArray; PropStr: TStringList; BlockId: integer; var MVTU: IMVTU_Server):integer; const RecName:PChar = 'Преобразователь 3-х фазного напряжения в 2-х фазное'; var Res: integer; begin case Action of //Возвращаем ссылку на имя записи в базе МВТУ-4 cnv_GetRecName: Result:=integer(RecName); end; end; function TElectro_CONV32;export; var i : Integer; begin Result := 0; case Action of f_GetConvertFuncAdr: Result:=integer(@TElectro_CONV32Convert); f_GetCount : begin for i:=0 to (CY.Count-1) do CY.arr^[i]:=1; // размер выходов строго определён for i:=0 to (CU.Count-1) do CU.arr^[i]:=1; // и входов тоже ( 1 ) end; f_InitState, f_GoodStep : begin AY.Ptr(0).arr^[0] := div2_3*AU.Ptr(0).arr^[0] - div1_3*(AU.Ptr(1).arr^[0]+AU.Ptr(2).arr^[0]); AY.Ptr(1).arr^[0] := sqrt_3*(AU.Ptr(1).arr^[0] - AU.Ptr(2).arr^[0]) end; end; // case end; //TElectro_CONV23 end.