summaryrefslogtreecommitdiff
path: root/pcr-controller/protocol_uc.txt
blob: 68c4c90049d393af95127fac216b9e783607af94 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
Command bytes:
's' Temperatursensor lesen -> parse_float(string("%3.2f")) + \r\n
'T' Temperatursoll setzen <- string (int(float(temp)*16))
't' Temperatursoll lesen -> parse_float(string("%3.2f")) + \r\n
'P' P-Wert setzen <- string (uint16_t x * 1024)
'p' Alle PID Werte ausgeben -> string (uint16_t)  + \r\n
'I' I-Wert setzen <- string (uint16_t x * 1024)
'i' Alle PID Werte ausgeben -> string (uint16_t)  + \r\n
'D' D-Wert setzen <- string (uint16_t x * 1024)
'd' Alle PID Werte ausgeben -> string (uint16_t p / 1024, i / 1024,  d / 1024)  + \r\n
'A' Pumpe on
'a' Pumpe off
'B' Deckelheizung on
'b' Deckelheizung off
'L' Toggle LED (Debug)
'l' Toggle LED by using queuing system (Debug)
'R' Reset (Alle Register zurücksetzen und neu initialisieren)
'=' Halte aktuelle Temperatur (PID Ziel gleich aktuelle Temp messen)
'-' Lösche gesetzte Temperaturkurve
'+' Füge einen Punkt zur Temperaturkurve hinzu. erwartet Zieltemperatur und zeit (in10tel sekunden) für wie lange die temperatur gehalten werden soll bevor zur nächsten gesprungen wird. <- string(int(float(temp)*16)) \n <- string(int(seconds*10)) \n
'Z' setzte Anzahl Zyklen in denen die Temperaturkurve wiederholt wird (0 == default == keine Wiederholung == 1 Zyklus, 1 == 1 Wiederholung == 2 Zyklen) <- string(int(repeats))
'E' Temperatursoll das nach Ende des Temperaturkurvenzyklus gesetzt werden soll <- string (int(float(temp)*16))
'm' Schalte ständige Ausgabe der aktuellen Temperatur ein/aus

Nach jedem Setz-Command: Bestätigung mit "OK\r\n" (oder so)



Das folgende Beispiel
fragt die Temperatur ab,
löscht eine evtl gesetzte Temperaturkurve
Hält für's Erste die aktuelle Temperatur
Schaltet die Pumpe ein
Programmiert eine Kurve von 95°C (15min) -> 65°C (1s) -> 60°C (30s) -> 70°C (30s)
Wiederholt die Kurve 30 mal
Kühlt die Proben nach dem Ende auf 5°C
Gibt periodisch die aktuelle Temperatur aus.

Example PCR:
s
-
=
A
b
+
1520
9000
+
1040
10
+
960
300
+
1120
300
Z
30
E
80
m


Example uc Answers:
{"cmd_ok":false,"error": "No DS1820 sensors on 1wire bus, thus no temperature"}
{"cmd_ok":false,"error":"talking to DS18b20, no valid temperature!"}
{"cmd_ok":true}
{"t":503, "currtemp":20.34, "targettemp":-2048.00, "curve":false, "curve_t_elapsed":0, "cycles_left":0}  //curve and pid disabled  (pid disabel when targettemp == -2048.00
{"t":97000, "currtemp":40.34, "targettemp":70.00, "curve":true, "curve_t_elapsed":14, "cycles_left":11}
{"t":97200, "currtemp":69.72, "targettemp":70.00, "curve":true, "curve_t_elapsed":214, "cycles_left":11}
{"t":110123, "currtemp":30.14, "targettemp":30.00, "curve":true, "curve_t_elapsed":10, "cycles_left":9}
{"t":9999999, "currtemp":5.02, "targettemp":5.00, "curve":true, "curve_t_elapsed":65535, "cycles_left":0}   //we know all is finished because targettemp is hold-temp