- fchao-Sinus-Wechselrichter AliExpress         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 21

Thema: CAN Pegel automatisch messen (mit PC)

  1. #11
    Anzeige

    Powerstation Test
    Zitat Zitat von askazo
    Zitat Zitat von eugengraf
    Man muss nicht unbedindgt ein binäres Protokoll benutzen. Du kannst auch die Zahlen nacheinander leerzeichengetrennt als ASCII ausgeben (mit sprintf).
    Naja, das halte ich aber für sehr uneffektiv. Und ein binäres Protokoll ist auch nicht komplizierter.

    askazo
    Na ja, es kommt auf die Datenmenge an.

    Kleine Datenmenge, kleine Frequenz - ASCII
    Grosse Datenmenge - binäres Protokoll

    ASCII Daten kann man mit jedem Terminal-Programm mitanschauen.
    Binäres muss man erstmal parsen, da siehst du mit Augen nicht viel.

    Also ich benutze grundsätzlich nur binäre Protokolle, von ASCII halte ich nicht viel. Aber für so kleine Aufgaben lohnt es sich nicht, das Protokoll auszudenken, Checksumme berechnen, IDs definieren u.s.w.

    Eugen

  2. #12
    Benutzer Stammmitglied
    Registriert seit
    02.08.2005
    Beiträge
    78
    im netz habe ich folgende schaltung zum einlesen von daten ueber die RS232 schnittstelle gefunden:

    http://www.build-a-bot.com/software/tlc548test.zip

    die datei mit der schaltungszeichnung heisst "tlc548_auslesen.jpg"

    es ist auch ein Programm in VisualBasic dabei.

    Da ich von VB aber keinen blassen schimmer habe wuerde ich lieber in C++ (mit Bloodshed Dev-C++ Version 4) ein Programm schreiben.
    in C++ habe ich grundkenntnisse.

    Das Programm fuer meine Anwendung stelle ich mir folgendermassen vor:
    Ueber einen kurzen Zeitbereich werden die Spannungswerte eingelesen und dann von diesen Werten das Maximum und Minimun ausgegeben.
    Die eingelesenen Wert interessieren mich also nicht unbedingt, d.h. diese muessen nicht ausgegeben werden, nur dessen Max. und Min.!

    kann mir jemand dabei helfen?
    dies uebersteigt leider meine grundkenntnisse in C++!

    (das ganze fuer Win2000)

    vielen Dank!


    noch eine frage: brauch ich fuer die kommunikation zwischen compiler und RS232 Schnittstelle immer ein Freeware-Tool das die Ports freischaltet und eine Kommunikation ermoeglicht?
    Wenn ja welches Tool wird benoetigt und gibt es nicht von Microsoft einen Compiler bei dem man so ein Tool nicht mehr braucht?

  3. #13
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    31.01.2004
    Ort
    36399
    Alter
    50
    Beiträge
    1.562
    Wenn es sich um eine Echte Serial übertragung handelt brauchst nix um die daten einzulesen. das mit dem Port frei schalten braucht man nur wenn man unter Windows auf die Ports direkt zu greifen will.

    In dem VB Beispiel hier werden die Steuerleitungen verwendet.

    http://www.wer-weiss-was.de/theme158...le1968408.html

    Dort ist das setzen von RTS zu lesen.
    P: Meine Tochter (06.11.07) und https://www.carnine.de
    M: Träumen hat nix mit Dummheit zu tun es ist die Möglichkeit neues zu erdenken

  4. #14
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.555
    Zitat Zitat von danionbike
    ja da hast du recht!

    USB wuerde ich vorziehen da mein Laptop keine RS232 Schnittstelle hat.

    Gibt es zu diesem Thema Links oder aehnlich?
    Habe ueber die Suchfunktion leider nichts passendes gefunden.

    das ganze soll unter XP und Win2000 funktionieren.
    Moin moin,

    In der letzten C`t Seite 184 ist ein Programm vorgestellt und auch
    auf der Heft DVD das Daten von der rs 232 übernimmt und z.B.
    nach Exel inportiert. Das scheint ohne größere Programmier
    Kenntnisse zu klappen, das Programm benutzt dafür den Tastaturtreiber.

    Gruß Richard

  5. #15
    Benutzer Stammmitglied
    Registriert seit
    02.08.2005
    Beiträge
    78
    Zitat Zitat von NumberFive
    Wenn es sich um eine Echte Serial übertragung handelt brauchst nix um die daten einzulesen. das mit dem Port frei schalten braucht man nur wenn man unter Windows auf die Ports direkt zu greifen will.

    In dem VB Beispiel hier werden die Steuerleitungen verwendet.

    http://www.wer-weiss-was.de/theme158...le1968408.html

    Dort ist das setzen von RTS zu lesen.

    versteh ich net, erstens was meinst du mit echten Signalen, zweitens wieso brauch ich nichts um Daten einzulesen?
    Der von dir geposte Link hilft mir aber auch nicht weiter.
    PS: ich bin kein Programmier-Experte!

    @ Richard:
    kannst du das Programm irgendwo hochladen?
    da wo ich bin kann man leider keine C't kaufen ...


    wie sieht es mit dem von mir geposten Schaltplan aus?
    kann man dazu ein C++ Programm erstellen?
    und braucht man nun irgendwelche Tools die den Zugriff auf die Schnittstellen freigeben - beim Einlesen von Daten?

    kann mir bitte jemand helfen, bin verzweifelt
    DANKE

  6. #16
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    31.01.2004
    Ort
    36399
    Alter
    50
    Beiträge
    1.562
    Ok noch mal langsam:

    Der Schaltplan ist keine normal RS232 über tragung sondern was getrickste wo die Steuerleitung als daten leitungen misbraucht werden. das ist aber nicht schlimm.

    Code:
    Private Sub Form_Load()
        On Error Resume Next
        MSComm1.Settings = "9600,N,8,1"
        MSComm1.CommPort = 1
        MSComm1.PortOpen = True
        MSComm1.DTREnable = False
        MSComm1.RTSEnable = True
    
    End Sub
    Öffnet der Comport 1 und stellt die Übertragungsrate auf 9600 Baud bei deien Schlatung aber föllig egal

    Code:
    DCB          CommDCB;
      COMMTIMEOUTS timeout;
      long         ret;
      char         s[100];
    
      sprintf(s, "COM%d", ComPort);
      hdCOMM = CreateFile(s, 
                          (GENERIC_READ | GENERIC_WRITE), 0, NULL, 
                          OPEN_EXISTING, 
                          FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED | FILE_FLAG_NO_BUFFERING, 
                          NULL);
      
      if ( hdCOMM != INVALID_HANDLE_VALUE )
        {
          ret = SetupComm(hdCOMM, 1024, 1024);
        
          sprintf(s, "COM%d: baud=38400 parity=N data=8 stop=1", ComPort);
          memset(&CommDCB, 0, sizeof(DCB));
          CommDCB.DCBlength         =  sizeof(DCB);
    
          ret = BuildCommDCB(s, &CommDCB);
          
          CommDCB.DCBlength         =  sizeof(DCB);
          CommDCB.fBinary           =   1;  // Binary Mode
          CommDCB.fParity           =   0;  // No Parity Check
          CommDCB.fOutxCtsFlow      =   0;  // CTS ignored
          CommDCB.fOutxDsrFlow      =   0;  // DSR ignored
    //      CommDCB.fDtrControl       = ; // DTR ignored
          CommDCB.fDsrSensitivity   =   0;  // 
          CommDCB.fTXContinueOnXoff =   1;
          CommDCB.fOutX             =   1;
          CommDCB.fInX              =   1;
          CommDCB.fAbortOnError     =   0;  // Ignore Errors
          CommDCB.XoffLim           = 100;
          CommDCB.XonLim            = 500;
          CommDCB.XonChar           =  17;
          CommDCB.XoffChar          =  19;
          ret = SetCommState(hdCOMM, &CommDCB);
      
          timeout.ReadIntervalTimeout         = MAXDWORD;   // Read returns if no chars available
          timeout.ReadTotalTimeoutMultiplier  =  0;         //   "
          timeout.ReadTotalTimeoutConstant    =  0;         //   "
          timeout.WriteTotalTimeoutMultiplier =  3;
          timeout.WriteTotalTimeoutConstant   = 20;
          ret = SetCommTimeouts(hdCOMM, &timeout);
    Das Selbe in C++

    Code:
    Private Function TLC548_GetData() As Byte
    Dim i As Integer, temp As Byte
    
    temp = 0
    MSComm1.RTSEnable = False   'Setze Chip Select low
    For i = 7 To 0 Step -1
    
    MSComm1.DTREnable = True    'Steigende Taktflanke
    
        If MSComm1.CTSHolding = True Then       'Datenbit einlesen
            temp = temp + 2 ^ i
        End If
    
    MSComm1.DTREnable = False   'fallende Taktflanke
    
    Next
    
    MSComm1.RTSEnable = False 'Setze Chip Select wieder hi
    
    TLC548_GetData = temp
    End Function
    damit wird der Chip gelesen
    RTSEnable = false / Steueer leitung aus low stellen damit der weiß das ich jetzt daten holen will.

    DTREnable = true Takt auf High dann kannst du das erste bit lesen
    mit MSComm1.CTSHolding wenn das wahr ist dann sende der chip eine 1
    wenn false dann eine 0 dann takt wieder aus. und das ganze von vorne

    bis wir 8 bit zusammen haben dann hast du den wert den der AD gemessen hast. Die schaltung ist meines erachtes so da man damit 0 bis 5V messen kann. Aber da müssen dir die Hardwar jung noch mal helfen / drüber gucken. Also wenn meine Annahme stimmt und du an den ein gang 5 V legst sollte der Chip 8 mal eine 1 bringen. also 255 als zahl.
    8 bit bei 5v macht eine Auflösung von 0,01 Volt.

    Gruß
    P: Meine Tochter (06.11.07) und https://www.carnine.de
    M: Träumen hat nix mit Dummheit zu tun es ist die Möglichkeit neues zu erdenken

  7. #17
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.555
    [quote="danionbike



    @ Richard:
    kannst du das Programm irgendwo hochladen?
    da wo ich bin kann man leider keine C't kaufen ...


    [/quote]

    Google ist Dein Freund!

    www.heise.de/software/download/captser/

    Richard

  8. #18
    Benutzer Stammmitglied
    Registriert seit
    02.08.2005
    Beiträge
    78
    hat jemand denn schon mal ein solches Programm geschrieben, welches Daten an der seriellen Schnittstelle einliest?
    meinetwegen kann es auch an der parallelen Schnittstelle sein.

    bei der Programmierung mit Schnittstellen habe ich leider keine Ahnung.

    gibt es hier jemanden der so ein Programm schon hat bzw. so ein aehnliches oder jemanden der mir so ein Programm (fuer LPT oder RS232) schreiben kann???



    bitte!

  9. #19
    Benutzer Stammmitglied
    Registriert seit
    02.08.2005
    Beiträge
    78
    hallo, kann mir niemand helfen?


    habe mir in der zwischenzeit noch eine reine hardware loesung ueberlegt:

    bestehend aus zwei fenster-komparatoren und logik-bausteinen.

    im anhang ist eine einfach skizze fuer eine solche schaltung.
    die dort gezeigte schaltung ist z.b. fuer das CAN-H signal.
    mit der oberen fenster-komparator-schaltung wird der maximum-bereich (z.b. von 3,3 bis 3,7 V) abgedeckt und mit der unteren fenster-komparator-schaltung der minimum-bereich (z.b. von 2,3 bis 2,7 V).
    liegt das max. und min. der CAN-bus-spannung in diesem bereich, liegt am RS-flip-flop ein high-signal an und wird dann auch dort gespeichert und der ausgang auf high gesetzt, wodurch die LED leuchtet.

    was ist eure meinung dazu.


    infos zum fenster-komparator:
    http://www.elektronik-kompendium.de/...lt/0411231.htm
    infos zum rs-flip flop:
    http://www.elektronik-kompendium.de/...ig/0209302.htm
    Angehängte Dateien Angehängte Dateien

  10. #20
    Benutzer Stammmitglied
    Registriert seit
    02.08.2005
    Beiträge
    78
    hallo, kann mir jemand ein feedback zu meiner geposteten schaltung geben???

    Danke!

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen