Tak write on change dělá přesně to co potřebuji.
Proměnnou lze modifikovat z druhého místa, ale sesynchronizuje se zpět, když se změní stav logiky v FBD.
Píšu pro případ, kdyby se to někomu také hodilo, protože v dokumentaci o tom není ani píp.
Tak write on change dělá přesně to co potřebuji.
Proměnnou lze modifikovat z druhého místa, ale sesynchronizuje se zpět, když se změní stav logiky v FBD.
Píšu pro případ, kdyby se to někomu také hodilo, protože v dokumentaci o tom není ani píp.
Na našich dvou neuronech jsem opravil tuto chybu. Asi se o ní už ví, ale pro jistotu posílám sem.
#!/bin/bash
#
# get installed version of ca-certificate package
# write the version into virtual registers 4200-4201
#
# if used with --update, try update/upgrade package
CA_REG1=4300
CA_REG2=4301
VREG_DIR=/run/unipi-plc/virtual-regs
if [[ "$TRIGGER_UNIT" =~ ".timer" ]]; then
apt-get update -y -qq || true
apt-get install -y -q ca-certificates
fi
CA_VERSION=$(dpkg-query --show --showformat '${Version}' ca-certificates 2>/dev/null)
# OPRAVA: Odřízne vše od prvního znaku, který není číslice (např. ~deb12u2)
CA_VERSION="${CA_VERSION%%[^0-9]*}"
if [ -z "$CA_VERSION" ]; then
rm -f "$VREG_DIR/$CA_REG1"
rm -f "$VREG_DIR/$CA_REG2" # Zde byla dříve chyba s redundantním /virtual-regs/
else
mkdir -p "$VREG_DIR"
if cd "$VREG_DIR"; then
echo "$((CA_VERSION/10000))" > "$VREG_DIR/$CA_REG1"
echo "$((CA_VERSION%10000))" > "$VREG_DIR/$CA_REG2"
fi
fi
Hezký den všem.
Externí zařízení lze vypnout, zápisem 0 do holding registru. Zapsáním 1 se zapne, ale to nechceme dělat. Zapíná se jiným komunikačním kanálem. Druhý holding registr je k dispozici pro čtení aktuálního stavu, ale ten reaguje s mnohasekundovým zpožděním.
Primárně programuji FBD schematy, ale není podmínkou.
Jak zapíšu do modbus registru jen nulu, když jsem tam před tím žádnou jinou hodnotu nezapsal, nebo zapsal dříve také nulu, na základě jiné bool proměnné?
Děkuji srdečně
Tato integrace je brutálně omezená, hodí se jen pro malé sady proměnných které se všechny týkají jedné věci. Nelze například světla rozdělit do více místností. Naučil jsem se raději jak to přenášet modbusem.
Tak write on change dělá přesně to co potřebuji.
Proměnnou lze modifikovat z druhého místa, ale sesynchronizuje se zpět, když se změní stav logiky v FBD.
Píšu pro případ, kdyby se to někomu také hodilo, protože v dokumentaci o tom není ani píp.
Dobrý den,
Pro spínání světel v domě z více tlačítek (tlačítka jsou na modbus sběrnici a mají vlastní paměť a chovají se jako stiskem zapni, stiskem vypni) používám XOR mezi proměnnými.

Potřeboval bych tu výslednou hodnotu číst a měnit ze vzdáleného místa přes SSCP.
Napadá mě, že by se na to hodilo definovat ji jako write on change, ale nikde v dokumentaci nevidím přesnou definici chování write on change, abych pochopil, zda to je aplikovatelné.
Nebo mi nezbyde nic jiného než mít dvě proměnné? Jednu k zobrazení a druhou přidat jako další vstup do toho XORu.
Díky za pomoc
Pro ty koho by to také zajímalo, zkouším https://github.com/cervenyxp/hass_sscp_integration
Zatím to oťukávám, ještě žádné konkrétní výsledky. Nejprve musím přijít na to jak to celé efektivně "architektovat".
Dobrý den
Dnes 3.7.2025 se mi objevilo místo rozhraní prohlížení databáze, že jsem si měl do 30.6 koupit mervis scada a že jsem si měl do daného datumu stáhnout data jinam.
Jenomže, co mám dělat, když mi ta informace byla sdělena až teď?
Nevím jestli mi nějaký e-mail spadnul do spamu, nebo co, to je jedno.
To to nemohlo být vidět v rozhraní DB? Tam jsem se díval obden. Ještě předevčírem jsem tam přidával nové proměnné ...
Potřebuji ta data.
Scada nepoužívám, a nechci používat, nechci platit (bratr, majitel domu řízeného vašimi PLC, také nechce).
Tohle je zatím největší kudla do zad od unipi.
Jsem opravdu rozčílený.
Zdravím,
postavil jsem řízení domu na dvou unipi jednotkách. Dělá to jen logiku, PID regulaci a pod, časových plánů je tam minimum. Uživatel interaguje jen tlačítky na modbus rtu sběrnici.
Chtěl bych tomu přidat uživatelský komfort, automatizaci podle počasí a podobně, pomocí Home Assistant.
Zatím ale nevím jaká je nejlepší cesta s propojením.
Modbus TCP je možnost, ale je třeba ručně vyplnit tabulky datových bodů. Toho je ale už hoooodně. Uvítal bych nějaký automatický export a import.
Máte někdo zkušenost, jak takovou věc co nejrychleji a nejsprávněji provést?
Díky
Jakub
@cleve
OK, díky, myslel jsem si to, že EN bude ta cesta, ale chtěl jsem se ujistit.
@cleve said in chyba komunikace s Unipi Extension xS51:
@ladmanj
Dobrý den,
teplý restart je možné provést zavoláním funkce reloadapplication s parametrem flags (příznaky restartu, 1 - cold restart, jinak warm). Funkci je možné přidat pravým tlačítkem nebo zavolat z ST.
Omlouvám se, ale není mi jasné jak se ve FBD zavolá ta funkce reloadapplication (nedokumentovaná) tak, aby se restart provedl jen při true boolean proměnné. Kdyby flag 0 byl "žádná akce", 1 "warm restart", 2 "cold restart", tak bych věděl, ale když 1 je cold a vše ostatní je warm restart, tak nějak nevím co dělat.
Chápu že je to míněno tak, že v takovém případě se funkce vůbec nemá volat, ale já nevím jak takovou věc ve fbd nakreslit. Pokud to nepůjde, pokusím se to nadatlovat v ST, ale zatím ho stále neovládám. Dokážu C, C++, python, pascal, assembler pro různé platformy, Verilog, tak se nakonec zvládnu i ST. Zatím mi ale způsobuje nevolnost.