Willkommen auf unserer neuen Forenplattform für das Bus-Profi Forum

Neue Felder für die persönlichen Daten
Man kann jetzt seine öffentlich einsehbare Daten genau bestimmen. Details findet ihr in in diesem Beitrag.

Durch die neue Forensoftware und die Portierung der Daten konnten die Passwörter aus dem alten Forum nicht übernommen werden, bitte lassen Sie sich ein neues Passwort über die Passwort vergessen Funktion zusenden. Sollte es zu Problemen kommen kontaktieren Sie das Bus-Profi Team per E-Mail.

Wert vom Base in eine LCN Var kopieren ?

Hard- und Softwarefragen rund Domiq-Module fürs LCN-System
Benutzeravatar

Themenersteller
Thomas
Alleswisser
Alleswisser
Beiträge: 5752
Registriert: Mo 21. Apr 2008, 20:03
Status: Offline

#11 RE: Wert vom Base in eine LCN Var kopieren ?

Beitrag von Thomas »

Hallo Torsten,

ganau so!
Aber ein Wert pro Displayzeile ist mir zu wenig, ich arbeite mit Kürzel vor dem Wert, und kann so 3 Werte pro Zeile Fest darstellen.
Dabei ist es egal, ob vom DOMIQ, IPS oder LinHk der Text gesendet wird.

lg Thomas
lg Thomas

torsten.s
Mitglied
Mitglied
Beiträge: 41
Registriert: So 20. Jul 2014, 11:51
Status: Offline

#12 RE: Wert vom Base in eine LCN Var kopieren ?

Beitrag von torsten.s »

Hallo Thomas, Uwe, Piotr,

mir stellt sich schon die nächste Frage:
Wie kann ich dem Kommando "LCN.text" das Symbol für Grad Celsius (°C) übergeben? So funktioniert es nicht:

Code: Alles auswählen

templcn = use 'MODBUS.int.Elsner.templcn'
temp_in_gradc = (templcn.value - 1000)/10
templcntext = "Außen: " .. temp_in_gradc .. " °C"
command ('C.LCN.text.0.40.2', templcntext)
Mir scheint, als würden Zeichen außerhalb von a-z, A-Z, 0-9 und einiger Satzzeichen nicht akzeptiert.
Per print wird templcntext dagegen problemlos in der Ausgabe im Logic-Tab angezeigt.

Ich habe es anschließend mit ASCII-Code probiert, leider auch ohne Erfolg: :(

Code: Alles auswählen

templcntext = "Außen: " .. temp_in_gradc .. " \248C"
Gruß Torsten
Benutzeravatar

Themenersteller
Thomas
Alleswisser
Alleswisser
Beiträge: 5752
Registriert: Mo 21. Apr 2008, 20:03
Status: Offline

#13 RE: Wert vom Base in eine LCN Var kopieren ?

Beitrag von Thomas »

ich habe das "°" weggelassen.:blush: beim BASE.
Im Moment kann ich das leider nicht probieren, da IPS die Zeilen sendet.
Da ich vom DOMIQ auch den Radio Titel nicht bekomme, wie ich das von der LinHk gewohnt war (die leider auch nicht mehr läuft bei mir) , mache ich es per PHP aus IP-Symcon.
Sieht dann so aus auf nem alten "Zebra" GT4D :
[img]1[/img]

lg Thomas
Dateianhänge
618021Foto.JPG
618021Foto.JPG (18.83 KiB) 5443 mal betrachtet
lg Thomas

torsten.s
Mitglied
Mitglied
Beiträge: 41
Registriert: So 20. Jul 2014, 11:51
Status: Offline

#14 RE: Wert vom Base in eine LCN Var kopieren ?

Beitrag von torsten.s »

Hallo Thomas,

ich habe es gerade selbst herausgefunden... :w00t:
Wie bei vielen Programmiersprachen, so scheint auch in Lua die Art der Quotierung über das Ergebnis zu entscheiden.

Mit doppeltem Anführungszeichen klappt es nicht, mit einfachem Hochkomma dagegen schon. :)

Code: Alles auswählen

templcntext = "Außen: " .. temp_in_gradc .. ' °C'
Gruß Torsten

DOMIQ-Support
Fleißiges Mitglied
Fleißiges Mitglied
Beiträge: 292
Registriert: Fr 7. Jun 2013, 09:59
Status: Offline

#15 RE: Wert vom Base in eine LCN Var kopieren ?

Beitrag von DOMIQ-Support »

Degree sign is available. Below is the proof;) Here is the sample code I used:

Code: Alles auswählen

command('C.LCN.text.0.21.3','Temperature: 25'..string.char(194)..' C')
It's very important to have space character before the "C".

Bild
Dateianhänge
618091temp.JPG
618091temp.JPG (77.85 KiB) 5443 mal betrachtet

torsten.s
Mitglied
Mitglied
Beiträge: 41
Registriert: So 20. Jul 2014, 11:51
Status: Offline

#16 RE: Wert vom Base in eine LCN Var kopieren ?

Beitrag von torsten.s »

Thomas hat geschrieben:Hi

Dieses ist ein Weg, um VAR's vom BASE im LCN zu regeln....
Wenn du nur anzeigen willst, bau dir mit der LOGIC und dem "LCN.text command" die Displayzeile zusammen.
Ich wollte aber die Werte von der Modbus Wetterstation im LCN haben und regeln, daher der Weg über "Rechnen".

Du musst nur mit der PRO die passende Zeile auf dynamischen Text proggen.

lg Thomas
Hallo Thomas,

die Methode, die Außentemperatur per LCN-Text anzeigen zu lassen, hat sich bei mir leider nicht als zuverlässig erwiesen.:( Ich denke, dass ich es doch lieber über den Regler eines LCN Moduls versuchen sollte.

Kannst Du mir wohl sagen, wie ich den Wert in ein LCN Modul ab 17er Firmware bekomme?
Per Reglerrechnung scheint es ja nicht mehr zu gehen, sondern über einen anderen Weg...

Gruß Torsten
Benutzeravatar

Themenersteller
Thomas
Alleswisser
Alleswisser
Beiträge: 5752
Registriert: Mo 21. Apr 2008, 20:03
Status: Offline

#17 RE: Wert vom Base in eine LCN Var kopieren ?

Beitrag von Thomas »

Hi Torsten,

da muss ich mal suchen, da inzwischen bei mir kein BASE mehr werkelt.
Aber es ging per Logic mit LNC.generic

Gefunden :

Code: Alles auswählen

---------------------------------------
-- Mobotix Luxwert in LCN Rechnen
---------------------------------------
lux_cam = use 'VAR.camlux'
function lux2()
local lux11 = 0
local lux_hex = 0
local hb,lb,laenge

    lux11 = lux_cam.value 
    lux11 = math.log(lux11)
    lux11 = lux11 *100
    lux11 = math.ceil(lux11) 
    hb = lux11/256
    hb = math.modf(hb)--high Byte
    lb = math.mod(lux11,256) --lowByte
    hb = string.format("%x",hb )
    laenge = string.len (hb)
	if laenge == 1 then
		hb = ("0" .. hb) 
	end
    lb = string.format("%x",lb )
    laenge = string.len (lb)
	if laenge == 1 then
		lb = ("0" .. lb) 
	end
    lux_hex = ("40" .. hb .. lb) --VAR1 für 17er - string zusammensetzen
    command ("C.LCN.generic.0g4=" .. lux_hex)
end
lux_cam.onchange = lux2

------------------------------------------------------------------------
Anpassungen musst du selber lösen.
lux_hex = ("40" .. hb .. lb) --VAR1 für 17er - string zusammensetzen
Die hex"40" steht für VAR1

lg Thomas

ps. Du musst dann noch im realen LCN Modul, den Wert von "Modul ID des BASE" per HOLEN in ein freie VAR holen.
So kannst du 3 VAR's in ein LCN Modul vom BASE holen.
lg Thomas

DOMIQ-Support
Fleißiges Mitglied
Fleißiges Mitglied
Beiträge: 292
Registriert: Fr 7. Jun 2013, 09:59
Status: Offline

#18 RE: Wert vom Base in eine LCN Var kopieren ?

Beitrag von DOMIQ-Support »

If you want to pass some variable from Base to LCN regulator, why don't you use LCN.regulator command?

torsten.s
Mitglied
Mitglied
Beiträge: 41
Registriert: So 20. Jul 2014, 11:51
Status: Offline

#19 RE: Wert vom Base in eine LCN Var kopieren ?

Beitrag von torsten.s »

Hallo Thomas,

OK, jetzt habe ich das wohl verstanden.
Man muss erst den Wert, den die Wetterstation liefert, in High und Low Byte aufteilen, das Ganze dann nach Hex konvertieren und dem LCN an Hexadresse 40 (=Var 1) zur Verfügung stellen.

Ich habe nun folgendes daraus gemacht:

Code: Alles auswählen

function Temp_senden_an_LCN()

-- Dieser Kanal erhält die aktuelle Temperatur in °C (vorzeichenbehaftet) von der Elsner Wetterstation
-- Zunächst einmal als LCN-Wert umrechnen (Wert*10 + 1000)
	temp_modbus = use 'MODBUS.int.Elsner.temp'
	temp_modbus_lcn = temp_modbus.value*10+1000

-- Wert für die Weitergabe in High Byte und Low Byte teilen und anschließend nach Hexadezimal konvertieren
	hb = temp_modbus_lcn/256
	hb = math.modf(hb)   -- nur die Stelle vor dem Komma ist interessant (High Byte)
	hb = string.format("%x",hb )   -- nach Hex konvertieren...
	laenge = string.len (hb)    -- ... und ggf. führende "0" ergänzen
	if laenge == 1 then
		hb = ("0" .. hb) 
	end
	lb = math.mod(temp_modbus_lcn,256)   -- nur der Rest ist interessant (Low Byte)
	lb = string.format("%x",lb )   -- nach Hex konvertieren...
	laenge = string.len (lb)   -- ... und ggf. führende "0" ergänzen
	if laenge == 1 then
		lb = ("0" .. lb) 
	end

-- Wert für die Weitergabe an LCN zusammensetzen
-- Erster Hexwert "40"=VAR1, danach folgen High- und Low Byte
	s_wert =("40" .. hb .. lb)

-- Aussentemperatur in Segment 0, VAR1 schreiben
	command ("C.LCN.generic.0g4=" .. s_wert)

end

Gruß Torsten

mr_claus
Fleißiges Mitglied
Fleißiges Mitglied
Beiträge: 488
Registriert: Do 29. Dez 2011, 21:47
Status: Offline

#20 RE: Wert vom Base in eine LCN Var kopieren ?

Beitrag von mr_claus »

Warum schreibst Du es nicht direkt rein? Geht über die Regler genauso wie bei Schwellwerten. Einfach 0°C fest programmieren und dann das entsprechende Kommando nutzen.

Code: Alles auswählen

command('C.LCN.threshold.0.10.1.1=programmed;change:225')
Bei Reglern vermutlich so.

Code: Alles auswählen

command('C.LCN.regulator.0.10.1=set:1225')
Letzeres habe ich noch nicht getestet, probier es einfach mal aus.
Antworten