178-137-115-76-zap.broadb, так ТС и не просил готовую пограмму, но возможность моделирования В предложенном пример моделирования процессов в длинной линии, показывающий МОЖНО ПОЧТИ ВСЁ!
------------ Дoбавленo в 00.56:
Самому интересно стало, смоделировал, хотя тоже не ФАПЧ, но похоже
Add(MainForm,2953706,812,392) { Width=454 } Add(Thread,13620091,203,133) { Delay=1 link(onSyncExec,6324899:doOperation,[]) } Add(MMTimer,2258497,203,301) { Resolution=0 Interval=3 Enable=1 link(onTimer,15195196:doOperation,[]) } Add(Math,15195196,266,301) { Op2=1 link(onResult,15348530:doOperation,[]) link(Op1,15195196:Result,[(272,292)(258,292)(258,341)(272,341)]) } Add(Math,6324899,266,140) { Op2=5 link(onResult,15748814:doOperation,[]) link(Op1,6324899:Result,[(272,131)(258,131)(258,180)(272,180)]) link(Op2,10146098:Result,[]) } Add(Button,6848762,63,133) { Left=5 Top=5 Caption="Вкл" link(onClick,3173753:doEvent1,[]) } Add(Button,11763792,70,273) { Left=5 Top=45 Caption="Откл" link(onClick,1319827:doEvent1,[]) } Add(Math,15348530,322,301) { OpType=13 AngleMode=1 link(onResult,5502951:doValue,[]) } Add(Math,15748814,322,140) { OpType=13 AngleMode=1 link(onResult,3811452:doValue,[]) } Add(Plotter,8351014,63,77) { Left=120 Top=5 Width=315 Height=255 Color=12639424 Name="MyOsc" GridX=20 GridY=11 MinH=-1.1 MaxH=1.1 RightMargin=5 TopMargin=2 BottomMargin=2 } Add(PlotLines,9771472,322,189) { Grapher="MyOsc" MaxValues=720 link(ValueY,15748814:Result,[]) link(ValueX,4844057:Var3,[(335,180)]) } Add(PlotLines,14791142,322,350) { Grapher="MyOsc" Color=16711680 Step=1 MaxValues=720 link(ValueY,15348530:Result,[]) link(ValueX,11891897:Var2,[(335,341)(314,341)]) } Add(Thread,2545194,154,203) { Delay=1 link(onSyncExec,10008224:doOperation,[]) } Add(Math,10008224,203,210) { Op2=1 link(onResult,11108516:doEvent1,[]) link(Op1,4933945:Var1,[(209,201)(195,201)(195,250)]) } Add(Hub,11108516,252,210) { OutCount=4 link(onEvent1,2584216:doAdd,[(305,216)(305,97)]) link(onEvent2,9771472:doAdd,[(309,223)(309,195)]) link(onEvent3,14791142:doAdd,[(305,230)(305,356)]) link(onEvent4,10620500:doEvent1,[]) } Add(GetDataEx,4933945,203,245) { link(Data,10008224:Result,[]) } Add(GetDataEx,11891897,308,245) { Angle=3 link(Data,4933945:Var3,[]) } Add(Hub,3173753,112,133) { OutCount=3 link(onEvent1,13620091:doStart,[]) link(onEvent2,2258497:doTimer,[(165,146)(165,307)]) link(onEvent3,2545194:doStart,[(137,153)(137,209)]) } Add(Hub,1319827,112,273) { OutCount=3 link(onEvent1,13620091:doStop,[(191,279)(191,146)]) link(onEvent2,2258497:doStop,[(158,286)(158,314)]) link(onEvent3,2545194:doStop,[(137,293)(137,216)]) } Add(TrackBar,14785383,224,35) { Left=70 Width=30 Height=265 Max=7500 Min=2500 TickCount=500 Position=5000 Kind=1 link(onPosition,10146098:doOperation,[]) } Add(Math,10146098,273,35) { OpType=3 Op2=1000 Default=5 link(onResult,355601:doCalc,[]) } Add(MathParse,355601,322,35) { MathStr="(5-%1)/2" } Add(PlotLines,2584216,322,91) { Grapher="MyOsc" Color=32768 MaxValues=720 link(ValueY,355601:Result,[]) link(ValueX,4844057:Var2,[(335,82)(314,82)]) } Add(GetDataEx,4844057,308,175) { Angle=2 link(Data,11891897:Var1,[]) } Add(Hub,14220953,637,140) { link(onEvent1,13905377:doValue,[]) link(onEvent2,9048030:doReset,[(671,153)(671,118)]) } Add(Counter,9048030,707,98) { Max=9999999 } Add(MemFifo,3811452,371,140) { link(onData,14922591:doCompare,[]) } Add(MemFifo,5502951,371,301) { link(onData,8735466:doCompare,[]) } Add(If_else,14922591,420,140) { Type=1 Op2=Real(0) link(onTrue,480429:doCompare,[]) link(Op1,3811452:Value2,[(426,131)(412,131)(412,180)(384,180)]) } Add(If_else,480429,469,140) { Type=4 Op2=Real(0) link(onTrue,11648268:doNext,[]) link(Op1,3811452:Value1,[(475,131)(461,131)(461,195)(377,195)]) } Add(If_else,8735466,420,301) { Type=1 Op2=Real(0) link(onTrue,12187371:doCompare,[]) link(Op1,5502951:Value2,[(426,292)(412,292)(412,341)(384,341)]) } Add(If_else,12187371,469,301) { Type=4 Op2=Real(0) link(onTrue,1686089:doEvent1,[]) link(Op1,5502951:Value1,[(475,292)(461,292)(461,355)(377,355)]) } Add(Hub,10620500,616,231) { link(onEvent1,9048030:doNext,[(659,237)(659,104)]) link(onEvent2,4617319:doNext,[(641,244)(641,265)]) } Add(MathParse,15105807,728,301) { DataCount=4 MathStr="%3 - (%1 - %2)*%4" ResultType=0 link(onResult,14785383:doPosition,[(792,307)(792,19)(206,19)(206,41)]) link(X2,9940181:Var2,[]) link(X3,14785383:Position,[(748,75)(230,75)]) link(X4,4436337:Value,[]) } Add(Memory,4436337,749,245) { Default=Real(1) } Add(Counter,11648268,525,140) { Max=4 Point(Max) Point(doMax) link(onNext,14609988:doCompare,[]) link(Max,244640:Position,[(531,124)(412,124)]) } Add(If_else,14609988,567,140) { Op2=Integer(0) link(onTrue,14220953:doEvent1,[]) } Add(Memory,13905377,707,140) { Default=Integer(1) Point(Data) link(Data,9048030:Count,[]) } Add(Hub,1686089,616,301) { link(onEvent1,13980513:doValue,[]) link(onEvent2,4617319:doReset,[(641,314)(641,279)]) } Add(Counter,4617319,651,259) { Max=9999999 } Add(Memory,13980513,651,301) { Default=Integer(1) Point(Data) link(onData,14486021:doEvent1,[]) link(Data,4617319:Count,[]) } Add(TrackBar,244640,406,35) { Left=15 Top=75 Width=25 Height=110 Max=6 Min=3 Position=4 Kind=1 link(onPosition,14853358:doEvent1,[]) } Add(Label,12953052,560,35) { Left=10 Top=195 Width=35 Height=30 Font=[MS Sans Serif,12,1,0,1] Caption="x5" } Add(StrCat,15829735,518,35) { Str1="x" link(onStrCat,12953052:doText,[]) } Add(Math,10393933,476,35) { Op2=1 link(onResult,15829735:doStrCat,[]) } Add(Hub,14853358,448,35) { link(onEvent1,10393933:doOperation,[]) link(onEvent2,11648268:doMax,[(469,48)(469,92)(515,92)(515,167)]) } Add(MathParse,10830150,714,392) { MathStr="round((1-%2/%1)*100,0.01)" link(onResult,7716424:doString,[]) link(X2,9940181:Var1,[(727,285)]) } Add(Hub,14486021,693,301) { link(onEvent1,15105807:doCalc,[]) link(onEvent2,10830150:doCalc,[(718,314)(718,384)(704,384)(704,398)]) } Add(GetDataEx,9940181,735,280) { link(Data,13905377:Value,[(741,183)(713,183)]) } Add(FormatStr,7716424,763,392) { DataCount=1 Mask="Отклонение %1 %" link(onFString,2953706:doCaption,[]) } Add(InfoTip,2770536,182,119) { Info=#26:Синхронизируемый генератор| Width=183 Height=67 } Add(InfoTip,14095493,196,273) { Info=#17:Опорный генератор| Width=169 Height=74 } Add(InfoTip,5109130,189,21) { Info=#8:Вариокап| Width=176 Height=60 } Add(InfoTip,5664486,609,56) { Info=#9:Сравнение|1:и|10:управление| Width=176 Height=284 }
------------ Дoбавленo в 01.00:
У, собака, заскролилась схема, попробую файлом
|