Forum Koga • Strona główna - Koga Portal - Modele - Żaglowce - Statki - Okręty - Forum modelarskie • SSN-688 - Strona 87
Strona 87 z 101

Re: SSN-688

: 26 maja 2011, 23:34
autor: PanLipazMiodem
Panowie z NASA, w ogóle nie wiem o czym wy rozmawiacie

Re: SSN-688

: 27 maja 2011, 07:52
autor: Tomasz_D
Miodek nie przejmuj się. Ja to widziałem kilka razy na żywo, czytam także po kilka razy to co Jędrek wypisuje i też nic nie rozumiem. Taki to urok tej Lalki.

Re: SSN-688

: 27 maja 2011, 11:11
autor: antosiek
Gadają szyfrem żeby ochrona Obamy nie przechwyciła. W końcu to chodzi o ich wyrób.
To, że głośna to nie ma zmartwienia. Po pierwsze w piwnicy rezonuje a po drugie niech wiedzą wiedzą że będzie się zbliżać.

Re: SSN-688

: 27 maja 2011, 13:22
autor: Andrzej1
ramol pisze:...
edit: zwykła zmienna typu int też jest oparta na rejestrze 8 bitowym, ale jeżeli używając zmiennej typu char też ci wszystko chodzi to ok, moje obawy dotyczą tego że może się to czasem wykrzaczyć przy wykonywaniu jakichś procedur, bo pomimo że zmiennej char nadajesz określoną wartość to gdzieś w podprocedurach może być potraktowana jako zmienna znakowa i wyjdzie że program będzie usiłował porównać wartości pętli nie z liczbą podstawioną pod zmienną char, tylko ze znakiem z tablicy ASCI odpowiadajacym wartości podstawionej liczby. I wtedy wyjdzie taki mały zonk bo się wywali.


Witaj Mariuszu
Tu się posprzeczamy chwilę :
1. Zwykła zmienna int (mówimy o języku ANSI C) jest co najmniej 16 bitowa. To znaczy gwarantuje
zakres -32768 do 32767. Oparta jest o operacje na parach rejestrów ośmiobitowych w procesorach
ośmiobitowych.
Dalsza częsć tego fragmentu Twojej wypowiedzi jest dla mnie niezrozumiała.
Jak kompilator może coś potraktować bez mojej wiedzy i zgody - tego nie wiem.
Jeżeli potraktuje, to znaczy się JA mu pozwoliłem i jestem dupa a nie programista albo
tak chciałem (zwykle to pierwsze).

ramol pisze:Malutka uwaga: generalnie 8bitowa zmienna może być albo w zakresie 0-256 gdzie całe 8 bitów jest przeznaczone na liczbę, lub w zakresie (-128)do(128) gdzie 7 bitów przeznaczone jest na liczbę a 8 bit zawiera znak.
Stosując zakres zamiast -90 do 90, można zastosować zakres 0 do 180, asembler procesora oszczędza przy każdej operacji dodawania i odejmowania jedną operację sprawdzenia i przepisania znaku, ponieważ dostaje w rejestrze za każdym razem zmienna dodatnią i od razu wykonuje działanie bez operacji sprawdzania znaku zmiennej.


Zakres zmiennej ośmiobitowej bez znaku musi się kończyć na liczbie nieparzystej
(ustawiony najmłodszy bit) to daje zakres 0-255.
Zmienna ośmiobitowa ze znakiem ma zakres -128 do 127.
To jak wykonywana jest operacja dodawania, odejmowania liczb ze znakiem czy bez znaku
zależy od procesora. Co prawda tu procesor jest znany i nie może być inny, ale nie jest
dobrą praktyką optymalizowanie programu do procesora, chyba, że to LAla.

I znów powiedzą, że jesteśmy z NASA albo Księżyca, bo Oni nic nie rozumiom.

Z ukłonami
Andrzej Korycki

Re: SSN-688

: 27 maja 2011, 14:06
autor: Kon_Bar
1. Zwykła zmienna int (mówimy o języku ANSI C) jest co najmniej 16 bitowa. To znaczy gwarantuje
zakres -32768 do 32767. Oparta jest o operacje na parach rejestrów ośmiobitowych w procesorach
ośmiobitowych.


Eeee tam...
int jest równa słowu i na maszynach 8-bit powinna mieć 1B ;)
Variables of type int are one machine-type word in length.

Inna sprawa, że jak poczytałem dalej, to:
- char nie jest znakiem a po Bożemu jednobajtową zmienną
Variables of type char are 1 byte in length
- domyślnie char powinien być ze znakiem (chyba, że masz inaczej ustawiony kompilator - może tu jest pies pogrzebany?)
They [char variables] can be signed (this is the default, unless you use the compiler option '-funsigned-char') or unsigned

Nie mogłem nie dopisać się do klanu NASA ;)

Re: SSN-688

: 27 maja 2011, 14:27
autor: Andrzej1
Witaj Konradzie w NASA.
Kon_Bar pisze:...
Eeee tam...
int jest równa słowu i na maszynach 8-bit powinna mieć 1B ;)
Variables of type int are one machine-type word in length.
...


Zaraz Eeee tam ...
The type int holds an integer. It is usually the same size as a word (or register) on the target machine.
str. 237 ANSI C Lexical Guide.ISBN 0-13-037814-4, 1988 Mark Wiliams Company.

Ja wiem, że stare, ale ja co młody jestem ?
Ma zwykle ten sam wymiar co słowo albo rejestr, to znaczy nie wiadomo ile ma.

Zakończmy ten spór o integera bo mi nie działało co inne. Teraz działa.
I za dni kilka będze działać dobrze.
A oto prawie działający kod jeszcze z testowym wysyłaniem znaków do laptopa :

Kod: Zaznacz cały

void Test20110520( void )
{
/*Funkcja :
1. Sprawdza, czy nie ma wody na pokladzie. Jezeli jest, to zapala bialego leda
   i konczy prace
2. Wykonuje test zbiorników, otwiera zawor napowietrzania, zapala bialego leda
3. Czeka na wlozenie okretu do wody
4. Mierzy zanurzenie okretu i traktuje je jako zero
5. Zanurza okret na 3 cm, zamyka zawor napowietrzania
6. Balansuje na glebokosci 3 cm przez 40 sekund
7. Wynurza okret otwierajac zawor
Pilnowane jest przechylenie dzob/rufa okretu
*/
   int8_t inclination, inkl;
   unsigned char stanZanurzenia, sz;
   unsigned int czasStart;
   int iZanurzenie, iz;
   
   unsigned char stan = 0;
   unsigned char stan1 = 0;
   unsigned char prevStan = 0;
   unsigned char prevStan1 = 0;
   unsigned char bdisp = 0;
   
   BootWaterOnBoardMain();
   
   OpoznienieNaStarcie10Sek();
   
/*--------------------------------------   
   inclination = 0; // Okret w poziomie
   iZanurzenie = 0; // Okret nad woda
   WyslijZnak( inclination );
   
   for(;; )
   {
      if ( INCLINATION_INVALID  != ( inkl = GetInclinationAbs() ) )
      {
         if ( inclination != inkl )
         {
            inclination = inkl;
            bdisp = 1;

         }
         
      }
      if ( ( iz = GetZanurzenieMM() ) > 0 )
      {
         if ( iz != iZanurzenie )
         {
            iZanurzenie = iz;
            bdisp = 1;
         }
      }
      if ( bdisp )
      {
         WyslijZnak( inclination );
         stan = (unsigned char)iZanurzenie;
         WyslijZnak( stan );
         bdisp = 0;
      }
   
   }
   

--------------------------------------*/   
   

   InitZbiornik( ZBIORNIK_RUFOWY );
   
   InitZbiornik( ZBIORNIK_DZIOBOWY );
   NapowietrzanieOpen();
   
   // Po inicjacji zapalic bialego leda
   PORTA &= ~_BV(LED_WHITE);
   
// Czekanie na wlozenie okretu do wody
   while( !ShipInTheWater() )
   {
   }
   KierunekObrotowSilnikaZbiornika( ZBIORNIK_RUFOWY, NAPELNIAJ_ZBIORNIK);
   KierunekObrotowSilnikaZbiornika( ZBIORNIK_DZIOBOWY, NAPELNIAJ_ZBIORNIK);
   
   czasStart = GetIntSecondMain();
   while ( ( GetIntSecondMain() - czasStart )  < 3 );
   
   iZanurzenie = 0;
   czasStart = GetIntSecondMain();
   while ( ( GetIntSecondMain() - czasStart )  < 3 )
   {
      if ( IsZanurzenieValid() )
      {
         iZanurzenie = GetZanurzenieMM();
         break;
      }
   }
   
   WyslijZnak( 'Z' );
   inkl = (char)iZanurzenie;
   WyslijZnak( inkl );
   WyslijZnak( 'Z' );
   
   
   czasStart = GetIntSecondMain();
   while ( ( GetIntSecondMain() - czasStart )  < 3 );
   
   
   iZanurzenie += 30;
   inclination = 0; // Okret w poziomie
   // Zanurzanie przez 30 sekund
   stanZanurzenia = ZANURZENIE_OK;
   
   czasStart = GetIntSecondMain();
   while( ( GetIntSecondMain() - czasStart ) < 40 )
   {
      if ( ShipUnderTheWater() )
      {
         NapowietrzanieClose();
      }
      else
      {
         NapowietrzanieOpen();
      }
      if ( INCLINATION_INVALID  != ( inkl = GetInclinationAbs() ) )
      {
         inclination = inkl;
      }
      
      if ( ZANURZENIE_INVALID != (sz = StanZanurzenia( iZanurzenie) ) )
      {
         stanZanurzenia = sz;
      }
      switch ( stanZanurzenia )
      {
         case ZMNIEJSZYC_ZANURZENIE:
            if ( inclination > 0 ) // Zmniejszyc zanurzenie
            {// dziob w gore
             // Dziobowy stop, wypompowac z balastu rufowego
               switch( StanSilnika( ZBIORNIK_DZIOBOWY ) )
               {
               case SILNIK_STOI:
                  stan = 1;
                  break;
               case SILNIK_BUSY:
                  stan = 2;
                  break;
               case SILNIK_NAPELNIA:
                  SilnikZbiornikaOff( ZBIORNIK_DZIOBOWY );
                  stan = 3;
                  break;
               case SILNIK_OPROZNIA:
                  SilnikZbiornikaOff( ZBIORNIK_DZIOBOWY );
                  stan = 4;
                  break;
               }
               
               switch( StanSilnika( ZBIORNIK_RUFOWY ) )
               {
               case SILNIK_STOI:

                  if ( SILNIK_OPROZNIA != GetKierunekObrotowSilnikZbiornika( ZBIORNIK_RUFOWY ) )
                  {
                     stan1 = 5;
                     KierunekObrotowSilnikaZbiornika( ZBIORNIK_RUFOWY, OPROZNIAJ_ZBIORNIK);
                     break;
                  }
                  stan1 = 1;
                  SilnikZbiornikaOn( ZBIORNIK_RUFOWY );
                  break;
               case SILNIK_BUSY:
                  stan1 = 2;
                  break;
               case SILNIK_NAPELNIA:
                  SilnikZbiornikaOff( ZBIORNIK_RUFOWY );
                  stan1 = 3;
                  break;
               case SILNIK_OPROZNIA:
                  stan1 = 4;
                  break;
               }
               
            }
            else if ( 0 == inclination )// Zmniejszyc zanurzenie
            {// okret poziomo
             // wypompowac wode z obu balastow
               switch( StanSilnika( ZBIORNIK_DZIOBOWY ) )
               {
               case SILNIK_STOI:
                  if ( SILNIK_OPROZNIA != GetKierunekObrotowSilnikZbiornika( ZBIORNIK_DZIOBOWY ) )
                  {
                     stan = 15;
                     KierunekObrotowSilnikaZbiornika( ZBIORNIK_DZIOBOWY, OPROZNIAJ_ZBIORNIK);
                     break;
                  }
                  SilnikZbiornikaOn( ZBIORNIK_DZIOBOWY );
                  stan = 11;
                  break;
               case SILNIK_BUSY:
                  stan = 12;
                  break;
               case SILNIK_NAPELNIA:
                  SilnikZbiornikaOff( ZBIORNIK_DZIOBOWY );
                  stan = 13;
                  break;
               case SILNIK_OPROZNIA:
                  stan = 14;
                  break;
               }
               
               switch( StanSilnika( ZBIORNIK_RUFOWY ) )
               {
               case SILNIK_STOI:
                  if ( SILNIK_OPROZNIA != GetKierunekObrotowSilnikZbiornika( ZBIORNIK_RUFOWY ) )
                  {
                     stan1 = 15;
                     KierunekObrotowSilnikaZbiornika( ZBIORNIK_RUFOWY, OPROZNIAJ_ZBIORNIK);
                     break;
                  }
                  SilnikZbiornikaOn( ZBIORNIK_RUFOWY );
                  stan1 = 11;
                  break;
               case SILNIK_BUSY:
                  stan1 = 12;
                  break;
               case SILNIK_NAPELNIA:
                  SilnikZbiornikaOff( ZBIORNIK_RUFOWY );
                  stan1 = 13;
                  break;
               case SILNIK_OPROZNIA:
                  stan1 = 14;
                  break;
               }

            }
            else if ( inclination < 0 ) // Zmniejszyc zanurzenie
            {// dzob w dol
            // wypompowac wode z balastu dziobowego, zatrzymac zbiornik rufowy
               switch( StanSilnika( ZBIORNIK_DZIOBOWY ) )
               {
               case SILNIK_STOI:
                  if ( SILNIK_OPROZNIA != GetKierunekObrotowSilnikZbiornika( ZBIORNIK_DZIOBOWY ) )
                  {
                     stan = 25;
                     KierunekObrotowSilnikaZbiornika( ZBIORNIK_DZIOBOWY, OPROZNIAJ_ZBIORNIK);
                     break;
                  }
                  SilnikZbiornikaOn( ZBIORNIK_DZIOBOWY );
                  stan = 21;
                  break;
               case SILNIK_BUSY:
                  stan = 22;
                  break;
               case SILNIK_NAPELNIA:
                  SilnikZbiornikaOff( ZBIORNIK_DZIOBOWY );
                  stan = 23;
                  break;
               case SILNIK_OPROZNIA:
                  stan = 24;
                  break;
               }
               
               switch( StanSilnika( ZBIORNIK_RUFOWY ) )
               {
               case SILNIK_STOI:
                  stan1 = 21;
                  break;
               case SILNIK_BUSY:
                  stan1 = 22;
                  break;
               case SILNIK_NAPELNIA:
                  SilnikZbiornikaOff( ZBIORNIK_RUFOWY );
                  stan1 = 23;
                  break;
               case SILNIK_OPROZNIA:
                  SilnikZbiornikaOff( ZBIORNIK_RUFOWY );
                  stan1 = 24;
                  break;
               }

            }
            break;
         case ZWIEKSZYC_ZANURZENIE:
            if ( inclination > 0 )// Zwiekszyc zanurzenie
            {// dziob w gore
             // napelnic balast dziobowy, zatrzymac rufowy
               switch( StanSilnika( ZBIORNIK_DZIOBOWY ) )
               {
               case SILNIK_STOI:
                  if ( SILNIK_NAPELNIA != GetKierunekObrotowSilnikZbiornika( ZBIORNIK_DZIOBOWY ) )
                  {
                     stan = 35;
                     KierunekObrotowSilnikaZbiornika( ZBIORNIK_DZIOBOWY, NAPELNIAJ_ZBIORNIK);
                     break;
                  }
                  SilnikZbiornikaOn( ZBIORNIK_DZIOBOWY );
                  stan = 31;
                  break;
               case SILNIK_BUSY:
                  stan = 32;               
                  break;
               case SILNIK_NAPELNIA:
                  stan = 33;
                  break;
               case SILNIK_OPROZNIA:
                  SilnikZbiornikaOff( ZBIORNIK_DZIOBOWY );
                  stan = 34;
                  break;
               }
               
               switch( StanSilnika( ZBIORNIK_RUFOWY ) )
               {
               case SILNIK_STOI:
                  stan1 = 31;
                  break;
               case SILNIK_BUSY:
                  stan1 = 32;
                  break;
               case SILNIK_NAPELNIA:
                  SilnikZbiornikaOff( ZBIORNIK_RUFOWY );
                  stan1 = 33;
                  break;
               case SILNIK_OPROZNIA:
                  SilnikZbiornikaOff( ZBIORNIK_RUFOWY );
                  stan1 = 34;
                  break;
               }
               
            }
            else if ( 0 == inclination )// Zwiekszyc zanurzenie
            {// okret poziomo oba zbiorniki maja napelniac
               switch( StanSilnika( ZBIORNIK_DZIOBOWY ) )
               {
               case SILNIK_STOI:
                  if ( SILNIK_NAPELNIA != GetKierunekObrotowSilnikZbiornika( ZBIORNIK_DZIOBOWY ) )
                  {
                     stan = 45;
                     KierunekObrotowSilnikaZbiornika( ZBIORNIK_DZIOBOWY, NAPELNIAJ_ZBIORNIK);
                     break;
                  }
                  SilnikZbiornikaOn( ZBIORNIK_DZIOBOWY );
                  stan = 41;
                  break;
               case SILNIK_BUSY:
                  stan = 42;
                  break;
               case SILNIK_NAPELNIA:
                  stan = 43;
                  break;
               case SILNIK_OPROZNIA:
                  SilnikZbiornikaOff( ZBIORNIK_DZIOBOWY );
                  stan = 44;
                  break;
               }
               
               switch( StanSilnika( ZBIORNIK_RUFOWY ) )
               {
               case SILNIK_STOI:
                  if ( SILNIK_NAPELNIA != GetKierunekObrotowSilnikZbiornika( ZBIORNIK_RUFOWY ) )
                  {
                     stan1 = 45;
                     KierunekObrotowSilnikaZbiornika( ZBIORNIK_RUFOWY, NAPELNIAJ_ZBIORNIK);
                     break;
                  }
                  SilnikZbiornikaOn( ZBIORNIK_RUFOWY );
                  stan1 = 41;
                  break;
               case SILNIK_BUSY:
                  stan1 = 42;
                  break;
               case SILNIK_NAPELNIA:
                  stan1 = 43;
                  break;
               case SILNIK_OPROZNIA:
                  SilnikZbiornikaOff( ZBIORNIK_RUFOWY );
                  stan1 = 44;
                  break;
               }

            }
            else if ( inclination < 0 )// Zwiekszyc zanurzenie
            {// dzob w dol. Zatrzymac dziobowy, napelniac rufowy
               switch( StanSilnika( ZBIORNIK_DZIOBOWY ) )
               {
               case SILNIK_STOI:
                  stan = 51;
                  break;
               case SILNIK_BUSY:
                  stan = 52;
                  break;
               case SILNIK_NAPELNIA:
                  SilnikZbiornikaOff( ZBIORNIK_DZIOBOWY );
                  stan = 53;
                  break;
               case SILNIK_OPROZNIA:
                  stan = 54;
                  break;
               }
               
               switch( StanSilnika( ZBIORNIK_RUFOWY ) )
               {
               case SILNIK_STOI:
                  if ( SILNIK_NAPELNIA != GetKierunekObrotowSilnikZbiornika( ZBIORNIK_RUFOWY ) )
                  {
                     stan1 = 55;
                     KierunekObrotowSilnikaZbiornika( ZBIORNIK_RUFOWY, NAPELNIAJ_ZBIORNIK);
                     break;
                  }
                  SilnikZbiornikaOn( ZBIORNIK_RUFOWY );
                  stan1 = 51;
                  break;
               case SILNIK_BUSY:
                  stan1 = 52;
                  break;
               case SILNIK_NAPELNIA:
                  stan1 = 53;
                  break;
               case SILNIK_OPROZNIA:
                  SilnikZbiornikaOff( ZBIORNIK_RUFOWY );
                  stan1 = 54;
                  break;
               }

            }
            break;
         case ZANURZENIE_OK:
            if ( inclination > 0 )// zanurzenie ok
            {// dziob w gore
             // napelnic balast dziobowy, oproznic balast rufowy
               switch( StanSilnika( ZBIORNIK_DZIOBOWY ) )
               {
               case SILNIK_STOI:
                  if ( SILNIK_NAPELNIA != GetKierunekObrotowSilnikZbiornika( ZBIORNIK_DZIOBOWY ) )
                  {
                     stan = 65;
                     KierunekObrotowSilnikaZbiornika( ZBIORNIK_DZIOBOWY, NAPELNIAJ_ZBIORNIK);
                     break;
                  }
                  SilnikZbiornikaOn( ZBIORNIK_DZIOBOWY );
                  stan = 61;
                  break;
               case SILNIK_BUSY:
                  stan = 62;
                  break;
               case SILNIK_NAPELNIA:
                  stan = 63;
                  break;
               case SILNIK_OPROZNIA:
                  SilnikZbiornikaOff( ZBIORNIK_DZIOBOWY );
                  stan = 64;
                  break;
               }
               
               switch( StanSilnika( ZBIORNIK_RUFOWY ) )
               {
               case SILNIK_STOI:
                  if ( SILNIK_OPROZNIA != GetKierunekObrotowSilnikZbiornika( ZBIORNIK_RUFOWY ) )
                  {
                     stan1 = 65;
                     KierunekObrotowSilnikaZbiornika( ZBIORNIK_RUFOWY, OPROZNIAJ_ZBIORNIK );
                     break;
                  }
                  SilnikZbiornikaOn( ZBIORNIK_RUFOWY );
                  stan1 = 61;
                  break;
               case SILNIK_BUSY:
                  stan1 = 62;
                  break;
               case SILNIK_NAPELNIA:
                  SilnikZbiornikaOff( ZBIORNIK_RUFOWY );
                  stan1 = 63;
                  break;
               case SILNIK_OPROZNIA:
                  stan1 = 64;
                  break;
               }
            }
            else if ( 0 == inclination )// zanurzenie ok
            {// okret poziomo
             // oba silniki stop
               switch( StanSilnika( ZBIORNIK_DZIOBOWY ) )
               {
               case SILNIK_STOI:
                  stan = 71;
                  break;
               case SILNIK_BUSY:
                  stan = 72;
                  break;
               case SILNIK_NAPELNIA:
                  SilnikZbiornikaOff( ZBIORNIK_DZIOBOWY );
                  stan = 73;
                  break;
               case SILNIK_OPROZNIA:
                  SilnikZbiornikaOff( ZBIORNIK_DZIOBOWY );
                  stan = 74;
                  break;
               }
               switch( StanSilnika( ZBIORNIK_RUFOWY ) )
               {
               case SILNIK_STOI:
                  stan1 = 71;
                  break;
               case SILNIK_BUSY:
                  stan1 = 72;
                  break;
               case SILNIK_NAPELNIA:
                  SilnikZbiornikaOff( ZBIORNIK_RUFOWY );
                  stan1 = 73;
                  break;
               case SILNIK_OPROZNIA:
                  SilnikZbiornikaOff( ZBIORNIK_RUFOWY );
                  stan1 = 74;
                  break;
               }
            }
            else if ( inclination < 0 )// Zanurzenie ok
            {// dzob w dol
             // oproznic dziobowy, napelnic rufowy
               switch( StanSilnika( ZBIORNIK_DZIOBOWY ) )
               {
               case SILNIK_STOI:
                  if ( SILNIK_OPROZNIA != GetKierunekObrotowSilnikZbiornika( ZBIORNIK_DZIOBOWY ) )
                  {
                     stan = 85;
                     KierunekObrotowSilnikaZbiornika( ZBIORNIK_DZIOBOWY, OPROZNIAJ_ZBIORNIK);
                     break;
                  }
                  SilnikZbiornikaOn( ZBIORNIK_DZIOBOWY );
                  stan = 81;
                  break;
               case SILNIK_BUSY:
                  stan = 82;
                  break;
               case SILNIK_NAPELNIA:
                  SilnikZbiornikaOff( ZBIORNIK_DZIOBOWY );
                  stan = 83;
                  break;
               case SILNIK_OPROZNIA:
                  stan = 84;
                  break;
               }
               
               switch( StanSilnika( ZBIORNIK_RUFOWY ) )
               {
               case SILNIK_STOI:
                  if ( SILNIK_NAPELNIA != GetKierunekObrotowSilnikZbiornika( ZBIORNIK_RUFOWY ) )
                  {
                     stan1 = 85;
                     KierunekObrotowSilnikaZbiornika( ZBIORNIK_RUFOWY, NAPELNIAJ_ZBIORNIK);
                     break;
                  }
                  SilnikZbiornikaOn( ZBIORNIK_RUFOWY );
                  stan1 = 81;
                  break;
               case SILNIK_BUSY:
                  stan1 = 82;
                  break;
               case SILNIK_NAPELNIA:
                  stan1 = 83;
                  break;
               case SILNIK_OPROZNIA:
                  SilnikZbiornikaOff( ZBIORNIK_RUFOWY );
                  stan1 = 84;
                  break;
               }
            }
            break;
         case ZANURZENIE_INVALID:
            break;
         default:
            stan = 0;
            break;
      }// switch( StanZanurzenia( izanurzenie ) )
      if ( (stan != prevStan ) || ( stan1 != prevStan1 ) )
      {
         prevStan = stan;
         WyslijZnak( stan );
         prevStan1 = stan1;
         WyslijZnak( stan1 );
         WyslijZnak( inclination );
         if ( KrancowkaSilnikaZbiornika( ZBIORNIK_DZIOBOWY ) ) WyslijZnak( 1 );
         else WyslijZnak( 0 );
         if ( KrancowkaSilnikaZbiornika( ZBIORNIK_RUFOWY ) ) WyslijZnak( 1 );
         else WyslijZnak( 0 );
         
      }
   
   }// while( ( GetIntSecondMain() - czasStart ) < 30 )
   
   while( IsSilnikZbiornikaBusy( ZBIORNIK_RUFOWY ) );
   while( IsSilnikZbiornikaBusy( ZBIORNIK_DZIOBOWY ) );

   SilnikZbiornikaOff( ZBIORNIK_RUFOWY );
   SilnikZbiornikaOff( ZBIORNIK_DZIOBOWY );

   while( IsSilnikZbiornikaBusy( ZBIORNIK_RUFOWY ) );
   while( IsSilnikZbiornikaBusy( ZBIORNIK_DZIOBOWY ) );
   
   KierunekObrotowSilnikaZbiornika( ZBIORNIK_RUFOWY, OPROZNIAJ_ZBIORNIK);
   KierunekObrotowSilnikaZbiornika( ZBIORNIK_DZIOBOWY, OPROZNIAJ_ZBIORNIK);
   while( IsSilnikZbiornikaBusy( ZBIORNIK_RUFOWY ) );
   while( IsSilnikZbiornikaBusy( ZBIORNIK_DZIOBOWY ) );
   
   SilnikZbiornikaOn( ZBIORNIK_RUFOWY );
   SilnikZbiornikaOn( ZBIORNIK_DZIOBOWY );
   
   while( ShipUnderTheWater() );
   
   NapowietrzanieOpen();
   
   while( (!KrancowkaSilnikaZbiornika( ZBIORNIK_DZIOBOWY ) ) | ( !KrancowkaSilnikaZbiornika( ZBIORNIK_RUFOWY ) ) )
   {
   }
   
   SilnikZbiornikaOff( ZBIORNIK_DZIOBOWY );
   SilnikZbiornikaOff( ZBIORNIK_RUFOWY );
   

   for(;;);

}



Z ukłonami
Andrzej Korycki

Re: SSN-688

: 29 maja 2011, 15:40
autor: Andrzej1
Witam

Oto efekt ostatnich prac odlewniczo ślusarskich :
P5290001a.JPG

Wiercenie puca ołowianego najlepiej wykonywać z pomocą denaturatu małymi obrotami.
Denaturat powoduje, że wiór nie trzyma się wiertła (no słabiej się trzyma).

Jeżeli komuś się bardzo śpieszy przy odlewaniu MAŁYCH detali z ołowiu w formie gipsowej,
może zastosować taką technologię :
Gips świeżo po stwardnieniu (mnóstwo w nim wody).
Do formy wkładamy złom ołowiany i grzejemy palnikiem. Gdy ołów zaczyna się topić, to para wodna
wyrzuca małe kropelki ołowiu na zewnątrz. Zostawiamy to na kilkanaście minut i powtarzamy
grzanie. Aż do momentu, w którym nie ma już bąbelków pary w ołowiu. U mnie cztery cykle.
Wady :
1. Forma nadaje się do jednorazowego eksperymentu. Palnik ją zniszczy.
2. Na ołowiu pozostaje dużo tlenków, które nie występują przy odlewaniu klasycznym.
3. Możemy się nawdychać par ołowiu, które nie należą do najzdrowszych.

Z ukłonami
Andrzej Korycki

Re: SSN-688

: 06 cze 2011, 10:54
autor: Andrzej1
Witam

LAla nie znosi niechlujstwa i niedopatrzeń.
Program do zanurzania i balansowania na zadanej głębokości się napisał. Za żadne piniędze, jednak,
działać nie chciał. Okazało, się, że pomiary głębokości są warte funta i to kłaków.
Przy okręcie stojącym na stole wszystko działało poprawnie.
W wodzie nic z tego. Wiele prób, za każdą trzeba osiem kilo przenieść z piwnicy do komputera i z powrotem do piwnicy. Chyba postawię tam lepszego laptopa. Wreszcie wykryłem
(najprawdopodobniej) przyczynę. Pracujące silniki tłoków zakłócają pomiary głębokości i przechyłu.
Inklinometr to w rzeczywistości akcelerometr. Być może drgania przy pracy silników powodują
błędne pomiary. Ale na razie postanowiłem wykluczyć przyczyny elektryczne. Dolutowałem
kondensatory tak, jak stoi na instrukcji silników. Problem się zmniejszył, ale nie zanikł. Gura przypomniała, że kiedyś w starych kolejkach elektrycznych (być może w nowych też) były
przecudnej urody dławiki przeciwzakłóceniowe.
Ponieważ pochodzę z biednej inteligenckiej rodziny to kolejkę miałem tylko jedną (jedną
lokomotywę) to i dławik mam jeden a potrzebuję czterech. Taki dławik wygląda tak :
P6060005.JPG

Jest to cewka nawinięta na cieniutkim rdzeniu ferytowym.
Może ktoś (pochodzący z bogatszej rodziny) ma w swoich śmieciach takie cudo(a). Chętnie
odkupię, zamienię, dostanę, ukradnę (w każdym razie wejdę w posiadanie).

Jak to nie pomoże, to na czas pomiaru trzeba będzie wyłączać silniki.

Z ukłonami
Andrzej Korycki

Re: SSN-688

: 06 cze 2011, 13:35
autor: Jarek
Andrzeju, takie i inne dławiki można dostać w każdym sklepie elektronicznym. Odwiedź takowy a na pewno coś znajdziesz dla siebie i Lali. Jeśli nie będzie odpowiednich dławików to jakieś rdzenie ferrytowe drut odpowiedniej jakości i sam nawiniesz. Kiedyś takowe zakupiłem i prezentuje poniżej. Sprawdziłem również czy można wyjąć rdzeń. Wychodzi bardzo łatwo co widać na fotce.

Obrazek

Re: SSN-688

: 06 cze 2011, 13:40
autor: Andrzej1
Witam

Jakby takie były, to nie zawracałbym nikomu głowy na forum. Ja przedtem sprawdziłem
w kilku sklepach internetowych i na aledrogo.
Chodzi o średnicę rdzenia ferrytowego i nawiniętego nań przewodu. Tym dławikiem ma popłynąć
prąd zasilający silniki zbiorników, czyli 2A w porywach do 6A (prąd zwarciowy) bez nadmiernych
spadków napięć.

Z ukłonami
Andrzej Korycki