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: 5727
Registriert: Mo 21. Apr 2008, 20:03
Hat sich bedankt: 19 Mal
Danksagung erhalten: 13 Mal

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

Beitragvon Thomas » Di 18. Nov 2014, 21:57

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
Danksagung erhalten: 1 Mal

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

Beitragvon torsten.s » Mi 19. Nov 2014, 18:15

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: 5727
Registriert: Mo 21. Apr 2008, 20:03
Hat sich bedankt: 19 Mal
Danksagung erhalten: 13 Mal

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

Beitragvon Thomas » Mi 19. Nov 2014, 19:40

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) 2405 mal betrachtet
lg Thomas


torsten.s
Mitglied
Mitglied
Beiträge: 41
Registriert: So 20. Jul 2014, 11:51
Danksagung erhalten: 1 Mal

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

Beitragvon torsten.s » Mi 19. Nov 2014, 23:45

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: 289
Registriert: Fr 7. Jun 2013, 09:59
Danksagung erhalten: 1 Mal
Kontaktdaten:

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

Beitragvon DOMIQ-Support » Do 20. Nov 2014, 14:24

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) 2405 mal betrachtet


torsten.s
Mitglied
Mitglied
Beiträge: 41
Registriert: So 20. Jul 2014, 11:51
Danksagung erhalten: 1 Mal

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

Beitragvon torsten.s » Mi 10. Dez 2014, 20:34

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: 5727
Registriert: Mo 21. Apr 2008, 20:03
Hat sich bedankt: 19 Mal
Danksagung erhalten: 13 Mal

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

Beitragvon Thomas » Mi 10. Dez 2014, 21:22

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: 289
Registriert: Fr 7. Jun 2013, 09:59
Danksagung erhalten: 1 Mal
Kontaktdaten:

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

Beitragvon DOMIQ-Support » Do 11. Dez 2014, 08:24

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
Danksagung erhalten: 1 Mal

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

Beitragvon torsten.s » Fr 19. Dez 2014, 14:45

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: 467
Registriert: Do 29. Dez 2011, 21:47
Danksagung erhalten: 3 Mal

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

Beitragvon mr_claus » Fr 19. Dez 2014, 15:23

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.


Zurück zu „Domiq-Module - DOMIQ Sp. z o.o.“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste