Joee DANCER 10 Geschrieben 13. Februar 2006 Melden Teilen Geschrieben 13. Februar 2006 Ich weis nicht ob das hier richtig eingeordnent ist ich stell einfach mal die Frage. Wie kann ich mit Visual Basic 6.0 eine freigabe auf existenz pruefen ohne das mein Programm fuer laengere Zeit offline geht. Habe angefangen mit einem Ping auf die Maschiene ist dieser erfolgreich dann geprueft ob das File vorhanden ist und erst danach Zugriff auf das File in der Freigabe. Wenn jetzt aber aus welchen Gruenden auch immer die Freigabe verlorengegangen ist taucht mein Programm in die Unterwelt der Rechnermysterien ab bis das timeout abgelaufen ist und beim naechsten Zyklus passiert das gleiche. Darraus folgt bei einem Zykluszugriff von einmal die Sekunde das mein Programm haengt. Dies wiederum ist unakzeptabel weil das Programm eine Automatsierung steuern soll. Irgendjemand ein vorschlag wie oder wo ich dazu nachlesen kann. Gruss Joee Dancer Zitieren Link zu diesem Kommentar
BuzzeR 10 Geschrieben 13. Februar 2006 Melden Teilen Geschrieben 13. Februar 2006 Hallo Joee, was macht Dein Programm genau und wieso mußt Du auf das Verhandensein von Rechnern und Freigaben prüfen? Kannst Du eine Datei nicht öffnen, dann ist auch die jeweilig Freigabe und / oder Rechner nicht vorhanden, also wieso so kompliziert? Mußt Du in die jeweilige Datei dann speichern, oder was soll mit der/den Datei(en) geschehen? Sind es mehrere Dateien, die geöffnet werden müssen? Haben sie unterschiedliche, oder gleiche Dateinamen? Schildere das Szenario also viel genauer, Pflichtenhefte haben i. d. R. auch mehr Inhalt als 7 Zeilen. ...grins... Was verstehst Du bitte unter steuern einer Automatisierung? Kannst Dich ruhig auch wie ein Programmierer ausdrücken - man versteht Dich hier. :D Wäre schön, wenn Du mal ein wenig Licht ins Dunkel bringst. ;) LG Marco Zitieren Link zu diesem Kommentar
Joee DANCER 10 Geschrieben 15. Februar 2006 Autor Melden Teilen Geschrieben 15. Februar 2006 Also dann mal los: Die Datei enthaelt Soll und Istwerte eines Haerteofens sprich Solltemp;Isttemp.,Restlaufzeiten der geladenen Programme,Sowie Digitale Signale wie Lade/Entladefreigaben,usw. Diese Datei namendlich SetactCPx.bin muss ich einlesen um diese Werte in meiner Visualisierung darstellen zu koennen.Da diese Datei allerdings von 11 verschiedenen Oefen(Steuerungs PC's) geschrieben werden, liegen diese Dateien in 11 verschiedenen Freigaben im Netz. Wenn ich auf einen Datei zugreife und der Rechner ist aus fuehrt das zu einer sehr langen Zugriffszeit bevor eine Fehlermeldung zurueckommt. Da ich aber jede Sekunde versuche die Datei zu lesen fuehrt das wiederum dazu das mein Programm haengt. Jetzt pinge ich den Rechner an bevor ich auf die Datei zugreife das stellt sicher das wenigstens der Rechner lebt. Sollte jetzt was schon voegekommen ist der Steureungspc diese Freigabe verlieren stellt sich das gleich Problem allerdings antwortet dann der Pc auf den vorherigen Ping. Deshalb moechte ich eine Function bauen die vorher eine abfrage auf die Freigabe im Netz macht damit ich nur dann auf die Datei zugreife wenn diese ein positives ergebnis liefert. Automatiserte Steuerung von Be und Entladen der Haerteoefen sowie derer Visualisierung auf eienem PC Gruss Joee Dancer P.S.: Entschuldige die Verzoegerung ich befinde mich gerade in den USA zwecks Inbetriebnahmen einer solchen Anlage. Dabei bin ich auf dieses Problem gestossen. Zitieren Link zu diesem Kommentar
BuzzeR 10 Geschrieben 15. Februar 2006 Melden Teilen Geschrieben 15. Februar 2006 Ein Hallo dem Joee. Nun, als alter Programmierer für BDE / PDE / MDE - Applikationen kenne ich das Problem mit dem Timing. Habe selber Programme für Härtelinien, Schneidanlagen, Arrondier-Maschinen aus dem Bandstahl-bearbeitenden Bereich geschrieben. Du willst also eine Art Leitrechner in Betrieb nehmen, der Dir die aktuellen Daten der Härteöfen anzeigt. Bei einer Aktualisierungsfrequenz von 1s bei 11 Öfen hat man da schon schnell ein Problem mit dem Timing und ich befürchte fast, dass man das auch so nicht in den Griff bekommt. Können die jeweiligen Steuerrechner Ihre Dateien nicht in eine "permanente" Freigabe eines Servers ablegen? Wenn Dein Programm aus zeitl. Gründen nicht prüfen kann, ob die Steuerechner laufen, können sie es Deinem Programm nicht sagen? Soll heißen, kann man auf den jeweiligen Rechnern noch andere Programme laufen lassen, die Dir dann ein "Heartbeat" schicken, oder zumindest beim Hoch- u. Runterfahren eine Datei erzeugen und löschen, die Dir das Vorhandensein der jeweiligen Rechner anzeigt? Ich nehme an, die Steuerrechner laufen auch nur dann, wenn die Öfen belegt, also somit aktiv sind. Die Rechner erfaßen dann über digitale IO-Karten die Impulse, die von irgendwelchen Sensoren auf die Leitung gelegt werden. Besteht die Möglichkeit, daß Du selber eine IO-Karte einbaust und diese abprüfst? Somit wüßtest Du indirekt, dass die Steuerrechner wohl aktiv sein müßen - was dann nur einmal zu prüfen wäre. Hmm - muß ich mir noch ein paar Gedanken zu machen, aber jetzt gehe ich erst einmal in die Kiste. Hier ist es nämlich schon recht spät. ;) Melde mich Marco Zitieren Link zu diesem Kommentar
Joee DANCER 10 Geschrieben 15. Februar 2006 Autor Melden Teilen Geschrieben 15. Februar 2006 Ja fast genau so nur das die Signale nicht ueber I/O Karten sondern aus der Allen Bradley Steuerung(amerikanische S7) kommen via Industrial Ethernet, die Steuerungspc fuer die Haerteoefen laufen immer da diese die Oefen Realtime steuern. Mit jede Sekunde natuerlich nur eine Datei auslesen nicht alle 11 zusammen und dies dann aus einer Programmhauptschleife herraus.Aus Integrietaetsgruenden keine direkte Kommunikation zu der Ofensteuerung (Firmenpolitik) mein Rechner hat eh genug mit der Automatisierung sprich Ladersteuerung, Chargenverfolgung,Ein/Ausschleusevorgaenge, Visualisierung und Planung der Ladeabfolgung zu tun eben deshalb ist es unschoen (und ziemlich gefaehrlich) wenn der Automatiesierungsrechner steht/haengt.Die Anlage ansich laeuft schon rund ich mache nur noch Schoenheitskorrekturen darunter faellt eben auch mein Problem, solange alle Freigaben da sind, keine Probleme, allerdings kennst bestimmt auch du den Herrn Murphy. Kern der Sache bleibt, kann ich eine Function programmieren(VB 6.0) die wie nach folgende arbeitet nur eben Freigaben abfragt ohne ins timeout zu laufen wenn diese nicht da ist. Programmcode VB.6.0: ********************************************* **Public Function FileExists(sFile As String) As Boolean **On Error Resume Next ** FileExists = False ** If (Trim(sFile) = "") Then Exit Function ** FileExists = (Dir(sFile) <> "") **End Function ********************************************* Habe auch schon bei VBArchiv gesucht aber nichts gefunden was mir weiter hilft. Gruss Joee Zitieren Link zu diesem Kommentar
BuzzeR 10 Geschrieben 16. Februar 2006 Melden Teilen Geschrieben 16. Februar 2006 Hi Joee. Vorab, ich bin leider nur C/CPP/C# - Programmierer und habe mit VB eigentlich nicht viel am Hut, aber ich weiß wie man funky Programme schreibt. ;) Ich würde garnicht auf Anwesenheit der Rechner, oder der Freigaben prüfen, denn wenn ich versuche eine Datei via Open zu öffnen, dann bekomme ich einen Laufzeitfehler wenn sie nicht zu öffnen ist und diesen Fehler kann ich behandeln. Somit hätte ich mir schon mal die Prüfung auf Existenz der Datei gespart - zumal Dateinamen und Pfade bekannt sind. Wenn man jedoch trotzdem prüfen möchte, so gibt es effektivere, sprich etwas performantere Lösungen als Deine function. Du siehst mich demzufolge etwas irritiert, denn Du erfindest das Rad mal wieder neu, wie es vielen Programmierern so geht. Ich würde zum einen mal das FileSystemObject aus der scrrun.dll nutzen, welches Dir u.a. schon die folgenden Methoden zur Verfügung stellt ... DriveExist FileExist FolderExist ... und viele weitere nützliche Methoden und Eigenschaften, wie z. B. isReady ( Eigenschaft, ob ein Laufwerk bereit ist ) Einbinden kannst Du es über das Menu. Siehe dazu: Projekt->Verweise->Windows Scripting Runtime -> ggf. Durchsuchen -> C:\WINDOWS\System32\scrrun.dll So, mache mir jetzt mal meine Gedanken, vielleicht küßt mich ja die Muse und mir fällt noch was erleuchtendes zu dem Problem ein. Hmmm ... Marco Zitieren Link zu diesem Kommentar
Joee DANCER 10 Geschrieben 16. Februar 2006 Autor Melden Teilen Geschrieben 16. Februar 2006 Wow buissy day today komme erst jetzt dazu mal daueber nach zudenken koennte ein Ansatz sein !!! Gruss Joee Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.