Beckhoffilta kalleinta ja se rullahihna pyörii nätisti sen jälkeen
Tämä on sellainen työnantajaorganisaation päätös, etten voi vaikuttaa. Nyt on sitten ilmeisesti aika opetella käyttämään tätä.
Mitä tässä kontekstissa tarkoittaa tulojen/lähtöjen ja ohjelmallisten objektien konffaus?
Esim. sitä, että funktioblokin loogisesti nimetty input kirjoitetaan yhteen modbus serverin rekisteriin ja toisen modbus-rekisterin arvo luetaan ja kirjoitetaan funktioblokin loogisesti nimettyyn outputtiin.
Nämä blokin inputit ja outputit ovat ulkoisella modbus clientilla ja HMI:llä luettavia ja käsin kirjoitettavia arvoja. Tällaisille en löytänyt kirjastoista funktioita millä sen voisi tehdä parilla rivillä simppelisti.
Ilmeisesti Siemensin tapa on noutaa modbus serverin/slaven rekisteriarvot matriisiin ja kutsua siitä FBD-puolella. FBD-ohjelmoinnissa tarvitaan heidän kirjastoistaan:
-Yksi blokki säätimen modbus client -määrityksille (portti, osoite, sarjaliikenneparametrit)
-Toinen blokki yksittäiselle modbus server -laitteelle, jonka kanssa halutaan kommunikoida esim. taajuusmuuttaja
-Kolmas blokki yksittäisille modbus serverin rekisteritietueille esim. holding-rekisteri 1 nopeusohjauksen kirjoittamiselle ja toinen vastaava blokki eri tyyppiselle rekisterille esim. coil-rekisteri 1 ohjaukselle on/off, tai jos seuraava holding-rekisteri ei ole peräkkäinen vaan esim. 157 niin sekin tarvitsee omana tietueenaan oman blokkinsa
-Neljäs blokki input-objektille esim. nopeusohje HMI:ltä tai ulkopuolelta, jolla määritellään nopeusohjeen mittayksikkö, raka-arvot jne parametroidaan se
-Viides blokki nopeusohjeen liittämiseksi rajapintaan HMI:tä ja ulkoista järjestelmää varten - tästä blokista saadaan nopeusohjeen arvo, joka voidaan kytkeä sinne funktioblokkiin
-Sitten tehdään samat stepit tämän server-laitteen muille rekistereille sekä kaikille muille modbus server -laitteille ja niiden rekistereille
Tässä vaiheessa tuntuu erittäin huonolta ajankäytön priorisoinnilta, kun on tottunut operoimaan täysin ST-kielellä. ST-pohjaisessa järjestelmässä tämän voisi hoitaa pisimmillään näin:
-Yksi funktioblokki, joka lukee inputit ja kirjoittaa ne haluttuihin rekistereihin ja lukee halutut rekisterit ja kirjoittaa ne outputteihin
-Yksi kutsuohjelma, jossa yhdistetään funktioblokin tulot ja lähdöt tietokantaan
..ja lyhyimmillään näin:
-Yksi funktioblokki, joka lukee ja kirjoittaa sekä tietokantaa että modbus rekistereitä server -laitteelle
TOKI siinä ST-pohjaisessa järjestelmässä voi joutua vielä määrittämään myös ne modbus server tai -client-määritykset jollain muulla tapaa kuin ST:nä. Tuo kommunikaatio modbus-porttien ja tietokannan välillä on kuitenkin ihmeen mutkikkaaksi tehty prosessi.
Pahoittelut pitkästä viestistä, koin edellisen viestini vähän epäselväksi.
Sitten vielä tullaan siihen ihanuuteen, kun vaikkapa globaalimuuttujia muutetaan tai poistetaan ja generoidut FBD-blokit eivät tätä tajua, niin niitä hienoja laatikoita on kuitenkin mentävä ST-tekstieditorilla sitten mentävä korjaamaan, että koko ohjelma edes suostuu kääntymään.