Automaatioprojekti

PLC-tilannekatsaus

Tiimin sisäinen katselmus PLC-ohjelman nykyisestä toteutuksesta (ei asiakkaalle — vrt. PLC-luonnos, joka näyttää suunnitelman lopullisesta ohjelmasta).

Muokkaa

Nykytoiminta

Lähde: Anton\Päivitetty10_26\PLC (TwinCAT-projekti) + ABB ACS880 primary control
program -firmware-manuaali (3AUA0000098062), katselmoitu 2026-11-04.

MAIN kutsuu joka skannauskierroksella (10 ms) FB_ConveyorSim-lohkoa, joka tekee
ohjauspäätökset (ramppi, suunnanvaihto, pysähtymismatka, lukitukset) ja antaa
käyntikäskyn, suunnan ja nopeusohjeen FB_DriveModbus-lohkolle.

FB_DriveModbus kommunikoi oikeasti ABB ACS880:n kanssa Modbus TCP:llä
(IP 10.22.60.55): kirjoittaa ControlWordin ja nopeusohjeen, lukee tilasanan ja
todellisen mitatun nopeuden takaisin. Yhteydessä on kunnollinen
virheenkäsittely-/uudelleenyritystilakone. ControlWord-arvot 1150 (477h,
READY TO SWITCH ON) ja 1151 (47Fh, OPERATING) on tarkistettu suoraan ABB:n
viralliselta firmware-manuaalin sivulta 386-387 — ne ovat oikein, "ABB Drives
profile" -sekvenssin mukaiset. Näitä EI tarvitse muuttaa CiA-tyylisiksi
hex-arvoiksi.

FB_ConveyorSim laskee kuljettimen virtuaalisen sijainnin integroimalla
TODELLISTA mitattua nopeutta — S1/S2/S3-anturit johdetaan tästä sijainnista,
eivät ole vielä oikeita fyysisiä rajakytkimiä.

FB_DriveModbus lukee myös taajuusmuuttajan StatusWordin bitin 3 ("Tripped")
ja altistaa sen bDriveFault-lähtönä. MAIN kirjoittaa joka kierros
MotorRunning/DriveCommOK/ActualRPM/DriveFault GVL:ään, ja hälytysloki (FB_Alarm)
laukeaa nyt näistä oikeista signaaleista (Modbus-yhteysvirhe, taajuusmuuttajan
vikatila, kuljettimen asetusvirhe) — ei enää kuvitteellisesta lämpötilasta.

P_WriteFile on yhä kytketty PlcTask-ajoon, mutta sen koko ST-koodi on
kommentoitu pois (2026-11-04) — CSV-lokitus oli jäänne alkuperäisestä
projektista, jonka pohjalta tämä toteutus tehtiin. Tilalle ollaan
toteuttamassa lokitusta MariaDB:hen (TF6420 TwinCAT Database Server):
yhteysprojekti ("DB konfigurointi") on lisätty ratkaisuun, mutta
yhteysasetuksia (palvelin/kanta/salasana) tai PLC:n kirjoituskoodia ei ole
vielä täytetty.

Vanha simulaatioversio (lämpötilamalli, 20→100 % kuormitustesti, puhaltimen
tilakone, enkooderisimulointi) on poistettu kokonaan FB_ConveyorSim.TcPOU:sta
(ei enää edes kommentoituna). GVL:ssä on silti yhä käyttämättömiä muuttujia
tältä ajalta (TempAmb, MotorTemp, rAmbRawTemp, rMotorRawTemp, PulseCount,
PulseFreq, MotorRPM, rTau_s, rKSpeed, rTempOver, bAlarmLog) — mikään koodi ei
kirjoita niihin, MotorTemp pysyy aina 0:ssa. HMI:stä (Diagnostiikka,
Parametrit) nämä harhaanjohtavat kentät poistettiin 2026-11-04, mutta
GVL-siivous on yhä tekemättä.

FB_ConveyorSim sai 2026-11-04 oikean nopeusohjeen ramppauksen: rMotorSpeed
ei enää hypähdä suoraan tavoitearvoon, vaan lähestyy sitä Kiihdytysaika-/
Hidastusaika-parametrien (tRampUp/tRampDown) mukaisella nopeudella
(uudet sisäiset muuttujat rMotorSpeedTarget, rMotorSpeedRamp). Sama
Hidastusaika-arvo ohjaa nyt sekä pysähtymismatkan ennakointia että itse
nopeusohjeen laskua — aiemmin nämä olivat ristiriidassa (ennakointi oletti
ramppia, ohje hyppäsi suoraan). Lisäksi Maksiminopeus (GVL.rMaxSpeed_mps,
m/s) muunnetaan nopeusohjeprosentiksi ja leikkaa sekä automaatti- että
käsiajon nopeusohjetta, ja Vetopyörän koko (GVL.rGearPerRev, ympärysmitta)
on nyt oikeasti kytketty FB_ConveyorSimin rWheelDiameter-tuloon (oli
aiemmin kovakoodattu 0.1 MAIN.TcPOU:ssa) — molemmat olivat ennen pelkkiä
koristekenttiä Parametrit-sivulla, eivät vaikuttaneet mihinkään.
EI OLE VIELÄ TESTATTU OIKEALLA KULJETTIMELLA.

Hälytysloki (aAlarmLog) sai 2026-11-04 kuittaustoiminnon: ST_Alarm-rakenteen
bActive-kenttä kirjoitettiin jo aiemmin FB_Alarmissa, mutta mikään ei
koskaan lukenut tai nollannut sitä, eikä sitä näytetty HMI:llä. Nyt
"Kuittaa hälytykset" -painike (GVL.CmdAckAlarms) nollaa kaikkien rivien
bActive-lipun MAIN.TcPOU:ssa, ja Hälytykset-näytön taulukossa on oma
Aktiivinen-sarake.

FB_DriveModbus.nErrorID (TwinCATin oman Modbus-asiakkaan virhekoodi) tuotiin
2026-11-04 GVL.ModbusErrorID:nä Diagnostiikka-näytölle — ACS880:n OMAA
vikakoodia (erillinen rekisteri, riippuu ryhmien 52/53 kartoituksesta) ei
vielä lueta, koska rekisteriosoitetta ei ole varmistettu koululla.

Trendit-näytölle toteutettiin 2026-11-04 yksinkertainen väliaikainen
trendikaavio: GVL.aTrendRPM/aTrendPos ovat 120 näytteen kiertäviä
RAM-puskureita (MAIN.TcPOU täyttää niitä 1 Hz:llä, n. 2 min historia),
jotka piirretään TcHmiLineChart-kontrollilla. Ei säily PLC:n
uudelleenkäynnistyksessä — korvataan myöhemmin pysyvällä
Historize/SQLite- tai MariaDB-pohjaisella toteutuksella.

Ratkaistu

- Modbus TCP -yhteys oikeaan ABB ACS880:aan (FB_DriveModbus): kirjoitus
  (ControlWord + nopeusohje) ja luku (tilasana + mitattu nopeus)
- Käynnistyslukitukset: bReady-ehto (yhteys + nopeustieto + asetukset kunnossa),
  uudelleenkäynnistyksen esto vikatilanteen jälkeen kunnes napit vapautettu
- Pysähtymismatkan laskenta oikeasta hidastusajasta + automaattinen
  suunnanvaihto radan päässä nollanopeuden varmistuksella (200 ms)
- Käsiajo uudella rakenteella, taajuusmuuttaja hoitaa oman rampituksensa
- ControlWord-arvot (1150/1151) vahvistettu oikeiksi ABB:n virallisesta
  manuaalista — ei tarvinnut korjata
- [2026-11-04] Hälytysloki korjattu: laukeaa nyt Modbus-yhteysvirheestä,
  taajuusmuuttajan vikatilasta (StatusWord bitti 3) ja kuljettimen
  asetusvirheestä kuvitteellisen lämpötilan sijaan
- [2026-11-04] ~460 riviä kuollutta kommentoitua simulaatiokoodia poistettu
  FB_ConveyorSim.TcPOU:sta
- [2026-11-04] Nopeusohjeen ramppaus toteutettu: Kiihdytysaika/Hidastusaika
  vaikuttavat nyt oikeasti nopeusohjeeseen, eivät enää pelkkään
  pysähtymismatkan arviointiin (EI vielä testattu oikealla laitteistolla)
- [2026-11-04] Maksiminopeus (rMaxSpeed_mps) ja Vetopyörän koko
  (rGearPerRev) kytketty oikeasti toimiviksi — olivat aiemmin irrallaan
  PLC-logiikasta vaikka näkyivät muokattavina Parametrit-sivulla
- [2026-11-04] Hälytysten kuittaus toteutettu (bActive-kenttä otettu
  käyttöön, "Kuittaa hälytykset" -painike ja Aktiivinen-sarake HMI:lle)
- [2026-11-04] CSV-lokitus (P_WriteFile) kommentoitu pois jäänteenä
  alkuperäisestä projektista — tilalle MariaDB-lokitus suunnitteilla
  (ks. Ratkaisematta)

Bugit / epäjohdonmukaisuudet

Ei tällä hetkellä tiedossa olevia PLC-koodin bugeja (päivitetty 2026-11-04,
kolme aiemmin tunnettua korjattu, ks. Ratkaistu-osio).

HUOM [2026-11-04]: nopeusohjeen ramppaus- ja maksiminopeuslogiikka
(FB_ConveyorSim) on uutta eikä sitä ole koskaan käännetty tai ajettu
oikeassa TwinCATissa — ei tiedossa olevia bugeja, mutta ei myöskään
vahvistettu virheettömäksi. Ensimmäinen Build koululla on pakollinen
ennen testiajoa.

Ratkaisematta / seuraavat askeleet

1. S1/S2/S3 ovat yhä virtuaalisia (lasketaan sijainnista, ei oikeista
   rajakytkimistä). Päätettävä tuleeko oikeita antureita vai jääkö
   pysyvästi virtuaaliseksi.

2. Lämpötila, pulssianturi/enkooderi ja puhaltimen ohjaus puuttuvat
   kokonaan uudesta koodista. Jos näitä halutaan oikeasti, täytyy
   toteuttaa uudelleen oikealla I/O:lla — ei palauttaa vanhaa simulaatiota.

3. GVL:ssä on useita käyttämättömiä muuttujia vanhalta ajalta (TimeScale,
   FaultSim, bFanAuto, CmdTestDrive, ModeAuto ym.) — siivottavaksi kun
   varmuus tarpeista on saavutettu. [2026-11-04] Listaan lisätty myös
   vanhan lämpötilasimulaation jäänteet (TempAmb, MotorTemp, rAmbRawTemp,
   rMotorRawTemp, PulseCount, PulseFreq, MotorRPM, rTau_s, rKSpeed,
   rTempOver, bAlarmLog) — HMI ei enää näytä niitä, mutta GVL-tason
   siivous on tekemättä.

3b. [2026-11-04] MariaDB-lokitus kesken: "DB konfigurointi" -yhteysprojekti
    on lisätty ratkaisuun TF6420 Database Serverillä, mutta palvelin/kanta/
    käyttäjätiedot ja salasana (syötettävä XAE:n dialogissa, ei tekstinä)
    puuttuvat, eikä PLC-puolen kirjoituskoodia (FB_SQLDatabaseEvt/
    FB_SQLCommandEvt tai FB_PLCDBWriteEvt) ole vielä kirjoitettu. CSV-lokitus
    on jo kommentoitu pois, joten mitään lokitusta ei tällä hetkellä tapahdu.

3c. [2026-11-04] ACS880:n oma vikakoodi (erillinen rekisteri, ei sama kuin
    StatusWordin "Tripped"-bitti) ei ole luettavissa ennen kuin ryhmien
    52/53 rekisterikartoitus on varmistettu koululla — ks. kohta 4b.

4. [2026-11-04, tarkennettu] MODBUS-YHTEYS TAMUUN — kolme eri fyysistä
   taajuusmuuttajaa koulun luokassa, eri tilanteessa kukin. Vaatii käynnin
   koululla, ei korjattavissa etänä.

   Tamu 1 (kaksi RJ-45-liitäntää tamun sisällä: A-paikka EtherCAT,
   B-paikka Modbus):
   - Modbus-yhteys B-paikkaan TOIMII (kommunikaatio onnistuu, laite
     vastaa kyselyihin)
   - MUTTA PLC:n nykyinen ControlWord-logiikka (1150/1151, täysi ABB
     Drives -profiilin READY TO SWITCH ON / OPERATING -sekvenssi) EI
     käynnistä laitetta — tämän yksittäisen laitteen parametrointi on
     poikkeava: vain ControlWordin bitti 0 käynnistää/sammuttaa laitteen
     ja bitti 1 määrää suunnan, ei koko 16-bittistä ABB Drives -profiilia
   - Tarkempi, lopullinen parametrointiohjeistus odottaa yhä uusien
     kenttäväyläkorttien saapumista — ei siis välttämättä vielä
     lopullinen tila
   - FB_DriveModbus.TcPOU:n ControlWord-logiikkaa EI OLE vielä muutettu
     vastaamaan tätä bitti0/bitti1-skeemaa — odottaa päätöstä kannattaako
     tehdä jo nyt vai vasta kun lopullinen ohjeistus saadaan

   Tamu 2 ("demolaite", vain yksi RJ-45 tamun sisällä, pelkkä Modbus
   A-paikassa):
   - Yhteys EI TOIMI ollenkaan

   Tamu 3:
   - Lisäkortti tunnistuu tamulle EtherCAT-tyyppiseksi, mutta ei ole
     testattu tarkemmin — ei tiedossa toimiiko mihinkään

   Yhteenveto: yksikään kolmesta ei toimi suoraan nykyisellä PLC-koodilla
   sellaisenaan. Lupaavin on Tamu 1 (yhteys toimii), mutta vaatii
   ControlWord-logiikan mukauttamisen sen bitti0/bitti1-skeemaan ennen
   kuin käynnistys onnistuu sitä kautta.