Sziasztok,
Esetleg valaki csatlakozott mar nem TCP-n hanem RS485-on keresztul a fenti(hez hasonlo) szerkezethez?
Elvileg ket RS485 busza is van:
RS485/1: Used to cascade inverters or connect to the RS485 signal port on the SmartLogger
RS485/2: Used to connect to the RS485 signal port on devices such as the Smart Power Sensor and the energy storage device
Lehet egyaltalan barmelyikhez olyan modon csatlakozni, mint a modbus-TCP-s megoldas eseten (masterkent kiolvasni a inverter (slave)) regisztereit? Azt sem tudom, hogy tud-e slave es / vagy master lenni barmelyik porton az inverter (gondolom a kaszkadnal valamelyiknek masternek kellene lenni a tobbi meg slave), a logger es a power sensor eseten nem tudom melyik mi, s a batteryrol azt gondolnam, hogy o slave, de csak talalgatas.
Azt gondoltam, az RS485/2 lenne a hasznalhato, de mindket porton probaltam. Az RS485/2 eseten mindig timeout van. Az RS485/1-gyel barmit probalok olvasni, "illegal function" jon vissza.
A beallitas 9600 8N1 (az inverteren csak a baud rate allithato, a data bit, paritas, stop bitek szama nem), address 1 (az inverter cime).
Koszi
- 872 megtekintés
Hozzászólások
Volt téma pár fórumon már ez és többeknek sikerült. Ha jól emlékszem úgy, hogy a power meternél másztak rá a buszra.
Én csak félig figyeltem oda, mert TCP-s megoldásban vagyok érdekelt.
- A hozzászóláshoz be kell jelentkezni
"Az RS485/1-gyel barmit probalok olvasni, "illegal function" jon vissza."
A kérdés, hogy mit próbálsz olvasni. Éppen most írtam hozzá drivert és úgy tűnik volt egy kis módosítás a regiszterek számozásában. Pl. a battery SOC eltűnt a v3.0-ban, illetve a v1.0-s regiszterkiosztás mintha nem fedné a későbbi verziót.
A napokban rakom ki GUIra a battery SOC-ot és akkor első kézből tudok segíteni, hogy milyen regiszereknél, milyen lekérés esetén van esélyed sikerre.
- A hozzászóláshoz be kell jelentkezni
Az nem irtam, hogy csak inverter van (se logger, se meter, se akku), szoval valahogy ugy kellene megtamadnom, hogy csak az inverter valamelyik RS485-os buszara csatlakozok direktben.
Kozben van olyan erzesem, hogy valamit elrontok.
A Wi-Fi (es Ethernet) dongle-on, Modbus-TCP-n keresztul tudok lekerdezni, az mukodik rendesen (ezzel butykoltem).
Most egy hasznalaton kivuli RPi-t + Modbus adaptert (kinai, CH341-es USB-serial + RS485 illeszto) helyeztem el a inverter kozeleben. Talaltam egy Modbus-RTU megoldast, de a fuggosegeivel egyelore nen tudtam zoldagra vergodni. Feltettem az mbpoll utility-t, azza jottek a hibak amit fentebb irtam. Az mbpoll tud RTU-t es TCP-t is, viszont TCP-n is azt mondja, hogy timeout ami kisse gyanus, tekintve, hogy a Python szkript tud csatlatlozni, kiolvasni (ez be is van allitva Home Assistanthoz), mig ugyanaezen a gepen (ez is egy RPi) az mbpoll nem mukodik. Igy probalnam:
mbpoll -m tcp -a 1 -r 30070 -c2 -t 3:hex -1 <inverter IP>
Mivel ez is timeoutot mond, valoszinuleg elrontok valamit - de egyelore nem latom, hogy mit, probaltam azokat a beallitasokat hasznalni amit Python szkriptben van (502-es port, slave address 1, olyan regisztrer olvasnek amit a Python szkript is olvas).
Ami miatt az egeszet csinalnam az az, hogy a dongle-on keresztuli lekerdezes rettenetesen lassu. Par (~10) ertek lekerdezese tobb (5+) masodpercbe telik. Talan nem tunik veszesnek, de szinkronizalni szeretnem a villanyoraval (hogy minel kozelebb legyen az inverter altal adott adat az villanyora altal szolgaltatotthoz, es ne legyenek (vagy csokkenjenek) a glitchek).
/sza2
Digital? Every idiot can count to one - Bob Widlar
- A hozzászóláshoz be kell jelentkezni
Idokozben egy problemat mar talaltam, az mbpoll eseten nem lehet varakozast beallitani a connect utan, ami viszont kell a Huawei csoda Modbusnak - legalabbis TCP eseten. Csak akkor mukodik, ha a connect es a lekerdezes kozott van ~1 masodperc.
/sza2
Digital? Every idiot can count to one - Bob Widlar
- A hozzászóláshoz be kell jelentkezni
Vegulis kikiserletezodott, az RS485/1 buszra (kommunikacios csatlakozo 1-es es 3-as labai) kell kotni a mastert, illetve az alabbi rovid szkripttel ki lehet olvasni a modell stringet (vagy a cimtol fuggen mast is persze):
from pymodbus.client.sync import ModbusSerialClient as ModbusClient
client = ModbusClient(method='rtu', port="/dev/ttyUSB0", timeout=1, baudrate=9600, stopbits = 1, bytesize = 8, parity = 'N')
client.connect()
response = client.read_holding_registers(30000, 15, unit = 1)
model = []
for d in response.registers:
model.append(chr(d//256))
model.append(chr(d%256))
print(model)
client.close()
Igaz, 3-5 probalkozasbol kb. 1-szer sikerul olvasni, a tobbi esetben exception jon - irtak egy-ket helyen, hogy a Smart Dongle (Wi-Fi + Ethernet) nem jo ha csatlakoztatva van amikor RTU modban hasznalna az ember, amit el is tudok kepzelni, ha mindket eszkoz ugyanazt a fizikai buszt probalja elerni. Valamikor leszedem, megnezem ugy jobb-e.
Edit: es valoban, a dongle-t kihuzva megszunnek a problemak, minden lekerdezes hibatlanul megy, visszadugva a dongle-t, ujra jonnek az exceptionok - szoval valoszinuleg mindketten ugyanazt az buszt probaljak elerni. Volt ahol irtak, hogy ujra kell inditani az invertert, nalam erre nem volt szukseg.
/sza2
Digital? Every idiot can count to one - Bob Widlar
- A hozzászóláshoz be kell jelentkezni