SSN-688

Relacje z budowy tych jednostek
ODPOWIEDZ
Awatar użytkownika
stefan
Posty: 1155
Rejestracja: 04 gru 2010, 21:55

Re: SSN-688

Post autor: stefan »

A co? kibelek rozsadziło?
Awatar użytkownika
bartes123
Posty: 784
Rejestracja: 04 gru 2010, 21:56

Re: SSN-688

Post autor: bartes123 »

Nie chcę znowu czarnowidztwa uprawiać, ale popracowałem trochę w urzędzie pracy a następnie w instytucie. Czasem możesz najeździć się tyle samo czasu, co model budujesz. Szybciej byłoby ufundować Szczecinianom kolejną fontannę im. Andrzeja Koryckiego i w niej sobie próby porobić.
Miejska fontanna to jednak miejska fontanna - jak szybko biegasz możesz się w niej i bezkarnie zesrać. Ale okrętu podwodnego nie zwodujesz...
Awatar użytkownika
oksal
Posty: 1893
Rejestracja: 04 gru 2010, 21:55

Re: SSN-688

Post autor: oksal »

:cry: To jesteś skazany na fontannę w Tczewie.
Awatar użytkownika
Andrzej1
Posty: 1568
Rejestracja: 04 gru 2010, 21:56
Lokalizacja: {"name":"Polska Szczecin","desc":"","lat":"","lng":""}

Re: SSN-688

Post autor: Andrzej1 »

oksal pisze::cry: To jesteś skazany na fontannę w Tczewie.


Witaj, Adamie i Ty Kogowiczu

W/w wyrok nie jest ciężki, a wręcz powiem, że jestem z niego dumny.
Ale byłoby dobrze, aby w Tczewie model zachowywał się zgodnie z Waszymi, Drodzy
Przyjaciele, oczekiwaniami. A to jest związane z przeprowadzeniem wielu prób i korekt
oprogramowania. Będę musiał, prawdopodobnie, wynaleźć kilka razy koło i odkryć, że to Ziemia
do okoła Słońca krąży a nie odwrotnie.
Ale obiecuję, Wam, że nie odpuszczę. Dopóki tuszu w drukarce (mam zapas) i tchu
w piersiach (Tomasz_D i inni słyszeli).

Z ukłonami
Andrzej Korycki

P.S. Pismo do ZUK jest identycznej treści co do UM. I mam stempelek, że wpłynęło, tą razą czarny.
P.S.P.S.
bartes123 pisze:...
Miejska fontanna to jednak miejska fontanna - jak szybko biegasz możesz się w niej i bezkarnie zesrać. Ale okrętu podwodnego nie zwodujesz...

Zwoduję.
Awatar użytkownika
Andrzej1
Posty: 1568
Rejestracja: 04 gru 2010, 21:56
Lokalizacja: {"name":"Polska Szczecin","desc":"","lat":"","lng":""}

Re: SSN-688

Post autor: Andrzej1 »

Witam

Tą razą mam dwa (słownie 2) zdania do napisania :
Po pierwsze primo : LAla wczoraj machała śrubą w rybkariumie, jest nieżle.
I pytanie : Na mojej apartaturze są dwa dwa trymery z napisem CH1 i CH2 i etykietą ATV.
Co to ?
Uprzejmie proszę wyjadaczy RC o jakąś informację.

Z ukłonami
Andrzej Korycki

P.S.
W środę spodziewam się reakcji ZUK,u.
Awatar użytkownika
rychenko
Posty: 681
Rejestracja: 04 gru 2010, 21:56

Re: SSN-688

Post autor: rychenko »

Witaj Andrzeju
ATV służy to ustawienia końcowych punktów wychyleń serwa, a CH 1 CH2 to kanały jakie ta funkcja ustawia.
;)
Pozdrawiam Ryszard
Awatar użytkownika
Andrzej1
Posty: 1568
Rejestracja: 04 gru 2010, 21:56
Lokalizacja: {"name":"Polska Szczecin","desc":"","lat":"","lng":""}

Re: SSN-688

Post autor: Andrzej1 »

Witam

Dziękuję Ci Ryszardzie. Zrobiłem się okropnie "mondry".
Nie będę tym kręcił, bo nie. I tak ustawiam wszystko w programie.

Ponieważ nie mam wyobrażenia żadnego, jak sterować zanurzaniem okrętu, to znaczy nie wiem jak mają ze sobą współpracować stery głębokości, zbiorniki balastowe i dżojstik na aparaturze, to wymyśliłem, że będę ustawiał ile wody ma nabrać zbiornik dziobowy. Rufowy ma się dostosować tak, aby inklinometr
wskazywał zero przechyłu na dziób. W ten sposób zanurzę okręt. Jak to będzie wyglądało w praniu
jeszcze nie wiem. Funkcje sterujące zbiornikiem dziobowym wyglądają tak :

Kod: Zaznacz cały

unsigned char MocSilnWZalOdOdleglZbiorniki( unsigned char zbiornik, int NumerZadanyImp )
{
   int nrImp = CalkujImpulsyZbiornika( zbiornik );
   nrImp -= NumerZadanyImp;
   if ( nrImp < 0 )nrImp = -nrImp;
   if ( nrImp > 100 )return PELNA_MOC;
   if ( nrImp > 70 )return TRZY_CZWARTE_MOCY;
   if ( nrImp > 40 )return POL_MOCY;
   if ( nrImp > 25 )return JEDNA_CZWARTA_MOCY;
   
   return JEDNA_OSMA_MOCY;
}

unsigned char ZatrzymacSilnikZbiorniki( unsigned char zbiornik, int NumerZadanyImp )
{
   int nrImp = CalkujImpulsyZbiornika( zbiornik );
   nrImp -= NumerZadanyImp;
   if ( nrImp < 0 )nrImp = -nrImp;
   if ( nrImp < 8 )return 1;
   return 0;
}


void SetPolozenieTlokaZbiorniki( unsigned char zbiornik, int NumerZadanyImp )
{
   int nrImp = CalkujImpulsyZbiornika( zbiornik );
   unsigned char moc = MocSilnWZalOdOdleglZbiorniki( zbiornik, NumerZadanyImp );
   unsigned char kierunek;
   if ( IsSilnikZbiornikaBusy( zbiornik ) )return;
   kierunek = GetKierunekObrotowSilnikZbiornika( zbiornik );
   
   if ( nrImp > NumerZadanyImp )
   {// powinien oprozniac
      switch( StanSilnika( zbiornik ) )
      {
      case SILNIK_STOI:
         if( ZatrzymacSilnikZbiorniki( zbiornik, NumerZadanyImp ) )return;
         if ( SILNIK_NAPELNIA == kierunek )
         {
            KierunekObrotowSilnikaZbiornika( zbiornik, OPROZNIAJ_ZBIORNIK);
            return;
         }
         SetMocSilnikaZbiornika( zbiornik, moc );
         SilnikZbiornikaOn( zbiornik );
         break;
      case SILNIK_NAPELNIA:
         SilnikZbiornikaOff( zbiornik );
         return;
      case SILNIK_OPROZNIA:
         SetMocSilnikaZbiornika( zbiornik, moc );
         if ( ZatrzymacSilnikZbiorniki( zbiornik, NumerZadanyImp ) )   SilnikZbiornikaOff( zbiornik );
         break;
      case SILNIK_BUSY:
         break;
      }
      
   }
   else if ( nrImp == NumerZadanyImp )
   {
      SilnikZbiornikaOff( zbiornik );
      SetMocSilnikaZbiornika( zbiornik, moc );
   }
   else
   {// powinien napelniac
      switch( StanSilnika( zbiornik ) )
      {
      case SILNIK_STOI:
         if( ZatrzymacSilnikZbiorniki( zbiornik, NumerZadanyImp ) )return;
         if ( SILNIK_OPROZNIA == kierunek )
         {
            KierunekObrotowSilnikaZbiornika( zbiornik, NAPELNIAJ_ZBIORNIK);
            return;
         }
         SetMocSilnikaZbiornika( zbiornik, moc );
         SilnikZbiornikaOn( zbiornik );
         break;
      case SILNIK_NAPELNIA:
         SetMocSilnikaZbiornika( zbiornik, moc );
         if ( ZatrzymacSilnikZbiorniki( zbiornik, NumerZadanyImp ) )   SilnikZbiornikaOff( zbiornik );
         return;
      case SILNIK_OPROZNIA:
         SilnikZbiornikaOff( zbiornik );
         break;
      case SILNIK_BUSY:
         break;
      }
      
   }
}
// Impulsy z nadajnika maja od 264 do 468
// To ma sie odwzorowac na 1100 impulsow impulsatora
// tylko sterowanie tylko zbiornikiem dziobowym

void SetPolozenieTlokaZbiornikaDzZbiorniki( void )
{
   int nrImp;
   cli();
   nrImp = iRCDlugImpZanurzenia;
   sei();
   if( nrImp < 264 )nrImp = 264;
   if( nrImp > 458 )nrImp = 458;
   nrImp -= 264; //Zmienna od 0 do 194
   nrImp *= 57;
   nrImp /=10;
   SetPolozenieTlokaZbiorniki( ZBIORNIK_DZIOBOWY, nrImp );

}


i działają. To znaczy macham dżojstikiem, a zbiornik się "rusa".
Dokładność ustawienia zbiornika = 2 impulsy to jest kilka gramów wagi modelu.
O kolejnej "surażce lub pokcesie" za poniedługo.
Z ukłonami
Andrzej Korycki
Awatar użytkownika
Slawek Kromer
Posty: 962
Rejestracja: 04 gru 2010, 21:55

Re: SSN-688

Post autor: Slawek Kromer »

Awatar użytkownika
Andrzej1
Posty: 1568
Rejestracja: 04 gru 2010, 21:56
Lokalizacja: {"name":"Polska Szczecin","desc":"","lat":"","lng":""}

Re: SSN-688

Post autor: Andrzej1 »

Witam

Dzięki Ci Sławku za link. Modele O.P. oglądam z dużą przyjemnością. Na tym filmie widać, że
i tamten model ma kłopoty z utrzymaniem poziomu gdy się nie porusza.

Oto pierwsza próba LAli sterowanej radiem z pełną, choć jeszcze nieco niezdarną funkcjonalnością :

http://www.youtube.com/watch?v=dBLNjn-g4SQ

Dama trzyma się troszku krzywo, ale wypiła zbyt dużo i cóż : dupka opadła.

Sam program, który nią sterował na polecenia z aparatury wyglądał tak :

Kod: Zaznacz cały

void TestSterowaniaGlebokoscia20110904( void )
{
   int czas;

   SilnikGlownyOff();   
   BootWaterOnBoardMain();

   OpoznienieNaStarcie10Sek();

   InitZbiorniki();
   PORTA &= ~_BV(LED_GREEN);

   while( !ShipInTheWater() );
   czas = GetIntSecondMain();
   while( ( GetIntSecondMain() - czas ) < 2 );
   
   for(;;)
   {
      ZmianaGlebokosciImpZbiorniki( );
      SterowanieSilnikiemGlownym();
      SterowanieZaworemNapowietrzaniaMain();
      SteryGlebokosciMain();
      
      if ( !ShipInTheWater() )
      {
         InitZbiorniki();
         for(;;);
      }
      
   }
}


i nie był za zbytnio skomplikowany. Oczywiście nie widać tu szczegółów, ale ... .
Do fontanny coraz bliżej.

Z ukłonami
Andrzej Korycki
Awatar użytkownika
radek
Posty: 744
Rejestracja: 04 gru 2010, 21:55
Lokalizacja: {&quot;name&quot;:&quot;Warszawa&quot;,&quot;desc&quot;:&quot;Warszawa,wojew\u00f3dztwo mazowieckie,Polska,pl&quot;,&quot;lat&quot;:&quot;52.2319581&quot;,&quot;lng&quot;:&quot;21.0067249&quo
Kontakt:

Re: SSN-688

Post autor: radek »

Andrzeju z czego wynika fakt, że okręt nie zanurza się równo?
Zagadnienie pewnie dosyć skomplikowane (w tym pewnie położenie tłoków, ustalenie środka ciężkości, program itd) ale chciałbym się dowiedzieć, jakiego typu problemy są problemami głównymi i czy nie da się wprowadzić jakiegoś programowego regulatora PID który by to wyrównywał.

Może Twoja odpowiedź już padła w tym wątku, ale prawdopodobnie w kodzie, w który nie jestem w stanie wniknąć nie znając struktury we-wy oraz układu sprzężeń zwrotnych.

Pozdrawiam.
Radosław Kubera
Koga Portal
ODPOWIEDZ