myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Rund um die Programmierung » DALI/DSI Interface RS232 Ansteuerung mit C#
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

DALI/DSI Interface RS232 Ansteuerung mit C#

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
stas
myCSharp.de-Mitglied

Dabei seit: 27.02.2018
Beiträge: 3


stas ist offline

DALI/DSI Interface RS232 Ansteuerung mit C#

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,

Ich arbeite derzeit an einen DALI-Projekt für die Uni und soll, über den mir bereitgestellten DALI Interface RS232 PS/S von Tridonic  Web, Leuchtmittel ansteuern. Das DALI-Interface soll dazu dienen angeschlossene Leuchtmittel anzusteuern und stufenweise zu Dimmen, sodass eine Beleuchtungsstärke-Kurve in Abhängigkeit von der Dimm-Stufe dargestellt werden kann (Zukunftsmusik).

Derzeit habe ich das DALI-Interface via USB to Serial Port (dann rj45 Kabel zum DALI-Interface) angeschlossen und versuche eine Leuchte auszuschalten. Die Funktionsweise des DALI's ist gegeben den über die Test-Taste am DALI-Interface wird das Leuchtmittel an und aus geschaltet. Die Anbindung an den PC wird ebenfalls erkannt wie im Bild Link unten zu sehen. Somit gehe ich davon aus, dass es am Programmieren bzw. ggf. gebrauchter zusätzlicher Vorschaltung scheitert.

Als derzeitigen Ansatz verwende ich das Datenblatt von Tridonic  (LINK DATENBLATT), wo ich entnehme, dass ich 5 Bytes an das DALI-Interface übergeben soll (Seite 7/8). Ich habe nach den Angaben die einfachste Variante gewählt 0x15, 0x00, 0x00, 0x00, 0x15 zu senden. 0x15/0b00010101 lässt mich das einfachste DALI Format nutzen -> DSI  (WIKI LINK), womit ich den Light Level direkt über 4ten Byte ansteuere (2ter und 3ter somit 0x00). Da ich erstmal die Leuchte ausschalten will kommt 0x00 (Aus) als 4ter Byte laut Wiki DSI. Der 5te Byte ist laut Datenblatt ein XOR aus bisherigen Bytes somit gleich den 0x15 da alle anderen 0x00.

Leider bin ich neu in der C#-Programierung und auch RS232 Anbindung, womit ich sehr unsicher bin was mein Ansatz angeht. Ist der Weg über die SerialPort-Klasse richtig und ist es möglich über C# es zu realisieren? Das sind die Fragen die ich mir stelle. Unten habe ich meinen Code beigefügt der nichts bewirkt am Dali. Laut Datenblatt kann man die backward frame (auch 5 Bytes) sich auslesen lassen um zu schauen was das DALI-Interface so macht. Jedoch mit public int ReadByte() scheine ich nichts zu bekommen und die Command-Console geht auch sofort zu nach ablaufen des Codes zu.

Ich wäre für jede Unterstützung dankbar, mich in die richtige Richtung zu lenken. Grüße an alle!

C#-Ansatz ist wie folgt:

C#-Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO.Ports;

namespace ConsoleApp2
{
    public class Program
    {
        public static void Main(string[] args)
        {
            //Mein USB Serial Port ist COM3 in Windows 10 Geräte-Manager
            SerialPort mySerialPort = new SerialPort("COM3");

            //Angaben aus DALI RS232 Datasheet Tridonic Webseite
            mySerialPort.BaudRate = 38400;
            mySerialPort.Parity = Parity.None;
            mySerialPort.StopBits = StopBits.One;
            mySerialPort.DataBits = 8;

            //RTS + Voltage und DTR - Voltage
            mySerialPort.RtsEnable = true;
            mySerialPort.DtrEnable = false;

            mySerialPort.Open();

            //mySerialPort.Write(new byte[] { 0b00010101, 0x00, 0x00, 0x00, 0b00010101 }, 0, 5); In Bit
            mySerialPort.Write(new byte[] { 0x15, 0x00, 0x00, 0x00, 0x15 }, 0, 5);

            mySerialPort.Close();
        }
    }
}

stas hat dieses Bild (verkleinerte Version) angehängt:
Unbenannt.png
Volle Bildgröße

27.02.2018 23:36 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Joetempes Joetempes ist männlich
myCSharp.de-Mitglied

avatar-3309.jpg


Dabei seit: 29.03.2007
Beiträge: 887
Herkunft: Germany


Joetempes ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Die RS232-Anbindung sollte grundsätzlich genormt sein.
Probier es mal hier mit:
 Template SerialPort
28.02.2018 06:25 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
stas
myCSharp.de-Mitglied

Dabei seit: 27.02.2018
Beiträge: 3

Themenstarter Thema begonnen von stas

stas ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,

danke für deine Antwort. Ich habe das Template heruntergeladen und bei Nutzung erhalte ich folgende Warnungen ( Errors).

Sowie ich das Template verstehe muss ich folgende Zeile anpassen (Code ab 127 im SerialConnector.cs) ( BILD).

Da steht, dass aus ASCII jetzt Bytes gemacht werden d.h. ich soll mein Befehl aus 5 Bytes zuvor in ASCII angeben richtig?
Das wäre laut dieser Webseite  (LINK) wie folgt:
0x15 -> NAK
0x00 -> NUL also
NAKNULNULNULNAK muss als Eingabe erfolgen. Leider tut sich dann nichts an der Leuchte. Habe ich das mit dem Template richtig verstanden? Sollte ich davon ausgehen das die Anbindung fehlerhaft ist?

Grüße
28.02.2018 09:12 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 12.925
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Bitte beachte  [Hinweis] Wie poste ich richtig? 6.1 Bilder als Dateianhang hochladen

Noch besser: Verwende BB-Tags und poste die Fehlermeldung als Test.
Dafür gibt es das ERROR-Tag. Dafür ist es da.
Das gilt auch für den ersten Beitrag. Du hat schließlich heute bei Deiner Registrierung diese Regeln zwei mal als gelesen und verstanden markiert.

Dann gibt es evtl auch eine Antwort. Daumen hoch
28.02.2018 22:27 Beiträge des Benutzers | zu Buddylist hinzufügen
lhyn lhyn ist männlich
myCSharp.de-Mitglied

Dabei seit: 20.04.2015
Beiträge: 121


lhyn ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo stas,

Erstmal vorweg...ich habe mir das Datenblatt des Gateways nicht angesehen.

Auf einer DALI-Linie können 64 Geräte adressiert werden, welche dann wiederum gruppiert werden.

Also muss das Vorschaltgeräte adressiert sein und über das Gateway auch bestimmt DIESE Adresse angesprochen werden.

Aber mal im Ernst...PC=>C#=>USB/RS232=>Kabellänge=>Gateway=>DALI=>EVG

Besorg Dir ein ordentliches Gateway (z.B. mit BACnet/IP oder Modbus/IP) und kümmere Dich um die Umsetzung der Dimm-Rampe bzw. Konstantlichtregelung oder was Du da vor hast.
-> Zur Klarstellung, TRIDONIC hat sehr gute Produkte!

Btw. ist Dein Vorhaben mit einer SPS einfacher zu realisieren als mit PC und C#, zumal Du in C# noch nicht so bewandert bist.

Gruss Lhyn
01.03.2018 00:28 Beiträge des Benutzers | zu Buddylist hinzufügen
stas
myCSharp.de-Mitglied

Dabei seit: 27.02.2018
Beiträge: 3

Themenstarter Thema begonnen von stas

stas ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,
danke für die Antworten. Es ist mir bewusst, dass die DALI Adressierung angesprochen werden muss, jedoch wenn ich alles über Broadcast/Global Befehl (Alle Lampen) anspreche wäre das Problem nicht gegeben. Darüber hinaus dachte ich es sei ein leichteres mit rs232 und der SerialPort-Klasse. Leider muss ich es über dem PC machen :) aber danke für die vorschlage.
02.03.2018 18:07 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als ein Jahr.
Der letzte Beitrag ist älter als ein Jahr.
Antwort erstellen


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 24.08.2019 06:23