# Probleme Libnodave VB



## K-SYSTEM-D (28 Dezember 2009)

Hallo zusammen,

zuerst einmal  ich bin totaler Anfänger was VB6 betrifft , bin eigentlich Elektriker und SPS-Techniker.

ich habe vor einer zeit mal das Programm SPSet irgendwo runtergeladen, 
nun will ich für meinen Vater ne kleine Visu für seine Heizungssteuerung 
zusammenbasteln.

zum ersten leider funktioniert hier das DB einlesen der Messwerte nicht.

zum zweiten Stürzt beim Verbindungsabbruch das Programm ab.

Kann sich jemand von euch Profis das mal anschauen und evtl. wenns
keine umstände macht umschreiben?

Danke im voraus und ich wünsch euch einen Guten Rutsch ins neue Jahr

Daniel


----------



## ronnie.b (28 Dezember 2009)

Hallo,
kannst du genaueres dazu sagen:
z.B. Mit welchem Fehler stürzt das programm ab
Hast du schonmal einen Breakpoint in die entsprechenden Prozeduren gesetzt?
Sind die DB´s in der Steuerung auch vorhanden bzw. entsprechend lang???

Gruß
Ronnie


----------



## K-SYSTEM-D (28 Dezember 2009)

Hier der Fehler der dann kommt bei verbindungsabbruch

AppName: spsetvb6.exe     AppVer: 1.0.0.8     ModName: libnodave.dll
ModVer: 0.0.0.0     Offset: 0000973f

Mit dem DB auslesen hat sich geklärt. Funktioniert jetzt.

Ich bin totaler neuling was VB betrifft! wo muss ich den Breakpoint einsetzen und wo?


----------



## K-SYSTEM-D (28 Dezember 2009)

ach ja und erstmal danke das du mir hilfst


----------



## ronnie.b (29 Dezember 2009)

Hallo,
ich hab das hier mal in der Simulation getestet und vermute das der Fehler beim Lesen aufgetreten ist.
Hab im Modul12 =>GetVal eine kleine Änderung eingefügt. Damit sollte es meines Erachtens funktionieren.

```
'### Hier muss eine Abfrage rein ob das Lesen überhaupt erfolgreich war ###
  If res <> daveResOK Then
    MsgBox "Fehler beim Lesen!" & vbCrLf & "FehlerNr #" & res, vbOKOnly
    GetVal = "NULL"
    Exit Function
  End If
```
Wie gesagt, nur in der Simulation probiert. Teste das einfach mal und meld dich dann nochmal.

Ronnie


----------



## K-SYSTEM-D (29 Dezember 2009)

Super, Danke.

:TOOL:

Jetzt is da fehler weg.

wünsch dir und allen anderen einen Guten Rusch ins Jahr 2010.


----------



## ronnie.b (29 Dezember 2009)

Kein Problem. Falls du noch Fragen hast einfach posten.

Dir ebenfalls einen guten Rutsch


----------



## K-SYSTEM-D (4 Januar 2010)

Hallo alle Zusammen,

ich hoffe ihr könnt mir wieder mal holen!!
nun bin ich wieder mal an meine Grenzen gekommen in den oben genannten Programm kann ich zwar einzelne bits im Merkerbereich setzen und rücksetzen aber leider keine bits in DB´s! könnt ihr mir sagen wo der fehler liegt?

bastel jetzt schon 2 tage rum und bekomms nicht gebacken.

ich hoffe ihr könnt mir wieder mal helfen und Danke im Voraus

Daniel


----------



## marlob (4 Januar 2010)

Habe mir das Programm nicht beguckt, aber setzen und rücksetzen von Bits in 
DBs geht so


```
*
S DB1.DBX10.0
R DB1.DBX10.0
```
Die entsprechenden Vorbedingungen mußt du natürlich noch programmieren


----------



## K-SYSTEM-D (4 Januar 2010)

ähm war bezogen auf das VB Programm mit SetBit und nicht auf die SPS


----------



## marlob (4 Januar 2010)

K-SYSTEM-D schrieb:


> ähm war bezogen auf das VB Programm mit SetBit und nicht auf die SPS


Sorry, habe mir weder das Programm beguckt noch in welchem Unterforum 
es stand.
Werde jetzt erst mal ein Bier trinken, damit mein Hirn wieder funktioniert


----------



## marlob (4 Januar 2010)

Es gibt in libnodave eine Funktion daveWriteBits. Probier die mal


----------



## marlob (4 Januar 2010)

Hier ein Thread dazu
http://www.sps-forum.de/showthread.php?t=28188&highlight=libnodave+bit+setzen


----------



## Question_mark (4 Januar 2010)

*Dat ging abba fix*

Hallo,

21:48 Uhr --> 


			
				Marlob schrieb:
			
		

> Werde jetzt erst mal ein Bier trinken, damit mein Hirn wieder funktioniert



21:51 Uhr -->


			
				Marlob schrieb:
			
		

> Es gibt in libnodave eine Funktion daveWriteBits.



Donnerwetter Markus, das Bier hat aber schnell geholfen   

Gruß

Question_mark


----------



## marlob (4 Januar 2010)

Question_mark schrieb:


> ...
> 
> Donnerwetter Markus, das Bier hat aber schnell geholfen
> 
> ...


Das geht bei mir direkt ins Blut und entfaltet seine Wirkung


----------



## K-SYSTEM-D (4 Januar 2010)

ja hab zwar mit WriteBits probiert, aber ich schau mir das nochmal an!

Danke für den Thread denn hab ich nicht gefunden!


----------



## der Micha (12 Januar 2010)

versuche es mal mit :

  ; Set a bit in PLC to 1. 
daveSetBit(dc.l, area.l, areaNumber.l, start.l, byteAddress.l, bitAddress.l) 
und
  ; Set a bit in PLC to 0. 
daveClrBit(dc.l, area.l, areaNumber.l, start.l, byteAddress.l, bitAddress.l)

so ist es bei mir deklariert .

der Micha


----------



## der Micha (12 Januar 2010)

oder so in VB6 , hab mal in meiner Kramecke geschaut :


```

```
' Set a bit in PLC to 1.
'
Private Declare Function daveSetBit Lib "libnodave.dll" (ByVal dc As Long, ByVal area As Long, ByVal areaNumber As Long, ByVal byteAddress As Long, ByVal bitAddress As Long) As Long
' Set a bit in PLC to 0.
'

Private Declare Function daveClrBit Lib "libnodave.dll" (ByVal dc As Long, ByVal area As Long, ByVal areaNumber As Long, ByVal byteAddress As Long, ByVal bitAddress As Long) As Long

```

```
 
das wäre denn zb bei 0 setzen 

 res2 = daveClrBit(myDC, daveFlags, 0, 5, 1)


wobei du dann daveFlags  ersetzen must für den DB aufruf, wenn ich mich net irre .


----------

