Von Fröling S4 Scheitholzkessel Daten über Modbus Ascci auslesen.

Hallo ich versuche gerade meinen Fröling Ofen auszulesen…

An der Com 2 bekomme ich folgende Daten (direkt am Port):

im IPS bekomme ich im Debug folgendes:

Der Fröling ist mit einem Silex SX-500 an dem IPS angebunden.




Kann mir bitte jemand weiterhelfen?

Danke!

Wo liegt dein Problem?

Kontrollier mal dein Debug vom Cutter und von der RegisterVar.
Auswertskript angelegt?
Was kommt im Skript an?

	$data=explode(";", $_IPS['VALUE']);
		print_r ($data);

Hallo!

Mein Problem ist, wie bringe ich die Daten in die Variablen… :confused:

Debug Cutter:

Debug Register V.:

Beim ausfüren von:

    $data=explode(";", $_IPS['VALUE']);
        print_r ($data); 

bekomme ich den Fehler
Notice: Undefined index: VALUE in C:\ProgramData\Symcon\scripts\52194.ips.php on line 3
Array
(
[0] =>
)

Bin bei sowas leider sehr unerfahren…
Und steh total auf dem Schlauch! :banghead:

Du brauchst:

  1. Client Socket
  2. Cutter
  3. Register Variable (Übergeordnet ist der Cutter, Ziel ist das Auswertskript)
  4. Auswert Skript (Hier beschreibst du deine Variablen)

Schreib die 2 Code-Zeilen in dein Skript und schau im Meldungsfenster was passiert. Hier müsste dein Array ausgegeben werden. Dann schreibst du mit z.B.

SetValueFloat(26246, $data[6]/$data[8]);

in deine Variablen.

Hier das komplette Skript:

<?

	

		$data=explode(";", $_IPS['VALUE']);
		print_r ($data);
		//echo (date("s"));
		
		
			if ( count($data) == 150)
			{
				
                
                
                SetValue(53256, $data[0]);
				SetValue(29604, $data[146]);
				
				if (date("s") <> 8) {return;}
				
				SetValueFloat(26246, $data[6]/$data[8]);
				SetValueFloat(38856, $data[11]/$data[13]);
				SetValueFloat(21625 , $data[16]/$data[18]);  //Abgastemperatur Soll
				SetValueFloat(25828 , $data[46]/$data[48]);
				SetValueFloat(13617 , $data[51]/$data[53]);
				SetValueFloat(12928, $data[51]/$data[53]/30);
				SetValueFloat(14137, $data[91]/$data[93]);
				SetValueFloat(57465 , $data[96]/$data[98]);
				SetValueFloat(29547 , $data[101]/$data[103]);
				SetValueFloat(31446, $data[141]/$data[143]);
				
			}
?>

Punkt 1-3 müsste passen…

Aber wenn ich das Auswerte Skript ausführe kommt immer der Fehler.

Nicht ausführen!
Nur im Meldungsfenster schauen.

Jetzt sieht es besser aus.

29.12.2020, 20:55:00 | Register Variable | Array
(
[0] => Feuer Aus
[1] => 0005
[2] => 1
[3] => 1
[4] => zst
[5] => Kesseltemp.
[6] => 0155
[7] => 2
[8] => 2
[9] => °C
[10] => Abgastemp.
[11] => 0070
[12] => 3
[13] => 1
[14] => °C
[15] => Abgastemp S
[16] => 0080
[17] => 11
[18] => 1
[19] => °C
[20] => Kesselstrg
[21] => 0100
[22] => 4
[23] => 1
[24] => %
[25] => Primärluft
[26] => 0000
[27] => 5
[28] => 1
[29] => %
[30] => Rest O2 ist
[31] => 0198
[32] => 6
[33] => 10
[34] => %
[35] => O2 Regler
[36] => 0000
[37] => 7
[38] => 1
[39] => %
[40] => Sekundärluft
[41] => 0000
[42] => 8
[43] => 1
[44] => %
[45] => Saugzug Soll
[46] => 0000
[47] => 9
[48] => 1
[49] => %
[50] => Saugzug Ist
[51] => 0000
[52] => 10
[53] => 1
[54] => U
[55] => Einschub Ist
[56] => 0000
[57] => 12
[58] => 1
[59] => %
[60] => O2 Regler Pell
[61] => 0035
[62] => 13
[63] => 1
[64] => %
[65] => Füllstand:
[66] => 20516
[67] => 14
[68] => 207
[69] => %
[70] => Ansauggeschw.
[71] => 0454
[72] => 15
[73] => 100
[74] => m/s
[75] => Strom Austrags
[76] => 1140
[77] => 16
[78] => 1000
[79] => A
[80] => Fühler 1
[81] => 0134
[82] => 17
[83] => 2
[84] => °C
[85] => Kesselsoll
[86] => 0168
[87] => 18
[88] => 2
[89] => °C
[90] => Pufferoben
[91] => 0161
[92] => 20
[93] => 2
[94] => °C
[95] => Pufferunten
[96] => 0089
[97] => 21
[98] => 2
[99] => °C
[100] => Pufferpumpe
[101] => 0000
[102] => 22
[103] => 1
[104] => %
[105] => Boiler 1
[106] => 0168
[107] => 23
[108] => 2
[109] => °C
[110] => Vorlauf 1
[111] => 0254
[112] => 24
[113] => 2
[114] => °C
[115] => Vorlauf 2
[116] => 0254
[117] => 25
[118] => 2
[119] => °C
[120] => HK Pumpe 1
[121] => 0000
[122] => 26
[123] => 1
[124] =>
[125] => HK Pumpe 2
[126] => 0000
[127] => 27
[128] => 1
[129] =>
[130] => Aussentemp
[131] => 0254
[132] => 28
[133] => 2
[134] => °C
[135] => Kollektortemp
[136] => 0000
[137] => 29
[138] => 2
[139] => °C
[140] => Betriebsstunden
[141] => 0375
[142] => 30
[143] => 1
[144] => h
[145] => Fehler
[146] => Kein Fehler
[147] => 99
[148] => 1
[149] =>
)

Wenn ich jetzt

SetValueFloat(48913 , $data[10]/$data[12]);

eingebe, schreibt er aber 0 in die Variable.

Wo denk ich noch falsch?

Das schaut schon mal gut aus.:smiley:

data[10] / data[12] = 0 (Abgastemp / 3 = nix):wink:

Das Bedeutet:
data[5] bis data[9] ist eine Variable

data[5] = Beschreibung Wert
data[6] = Wert
data[7] = weiß ich nicht mehr:o
data[8] = Teiler
data[9] = Einheit

das Bedeutet:
data[5] = data[6] / data[8]

SetValueFloat(48913 , $data[6]/$data[8]);

Jetzt läuft es!

Vielen Dank für deine Hilfe!!!
:loveips:

Hallo Zusammen.

Ich hätte da auch mal eine frage bezüglich der Einbindung is IPS.

Ich habe einen Fröling P4 Pellets BJ 2018. vom auslesen/schreiben wird sich nicht viel geändert haben oder? Oder geht das über die Modbus Instanz in IPS einfacher?

Leider gibts den Silex SX-500 anscheinend nicht mehr :frowning:
Was könnte man da als alternative nehmen?

Waveshare Industrial RS232/RS485 to Ethernet Converte

Hätte ich da mal gefunden.

Anbei noch die Doku von fröling falls diese noch jemanden Hilft :slight_smile:
B1200217_ModBus Lambdatronic 3200_50-04_05-14_de.pdf (1,3 MB)

1 „Gefällt mir“

Den Konverter kannst Du nehmen, dann in IPS einbinden, RTU Objekte anlegen und schon hast Du die Daten.

Danke für die Info, werd mir den Konverter mal bestellen und das mal so testen.

Hallo, wollte mal Fragen ob das funktioniert hat? Bei mir kommt der PE1C und der hat auch die 3200 er drauf, ich wollte die Daten auch auslesen und ggf. welche schalten (wenn möglich)…

Servus. das gerät funtioniert eigentlich schon, es findet auch eine communikation statt, leider bekomm ich die werte irgendwie nicht ins system, hatte auch leider zu wenig zeit mich intensiv damit zu beschäftigen :frowning: