unit CONV23; interface uses gltype, glproc, mathobj, Classes,SysUtils, MVTU_TLB; function TElectro_CONV23 (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; //(корень из трёх, // чтобы не пересчитывать заново) function TElectro_CONV23Convert(Action: integer; Vars: Pointer; Prop: TPtrArray; PropStr: TStringList; BlockId: integer; var MVTU: IMVTU_Server):integer; const RecName:PChar = 'Преобразователь 2-х фазного напряжения в 3-х фазное'; var Res: integer; begin case Action of //Возвращаем ссылку на имя записи в базе МВТУ-4 cnv_GetRecName: Result:=integer(RecName); end; end; function TElectro_CONV23;export; var i : Integer; begin Result := 0; case Action of f_GetConvertFuncAdr: Result:=integer(@TElectro_CONV23Convert); 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] := AU.Ptr(0).arr^[0]; AY.Ptr(1).arr^[0] := +0.5*(-AU.Ptr(0).arr^[0] + sqrt3*AU.Ptr(1).arr^[0]); AY.Ptr(2).arr^[0] := +0.5*(-AU.Ptr(0).arr^[0] - sqrt3*AU.Ptr(1).arr^[0]); end; end; // case end; //TElectro_CONV23 end.