Hallo zusammen,
das BIC-2200-24 CAN läuft , ist über den CAN Bus ansprechbar und programmierbar . Es läuft bisher als Netzteil AC --> DC um mit der Programmierung vertraut zu werden. Bevor man einen Akku anschließt sollte der Modus umgestellt werden. Davon mehr weiter unten.
Hier mein Setup:
Raspberry Pi 4 mit Isolated RS485 CAN HAT (B)
Für den Waveshare CAN Hat gibt es eine Anleitung im Wiki nach der ich vorgegangen bin.
Einen Befehl in der Anleitung muss geändert werden, um die Bitrate des CAN Bus an die erforderliche Geschwindigkeit des BIC-2200 CAN Interfaces anzupassen (250kbps).
Die CAN Schnittstelle am BIC benötigt einen HRS DF11-10DP-2DS Stecker, der verbreitet, aber in kleinen Mengen schwierig zu bekommen ist. Ich habe ein fertiges Kabel gekauft, da ich auch nicht die erforderliche Crimpzange besitze.
Im sehr guten Manual zum BIC-2200 steht ausführlich alles zur Programmierung. Es hat nur etwas gedauert, bis ich die Logik dahinter verstanden hatte. Erfahrung im Programmieren vom CAN Bus =0
Auf dem Raspberry müssten dann für diese Tests noch die can-utils installiert werden:
sudo apt install can-utils
Der CAN Bus wird das Netzwerk Device eingerichtet:
sudo ip link set can0 up type can bitrate 250000
sudo ifconfig can0 txqueuelen 65536
Die can-utils beinhalten unter anderem die Befehle cansend und candump. In einem Terminal läuft candump und liest alles mit, was über den CAN Bus läuft und in einem weiteren Terminal werden mit cansend Befehle abgeschickt.
Hier ein Beispiel:
cansend can0 000C0300#6200
candump can0
can0 000C0300 [2] 62 00
can0 000C0200 [4] 62 00 81 00
Damit wird die Temperatur im Gerät ausgegeben. Aktuell 12,9°C
br />
Der Befehl setzt sich so zusammen (alles hex):
000C03 - Senden vom Controller an BIC
00 - Adresse des BIC
- Trenner
6200 - Befehl für "Temperatur auslesen"
Der Befehl lautet eigentlich 0x0062 es wird aber immer zuerst das low Byte und dann das high byte übertragen.
Das BIC antwortet mit der Adresse 000C0200 , der Wiederholung des Befehls und dem Ergebnis 81 00 (hex), wieder erst das low byte und dann das high byte. Also 0x0081 macht Dezimal 129, bei einem Skalierungsfaktor von 0,1 macht das 12,9°C
So habe ich Spannungen eingestellt und gelesen, die Netzspannung ausgelesen usw. Das funktioniert erst ein mal.
Das BIC beherrscht übrigens 2 Betriebsmodi, einen "bi-direction auto-detect mode" , bei dem anhand der eingestellten Spannung von der Firmware entschieden wird, ob geladen oder entladen wird. Oder ein "bi-direction battery mode", bei dem die Flussrichtung, und damit laden/entladen, über den CAN Bus eingestellt werden. Den Modus habe ich auf "bi-direction battery mode" eingestellt, wie das geht steht im Handbuch.
Bisher wurde alles mit den can-utils getestet. Der nächste Schritt ist die Programmierung in python oder bash um das Ganze etwas komfortabler zu machen und das Gerät besser verstehen zu lernen und zu testen. Wenn das alles sicher läuft kommt die Nulleinspeisung dran.
Viele Grüße,
steve