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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 19 von 19

Thema: OPC XML-DA und Visual Basic

  1. #11
    Registriert seit
    27.10.2009
    Beiträge
    317
    Danke
    0
    Erhielt 64 Danke für 54 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    naja, da hast du auch mit einem schwierigen Beispiel angefangen.

    1) prüfe mal ob der XML-DA Server überhaupt geht, gib mal die URL in einen Browser ein "http://localhost/OPC.Simatic.NET/sopcweb.asmx" da sollte dann eine Webseite erscheinen auf der "SimaticNET OPC Server" steht. Falls nicht ist etwas falsch installiert, der IIS muss installiert sein bevor die SimaticNET CD installiert wird.

    2) wenn die Webseite da ist, kann es nur noch an den "Itemnamen" liegen. Das Teil heißt "PCWinAC.WinLC RTX.Data_Act_Val.Act_Mixer" das bedeutet "<NameVerbindung>.<NameCPU>.<NameDB>.<NameWert>" In deinem Screeshot sehe ich dass bei dir die S7Verbindung aber ganz anders heißt und dafür ist der Name der CPU so wie die Verbindung heißen sollte. "WinLC_OPC_Conn.PCWinAC.Data_Act_Val.Act_Mixer"

    3) ich habe gesehen dass du den ScoutV10 verwendest und dich über OPC UA (nicht XML-DA) mit dem Server verbindest, daher bin ich nicht sicher ob XML-DA überhaupt korrekt installiert ist. Das Beispiel ist für XML-DA (für die Symbole macht das zwar keinen Unterschied, ich wollte es aber dennoch mal erwähnt haben)

    Es gibt viele weitere Beispiele im Installationsverzeichnis \programfiles\siemens\simatic.net\... für .NET, C++, und VB6 (gab es auf den älteren CDs).

  2. #12
    Avatar von magmaa
    magmaa ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    06.04.2007
    Ort
    S/A
    Beiträge
    323
    Danke
    18
    Erhielt 21 Danke für 18 Beiträge

    Standard

    1) prüfe mal ob der XML-DA Server überhaupt geht, gib mal die URL in einen Browser ein "http://localhost/OPC.Simatic.NET/sopcweb.asmx" da sollte dann eine Webseite erscheinen auf der "SimaticNET OPC Server" steht. Falls nicht ist etwas falsch installiert, der IIS muss installiert sein bevor die SimaticNET CD installiert wird.
    Also die Seite geht Bild 1.

    2) wenn die Webseite da ist, kann es nur noch an den "Itemnamen" liegen. Das Teil heißt "PCWinAC.WinLC RTX.Data_Act_Val.Act_Mixer" das bedeutet "<NameVerbindung>.<NameCPU>.<NameDB>.<NameWert>" In deinem Screeshot sehe ich dass bei dir die S7Verbindung aber ganz anders heißt und dafür ist der Name der CPU so wie die Verbindung heißen sollte. "WinLC_OPC_Conn.PCWinAC.Data_Act_Val.Act_Mixer"
    Das "PCWinAC.WinLC RTX.Data_Act_Val.Act_Mixer" habe ich aus dem Client-Code (Bild 3) und bei SYM: im OPC Scout steht das auch (Bild 2).
    Wenn Itemname <NameVerbindung>.<NameCPU>.<NameDB>.<NameWert>" sein muss, müsste ich das ja nur in Netpro ändern obwohl mich etwas verwirrt.

    3) ich habe gesehen dass du den ScoutV10 verwendest und dich über OPC UA (nicht XML-DA) mit dem Server verbindest, daher bin ich nicht sicher ob XML-DA überhaupt korrekt installiert ist. Das Beispiel ist für XML-DA (für die Symbole macht das zwar keinen Unterschied, ich wollte es aber dennoch mal erwähnt haben)
    Ja ich weiß XML-DA wird im Scout nicht angeboten hab es daher prinzipel mit DA mal ausprobiert.
    Angehängte Grafiken Angehängte Grafiken

  3. #13
    Avatar von magmaa
    magmaa ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    06.04.2007
    Ort
    S/A
    Beiträge
    323
    Danke
    18
    Erhielt 21 Danke für 18 Beiträge

    Standard

    Hab gerade gelesen das bei der

    absolute Adressierung: \S7\[Name der S7-Verbindung] ...

    und

    symbolische Adressierung: \SYM\[Name der Station]\[Name der CPU]...

    Dann würde ja "WinLC_OPC_Conn.PCWinAC.Data_Act_Val.Act_Mixer" passen?

  4. #14
    Registriert seit
    27.10.2009
    Beiträge
    317
    Danke
    0
    Erhielt 64 Danke für 54 Beiträge

    Standard

    ja, genau. Welche Seite du änderst ist egal, es muss halt am Schluß zusammenpassen.

    Wenn Du den Verbindungsnamen zur WinLC und den Stationsnamen der WinLC nicht ändern möchtest, kannst du auch den String im Beispielcode ändern. Das Step7 Projekt, das zu dem Beispiel gehört, sollte das eigentlich alles korrekt enthalten. Ich würde daher die originale XDB in die PC-Station importieren.

    Du solltest darauf achten, dass wenn du etwas änderst, du auch immer "speichern übersetzen" machst und die "PC-Station" neu runter lädst, denn dabei wird die Symbolik neu erzeugt und in den Server geladen.

    Die Überprüfung mit dem ScoutV10 ist sicher richtig um mal zu sehen wie es im Server aussieht. Hier solltest Du allerdings den OPC DA Server "OPC.SimaticNET" wählen (und nicht OPC.SimaticNET.S7 denn das ist der OPC UA Server). Nur der "klassische" OPC Server sieht "innen" so aus wie der XML-DA. So wie dort die Symbole heißen so heißen sie auch im XML-DA.
    Geändert von Dr. OPC (10.05.2010 um 21:27 Uhr)

  5. #15
    Avatar von magmaa
    magmaa ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    06.04.2007
    Ort
    S/A
    Beiträge
    323
    Danke
    18
    Erhielt 21 Danke für 18 Beiträge

    Standard

    So hab jetzt einen "OPC XML - DA Test Client" ähnlich wie der OPC Scout von Siemens ausprobiert.

    Als Server Status sag der mir:

    Code:
    Vendor :         SIMATIC NET OPC XML-Webservice DataAccess-V1.0 (C) SIEMENS AG 2002-2008
    Product Version :    307.100.114.1
    Status Info :    The web service is functioning normally
    Interface Version :    XML_DA_Version_1_0
    Locale Ids     :    en,  de
    Server started at :    19:47:55.921
    
    Server State :    running
    Receive Time :    20:0:30.749
    Reply Time :    20:0:30.765
    Revised Locale Id:    en
    hört sich ganz gut an

    Bei Bei Symbolischer Adressierung bleibt die Meldung:

    Code:
    The item name does not conform to the server's syntax.
    und bei S7 erhalte ich folgende Meldung:

    Code:
    System.Web.Services.Protocols.SoapException: An internal server is not running ---> System.Runtime.InteropServices.COMException (0xC00481FF): Ausnahme von HRESULT: 0xC00481FF
       bei MELBOURNE_Lib.INSInfo2.ChangePosition(String ElementName, Object ID, tagNS2_MoveDirection Direction)
       bei Siemens.Runtime.INSXMLWrapper.INSInfo2XML.BrowseFromNSInfo2(String ItemPath, String ItemName, String ItemNameFilter, Int32 MaxElementsReturned, browseFilter Browsefilter, List`1& entryList)
       bei Siemens.XMLDAWebService.OPCXML_DataAccess.Browse(XmlQualifiedName[] PropertyNames, String LocaleID, String ClientRequestHandle, String ItemPath, String ItemName, String& ContinuationPoint, Int32 MaxElementsReturned, browseFilter BrowseFilter, String ElementNameFilter, String VendorFilter, Boolean ReturnAllProperties, Boolean ReturnPropertyValues, Boolean ReturnErrorText, BrowseElement[]& Elements, OPCError[]& Errors, Boolean& MoreElements)
       --- Ende der internen Ausnahmestapelüberwachung ---
       bei Siemens.XMLDAWebService.OPCXML_DataAccess.Browse(XmlQualifiedName[] PropertyNames, String LocaleID, String ClientRequestHandle, String ItemPath, String ItemName, String& ContinuationPoint, Int32 MaxElementsReturned, browseFilter BrowseFilter, String ElementNameFilter, String VendorFilter, Boolean ReturnAllProperties, Boolean ReturnPropertyValues, Boolean ReturnErrorText, BrowseElement[]& Elements, OPCError[]& Errors, Boolean& MoreElements)
    Da scheint irgendetwas nicht zu laufen!?!

  6. #16
    Registriert seit
    27.10.2009
    Beiträge
    317
    Danke
    0
    Erhielt 64 Danke für 54 Beiträge

    Standard

    Ja, das sieht natürlich nicht mehr so gut aus. Die SoapException zeigt das es bei der Auflösung des Namens ein "unerwartetes" Problem gab.

    Ohne das jetzt selber live zu sehen und weiter einkreisen zu können, gehen mir langsam die Vorschläge aus. Aber einen habe ich noch:

    Es sieht für mich so aus als ob die Komponente, die die Namensauflösung macht, nicht gestartet werden kann. Dies kann ein "Rechteproblem" sein. Der XML-DA Webserver läuft im SecurityContext des ASP Users und dieser hat üblicherweise nur sehr wenige Rechte. Eventuell hat dieser nicht ausreichende DCOM Rechte, um auf die Komponente zuzugreifen. Dies sollte allerdings eigentlich durch das Setup und den Security-Button in "PC Station einstellen" korrekt gesetzt werden "remote freischalten". Aber eine Kontrolle in dcomcnfg schadet nicht. Du solltest den ASPUser in die SimaticNET User-Gruppe aufnehmen, das sollte reichen. Der ASP User sollte auch Zugriffsrechte auf die STI Dateien erhalten falls du diese verwendest.

    Ansonsten gibt es noch den Trace des Server "Data" und den Trace des NameServers "TagInfo" beide über "PC Station einstellen" einschaltbar. Hier solltest du in der Hochlaufphase des Servers schauen ob die Komponenten auch alle gestatet werden konnten. Weiterhin solltest du nach der IVarOPC.err Datei suchen, diese enthält "schwerwiegende" Fehler und wird immer von Server erzeugt. Hier könnte auch ein Hinweis enthalten sein, falls die Komponente "grundsätzlich" nicht geladen werden kann. Das scheint ja aber bei dir zu funktionieren, denn über den Scout siehst du ja alle Symbole. Daher tippe ich eher auf das Rechteproblem.

    Der FehlerCode 0xC00481FF bedeutet E_ServerDown also ist der NameServer nicht gestartet worden. Es fragt sich also nur noch warum. Der OPC Server fragt den NameServer um den Namen des Symbols aufzulösen, das klapp nicht und daher sieht es auf OPC Client Seite so aus als ob "Invalid_Syntax" das Symbol falsch geschrieben wurde.

  7. #17
    Avatar von magmaa
    magmaa ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    06.04.2007
    Ort
    S/A
    Beiträge
    323
    Danke
    18
    Erhielt 21 Danke für 18 Beiträge

    Standard

    Der OPC Dr. ist der beste.

    Ein Klick in "PC- Station einstellen" und es geht.

    Besten Dank für die vielen mühen.

  8. #18
    Avatar von magmaa
    magmaa ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    06.04.2007
    Ort
    S/A
    Beiträge
    323
    Danke
    18
    Erhielt 21 Danke für 18 Beiträge

    Standard

    Eine Sache ist mir noch aufgefallen lesen der Variablen ist kein Problem aber bei schreiben bekomme ich immer folgende Fehlermeldung:

    "E_BADTYPE The server cannot convert the value to the requested type."

    was kann das wider sein?

  9. #19
    Registriert seit
    27.10.2009
    Beiträge
    317
    Danke
    0
    Erhielt 64 Danke für 54 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    In OPC kennt man 2 Datentypen für eine Variable
    1) den Canonical Data Type
    2) den Requested Data Type

    Der kanonische Datentyp ist der "Urdatentyp" den eine Variable besitzt. Eine Lichtschranke hätte beispielsweise den kanonischen Datentyp "Boolean", das liegt in der "Natur" einer Lichtschranke. Ein "S7:[Verb1]DB1,W4,1" ist ein Word (VT_UI2) im Datenbaustein 1 ab der Byteoffsettadresse 4, dessen cannonical DT ist "VT_UI2". Wenn auf diese Adresse ein Symbol gelegt wird z.B. "MeineTemperaturImKessel2" dann hat auch das Symbol den cannonical Datatype VT_UI2 (16 Bit unsigned integer)

    Ein OPC Client kann nun beim Hinzufügen der Variable zu einer Gruppe (AddItems) angeben dass der Server diese Variable bitte in einem anderen Datentyp liefern soll. Der Requested Data Type könnte also beispielsweise als String (VT_Bstr) angefordert werden. Nun wird der Server jedes mal wenn er die Variable an den Client sendet dessen Wert konvertieren und als String liefern. Umgekehrt muss der Client beim Schreiben den Wert als String angeben. Viele Clients, die Daten in der Oberfläche in z.B. "TextBox" anzeigen, machen das so, denn dann kann der Wert direkt zugewiesen werden. Das funktioniert rückwärts (beim Schreiben) aber nur dann wenn der String auch in einen VT_UI2 konvertierbar ist. Wenn du also den Wert "klaus" auf die Variable schreibst dann würde es nicht konvertierbar sein. Auch "-12" würden nicht klappen oder "65536".

    Ein spezifikationskonformer OPC Server muss alle Konvertierungen entsprechend der Windowsfunktion "VariantChangeType" beherrschen. Wird bei AddItems der Requested Data Type mit VT_Empty (0) angegeben, dann liefert der Server die Variable in ihrem Cannonical Data Type, das ist bei den vielen Clients auch der Default.

    Also prüfe zunächst wie die Variable bei AddItems angefordert wird, anschließend prüfe wie die Variable vom Client tatsächlich geschrieben wird. Bei "fertigen" Clients dessen Code man nicht hat, ist das nätürlich schwer. Da bleibt dann nur noch der Trace "Data" des Servers, um zu sehen was wirklich passiert.

Ähnliche Themen

  1. Visual Basic .NET und OPC XML
    Von wiesel187 im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 12.10.2010, 15:34
  2. Visual Basic always on top
    Von demmy86 im Forum Hochsprachen - OPC
    Antworten: 10
    Letzter Beitrag: 21.09.2008, 20:36
  3. OPC und Visual Basic 6
    Von Daredevil im Forum Hochsprachen - OPC
    Antworten: 1
    Letzter Beitrag: 08.03.2005, 08:00
  4. OPC und Visual Basic 6
    Von Daredevil im Forum Hochsprachen - OPC
    Antworten: 0
    Letzter Beitrag: 05.03.2005, 19:59
  5. Visual Basic.Net
    Von Hamster im Forum Hochsprachen - OPC
    Antworten: 3
    Letzter Beitrag: 11.10.2004, 09:48

Lesezeichen

Berechtigungen

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