Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 3 von 3

Thema: LibNodave und Multiple Read (mit nicht existierenden Elementen)

  1. #1
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.745
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Der multiple Read bei LibNoDave von der PLC funktioniert bei mir. Er funktioniert auch wenn ich Elemente lese die gar nicht existieren, dann bekomme Ich bei UseResult 10 als Wert! Nur wenn ich als erstes einen Wert lese den es nicht gibt, dann klappts nicht!
    Ist das ein Bug oder mach Ich was falsch.

    Bin grad schon am drann wursteln, kriegs bestimmt auch irgendwie hin, aber vielleicht hat ja jemand in der Richtung schon mal was gemacht...

    Mfg.
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    Zitieren Zitieren LibNodave und Multiple Read (mit nicht existierenden Elementen)  

  2. #2
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.745
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Habs gelöst bekommen:

    Habe folgende 2 funktionen definiert:

    Code:
    int DECL2 _daveTestResultDataMulti(PDU * p) {	
    	int res; /*=daveResCannotEvaluatePDU;*/
    	if ((p->data[0]==255)&&(p->dlen>4))
    	{
    		res=daveResOK;
    		p->udata=p->data+4;
    		p->udlen=p->data[2]*0x100+p->data[3];
    		if (p->data[1]==4) {
    			p->udlen>>=3;	/* len is in bits, adjust */
    		} else if (p->data[1]==9) {
    			/* len is already in bytes, ok */
    		} else if (p->data[1]==3) {
    			/* len is in bits, but there is a byte per result bit, ok */
    		} else {
    			if (daveDebug & daveDebugPDU)
    				LOG2("fixme: what to do with data type %d?\n",p->data[1]);
    			res = daveResUnknownDataUnitSize;
    			//res = 0;
    		}	    
    	}
    	else if (p->data[0]==10)
    	{
    		//This Section returns ok, even if nothing was read,
    		//because with the multiple read we get the error in (daveUseResult)
    		res = daveResOK;		
    	}
    	else {
    		res=p->data[0];
    	}
    	return res;    
    }
    
    int DECL2 _daveTestReadResultMulti(PDU * p) {
    	if (daveDebug & daveDebugPDU)
    		LOG2("dave test result: p-param[0]: %d\n",p->param[0]);
    	if (p->param[0]!=daveFuncRead) return daveResUnexpectedFunc;
    	return _daveTestResultDataMulti(p);
    }
    und dann in daveexecreadrequest die _daveTestReadResultMulti aufgerufen und nicht die _daveTestReadResult.

    Es geht auch wenn man

    Code:
    else if (p->data[0]==10)
    	{
    		//This Section returns ok, even if nothing was read,
    		//because with the multiple read we get the error in (daveUseResult)
    		res = daveResOK;		
    	}
    in die normale _daveTestResultData einfügt, aber dann liefert ein einfacher read request auf eine nicht existierende plc variable nicht mehr den richtigen fehler!
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

  3. #3
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.745
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hab die Änderung in meine geupdatete LibNoDave eingebaut.

    Download unter:
    http://jochensserver.dyndns.org/wordpress/?page_id=9
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    Zitieren Zitieren Eingebaut...  

Ähnliche Themen

  1. (Libnodave) Read Request Frage an die Experten
    Von ronnie.b im Forum Hochsprachen - OPC
    Antworten: 8
    Letzter Beitrag: 28.07.2011, 08:11
  2. Antworten: 13
    Letzter Beitrag: 18.07.2011, 07:01
  3. VB libnodave Read multiple items
    Von Rmorasch im Forum Hochsprachen - OPC
    Antworten: 9
    Letzter Beitrag: 19.10.2009, 10:05
  4. 200ms delay beim CP 243-1 read mit libnodave
    Von Wollli im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 02.06.2009, 14:25
  5. Antworten: 6
    Letzter Beitrag: 16.07.2008, 14:33

Lesezeichen

Berechtigungen

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