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