Jump to content

markus5766h

Members
  • Gesamte Inhalte

    155
  • Benutzer seit

  • Letzter Besuch

Alle erstellten Inhalte von markus5766h

  1. Moin. mal kurz gegoogelt : http://www.ebay.de/itm/like/301721768426?ul_noapp=true&chn=ps&lpid=106 diese Spindeln haben eine Steigung von 8mm (im Gegensatz zu 1mm bei einem M8-Gewinde), somit erreichst Du auch eine 8-fache Geschwindigkeit der Linearbewegung bei gleicher Geschwindigkeit des Antriebs - und die Reibkräfte im Gewinde sind geringer. Als Alternative (falls konstruktiv möglich): benutze den Schrittmotor mit einem Zahnrad als Antrieb auf (bzw. unter) Deiner Abdeckung - die Du über eine Zahnstange laufen lässt, hierzu muss dann die Kabelverbindung zum Schrittmotor flexibel sein - es geht natürlich auch anders herum : Schrittmotor mit Zahnrad statisch unter der Abdeckung --> Zahnstange unter der Abdeckung montiert. Bei den Zahnstangen entspricht das Modul der Steigung, die Lineargeschwindigkeit ist dann von der Drehzahl und der Anzahl der Zähne des Zahnrades abhängig. Zahnstangen und auch Trapezgewindespindeln bekommt man gut sortiert bei Mädler: www.maedler.de
  2. Moin. Ganz so einfach ist dies wohl nicht - stelle Dir folgende Fragen : -wie ist die Holzabdeckung gelagert (Linearführung, einfache Gleitflächen ...) -wie hoch ist die Zugkraft, um die Abdeckung zu verstellen ... -der Reibwiderstand einer "normalen" Gewindestange in einer Mutter sollte auch nicht vernachlässigt werden - es ist schließlich ein Befestigungsgewinde und kein Bewegungsgewinde wie z.B. Trapez- oder Flachgewinde. -Wählst Du eine andere (oder zusätzliche) Übersetzung verlierst Du Drehmoment, d.h., Du treibst den Schrittmotor früher in die Auslastung, zu mal Schrittmotoren nicht für hohe Geschwindigkeiten ausgelegt sind. -Generell bei Schrittmotoren : das Drehmoment nimmt mit der Drehzahl ab ! -eventuell können Trapezgewindespindeln aus dem Modellbaubereich genommen werden, diese haben eine höhere Steigung, womit sich auch die Geschwindigkeit erhöht. -ggf. muss ein Schrittmotor mit höherer Leistung herhalten . . .
  3. jupp, läuft und auch ein ipcon.Disconnect - was eigentlich vor das ipcon.Destroy gehört - wird akzeptiert. Danke
  4. Moin aus Hamburg. Ich habe folgendes Problem : ich erstelle Objekte vom Typ TBrickMaster, TBrickAnalogOut, AnalogIn ... im Ereignis On Create des Formulars var HOST : String; PORT : Word; EnumBrick : array[1..128] of TEnumerateB; EnumCount : Word; ipcon : TIPConnection; ma : array[1..8] of TBrickMaster; mb : array[1..8] of TBrickDC; aa : array[1..8] of TBrickletAnalogIn; ab : array[1..8] of TBrickletAnalogInV2; ac : array[1..8] of TBrickletAnalogOut; ad : array[1..8] of TBrickletAnalogOutV2; ae : array[1..8] of TBrickletIndustrialDual020mA; da : array[1..8] of TBrickletIO4; db : array[1..8] of TBrickletIO16; procedure TfrmMain.FormCreate(Sender: TObject); var i : Integer; begin frmMain.ClientWidth := 1008; frmMain.ClientHeight := 730; Log := TStringList.Create; Log.Add(DateTimeToStr(Now) + ' Programm started'); HOST := 'localhost'; PORT := 4223; EnumCount := 0; ipcon := TIPConnection.Create; ma[1] := TBrickMaster.Create('6qY3SC', ipcon); ma[2] := TBrickMaster.Create('6JKRPw', ipcon); ab[1] := TBrickletAnalogInV2.Create('vfA', ipcon); ac[1] := TBrickletAnalogOut.Create('hPy', ipcon); ac[2] := TBrickletAnalogOut.Create('ikS', ipcon); ad[1] := TBrickletAnalogOutV2.Create('vn2', ipcon); ae[1] := TBrickletIndustrialDual020mA.Create('saE', ipcon); db[1] := TBrickletIO16.Create('snY', ipcon); ipcon.Connect('localhost', 4223); soweit so gut. Im Ereignis OnClose setze ich einige Einstellungen zurück und gebe die Objekte wieder frei : procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction); begin SetIO16PortsToZero(1); // alle Ausgänge auf HIGH SetAnalogesToZero; // Analog Ausgänge auf 0V ab[1].Free; ac[2].Free; ac[1].Free; ad[1].Free; ae[1].Free; db[1].Free; ma[2].Free; ma[1].Free; Delay(100); ipcon.Destroy; Delay(100); Log.Free; end; dies funktioniert auch einwandfrei, solange ich von einem Bricklet-Typ nur ein Objekt erzeuge. benutze ich zwei Objekte vom z.B. Typ TBrickletAnalogOut gibt's eine Exception bei der Freigabe bzw. Destroy von ipcon an folgender Stelle : Unit IPConnection procedure TIPConnection.Disconnect; var callback_: PCallbackContext; meta: TByteArray; begin callback_ := nil; socketMutex.Acquire; try autoReconnectAllowed := false; if (autoReconnectPending) then begin { Abort pending auto-reconnect } autoReconnectPending := false; end else begin if (not IsConnected) then begin raise ENotConnectedException.Create('Not connected'); end; DisconnectUnlocked; SetLength(pendingData, 0); end; { Destroy callback thread } callback_ := callback; callback := nil; finally socketMutex.Release; end; if (callback_ <> nil) then begin { Do this outside of socketMutex to allow calling (dis-)connect from the callbacks while blocking on the WaitFor call here } SetLength(meta, 2); meta[0] := IPCON_CALLBACK_DISCONNECTED; meta[1] := IPCON_DISCONNECT_REASON_REQUEST; callback_^.queue.Enqueue(IPCON_QUEUE_KIND_META, meta); if (not callback_^.thread.IsCurrent) then begin callback_^.queue.Enqueue(IPCON_QUEUE_KIND_EXIT, nil); callback_^.thread.WaitFor; callback_^.thread.Destroy; <-------------- hier tritt der Fehler auf end else begin callback_^.queue.Enqueue(IPCON_QUEUE_KIND_DESTROY_AND_EXIT, nil); end; end; end; kennt jemand das Problem bzw. hat eine Lösung ?
  5. Moin. Senden und empfangen geht grundsätzlich bei RS485 wie auch bei RS232, jedoch werden bei beiden Systemen andere Spannungspegel benutzt. Deswegen muss ein Konverter her - kann man selbst löten, Bausteine MAXIM: MAX485 und MAX232 http://www.electro-tech-online.com/attachments/basic-rs232-rs485-converter-png.49291/
×
×
  • Neu erstellen...