logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

CROUZET HMI Przesyłanie zawartości pamięci HMI do PLC za pomocą macra

salas85 04 Paź 2020 20:28 438 3
  • #1 18959124
    salas85
    Poziom 2  
    Posty: 2
    Witam,

    Piszę program dla HMI Crouzet CTP 107, który po Ethernecie komunikuje się z PLC em4 firmy Crouzet.
    Program po wpisaniu do pamięci HMI wybranych wartości zapisuje je do odpowiednich komórek pamięci HMI (RW) i następnie
    po wciśnięciu przycisku funkcyjnego uruchamia macro, które ma przesłać dane na odpowiednie wejścia analogowe PLC (XWIN).
    W tej chwili wygląda to tak, że po wpisaniu wartości i przesłaniu ich do PLC, program wystawia na XWIN odpowiednie wartości z HMI (przynajmniej na ułamki s), a następnie na kilku (dokładnie na XWIN 19,22) wyjściach nadpisuje je "0".
    Wartości w pamięciach RW się nie zmieniają, sprawdziłem to.

    W samym sterowniku PLC jest użyty Multi/Demulti plekser i część danych jest przekazywana do niego z użyciem funkcji XBIN_bit i akurat te wartości przypisywane są prawidłowo

    CROUZET HMI Przesyłanie zawartości pamięci HMI do PLC za pomocą macra

    Poniżej zawartość makra:
    macro_command main()
    //czasy
    int a
    a=0
    DELAY(50)
    GetData(a, "Local HMI", RW, 110, 1)
    SetDataEx(a, "Crouzet em4 Ethernet Modbus TCP/IP", XWIN, 22, 1)
    DELAY(250)
    int b
    b=0
    DELAY(50)
    GetData(b, "Local HMI", RW, 120, 1)
    SetData(b, "Crouzet em4 Ethernet Modbus TCP/IP", XWIN, 23, 1)
    DELAY(250)
    int c
    c=0
    DELAY(50)
    GetData(c, "Local HMI", RW, 130, 1)
    SetData(c, "Crouzet em4 Ethernet Modbus TCP/IP", XWIN, 24, 1)
    DELAY(250)
    int d
    d=0
    DELAY(50)
    GetData(d, "Local HMI", RW, 140, 1)
    SetData(d, "Crouzet em4 Ethernet Modbus TCP/IP", XWIN, 17, 1)
    DELAY(250)
    int e
    e=0
    DELAY(50)
    GetData(e, "Local HMI", RW, 150, 1)
    SetData(e, "Crouzet em4 Ethernet Modbus TCP/IP", XWIN, 19, 1)
    DELAY(250)
    int f
    f=0
    DELAY(50)
    GetData(f, "Local HMI", RW, 160, 1)
    SetData(f, "Crouzet em4 Ethernet Modbus TCP/IP", XWIN, 18, 1)
    DELAY(250)
    int g
    g=0
    DELAY(50)
    GetData(g, "Local HMI", RW, 170, 1)
    SetData(g, "Crouzet em4 Ethernet Modbus TCP/IP", XWIN, 21, 1)
    DELAY(250)
    //wyrzutnik hydrauliczny - Multiplekser !!! konieczne kasowanie bitu przed wystawieniem
    int h
    GetData(h, "Local HMI", RW, 17, 1)
    SetData(h, "Crouzet em4 Ethernet Modbus TCP/IP", XWIN, 1, 1)
    int eh
    eh=0
    SetData(eh, "Crouzet em4 Ethernet Modbus TCP/IP", XBIN_bit, 1000, 1)
    DELAY(250)
    eh=1
    DELAY(250)
    SetData(eh, "Crouzet em4 Ethernet Modbus TCP/IP", XBIN_bit, 1000, 1)
    DELAY(250)
    int i
    GetData(i, "Local HMI", RW, 18, 1)
    SetData(i, "Crouzet em4 Ethernet Modbus TCP/IP", XWIN, 1, 1)
    int ei
    ei=0
    SetData(ei, "Crouzet em4 Ethernet Modbus TCP/IP", XBIN_bit, 1002, 1)
    DELAY(250)
    ei=1
    SetData(ei, "Crouzet em4 Ethernet Modbus TCP/IP", XBIN_bit, 1002, 1)
    DELAY(250)
    int j
    GetData(j, "Local HMI", RW, 19, 1)
    SetData(j, "Crouzet em4 Ethernet Modbus TCP/IP", XWIN, 1, 1)
    int ej
    ej=0
    SetData(ej, "Crouzet em4 Ethernet Modbus TCP/IP", XBIN_bit, 1003, 1)
    DELAY(250)
    ej=1
    SetData(ej, "Crouzet em4 Ethernet Modbus TCP/IP", XBIN_bit, 1003, 1)
    DELAY(250)
    int k
    GetData(k, "Local HMI", RW, 20, 1)
    SetData(k, "Crouzet em4 Ethernet Modbus TCP/IP", XWIN, 1, 1)
    int ek
    ek=0
    SetData(ek, "Crouzet em4 Ethernet Modbus TCP/IP", XBIN_bit, 1004, 1)
    DELAY(250)
    ek=1
    SetData(ek, "Crouzet em4 Ethernet Modbus TCP/IP", XBIN_bit, 1004, 1)
    DELAY(250)
    //FORMA1
    int l
    GetData(l, "Local HMI", RW, 31, 1)
    SetData(l, "Crouzet em4 Ethernet Modbus TCP/IP", XWIN, 1, 1)
    SetData(l, "Crouzet em4 Ethernet Modbus TCP/IP", XBIN_bit, 1005, 1)
    DELAY(250)
    int m
    GetData(m, "Local HMI", RW, 32, 1)
    SetData(m, "Crouzet em4 Ethernet Modbus TCP/IP", XWIN, 1, 1)
    SetData(m, "Crouzet em4 Ethernet Modbus TCP/IP", XBIN_bit, 1006, 1)
    DELAY(250)
    int n
    GetData(n, "Local HMI", RW, 33, 1)
    SetData(n, "Crouzet em4 Ethernet Modbus TCP/IP", XWIN, 1, 1)
    SetData(n, "Crouzet em4 Ethernet Modbus TCP/IP", XBIN_bit, 1007, 1)
    DELAY(250)
    int o
    GetData(o, "Local HMI", RW, 34, 1)
    SetData(o, "Crouzet em4 Ethernet Modbus TCP/IP", XWIN, 9, 1)
    SetData(o, "Crouzet em4 Ethernet Modbus TCP/IP", XBIN_bit, 1008, 1)
    DELAY(250)
    int p
    GetData(p, "Local HMI", RW, 35, 1)
    SetData(p, "Crouzet em4 Ethernet Modbus TCP/IP", XWIN, 9, 1)
    SetData(p, "Crouzet em4 Ethernet Modbus TCP/IP", XBIN_bit, 1009, 1)
    DELAY(250)
    int r
    GetData(r, "Local HMI", RW, 36, 1)
    SetData(r, "Crouzet em4 Ethernet Modbus TCP/IP", XWIN, 9, 1)
    SetData(r, "Crouzet em4 Ethernet Modbus TCP/IP", XBIN_bit, 1010, 1)
    DELAY(250)
    //ZABEZPIECZENIE FORMY
    int s
    GetData(s, "Local HMI", RW, 39, 1)
    SetData(s, "Crouzet em4 Ethernet Modbus TCP/IP", XWIN, 9, 1)
    SetData(s, "Crouzet em4 Ethernet Modbus TCP/IP", XBIN_bit, 1011, 1)
    DELAY(250)
    int t
    GetData(t, "Local HMI", RW, 40, 1)
    SetData(t, "Crouzet em4 Ethernet Modbus TCP/IP", XWIN, 9, 1)
    SetData(t, "Crouzet em4 Ethernet Modbus TCP/IP", XBIN_bit, 1012, 1)
    DELAY(250)
    int u
    GetData(u, "Local HMI", RW, 41, 1)
    SetData(u, "Crouzet em4 Ethernet Modbus TCP/IP", XWIN, 9, 1)
    SetData(u, "Crouzet em4 Ethernet Modbus TCP/IP", XBIN_bit, 1013, 1)
    DELAY(250)


    //STÓŁ
    int x
    GetData(x, "Local HMI", RW, 44, 1)
    SetData(x, "Crouzet em4 Ethernet Modbus TCP/IP", XWIN, 2, 1)
    int y
    GetData(y, "Local HMI", RW, 45, 1)
    SetData(y, "Crouzet em4 Ethernet Modbus TCP/IP", XWIN, 3, 1)
    int z
    GetData(z, "Local HMI", RW, 46, 1)
    SetData(z, "Crouzet em4 Ethernet Modbus TCP/IP", XWIN, 4, 1)

    //AGREGAT
    int aa
    GetData(aa, "Local HMI", RW, 48, 1)
    SetData(aa, "Crouzet em4 Ethernet Modbus TCP/IP", XWIN, 7, 1)
    int ab
    GetData(ab, "Local HMI", RW, 49, 1)
    SetData(ab, "Crouzet em4 Ethernet Modbus TCP/IP", XWIN, 8, 1)
    int ac
    GetData(ac, "Local HMI", RW, 50, 1)
    SetData(ac, "Crouzet em4 Ethernet Modbus TCP/IP", XWIN, 10, 1)

    //WTRYSK/Ślimak
    int ad
    GetData(ad, "Local HMI", RW, 52, 1)
    SetData(ad, "Crouzet em4 Ethernet Modbus TCP/IP", XWIN, 11, 1)
    int ae
    GetData(ae, "Local HMI", RW, 53, 1)
    SetData(ae, "Crouzet em4 Ethernet Modbus TCP/IP", XWIN, 12, 1)
    int af
    GetData(af, "Local HMI", RW, 54, 1)
    SetData(af, "Crouzet em4 Ethernet Modbus TCP/IP", XWIN, 13, 1)


    //ŚLIMAK/DEKOMPRESJA
    int ah
    GetData(ah, "Local HMI", RW, 57, 1)
    SetData(ah, "Crouzet em4 Ethernet Modbus TCP/IP", XWIN, 15, 1)
    int ai
    GetData(ai, "Local HMI", RW, 58, 1)
    SetData(ai, "Crouzet em4 Ethernet Modbus TCP/IP", XWIN, 16, 1)
    int aj
    GetData(aj, "Local HMI", RW, 59, 1)
    SetData(aj, "Crouzet em4 Ethernet Modbus TCP/IP", XWIN, 9, 1)
    SetData(aj, "Crouzet em4 Ethernet Modbus TCP/IP", XBIN_bit, 1014, 1)
    int ak
    GetData(ak, "Local HMI", RW, 60, 1)
    SetData(ak, "Crouzet em4 Ethernet Modbus TCP/IP", XWIN, 6, 1)
    int al
    GetData(al, "Local HMI", RW, 61, 1)
    SetData(al, "Crouzet em4 Ethernet Modbus TCP/IP", XWIN, 14, 1)

    //CENTRALNE SMAROWANIE
    int am
    GetData(am, "Local HMI", RW, 63, 1)
    SetData(am, "Crouzet em4 Ethernet Modbus TCP/IP", XWIN, 20, 1)


    //WYRZUTNIK POWIETRZE
    int ao
    GetData(ao, "Local HMI", RW, 66, 1)
    SetData(ao, "Crouzet em4 Ethernet Modbus TCP/IP", XWIN, 5, 1)


    //ponowne nadpisanie wartosci XWIN
    SetDataEx(a, "Crouzet em4 Ethernet Modbus TCP/IP", XWIN, 22, 1)


    end macro_command
  • #2 18959616
    vindevil
    Poziom 27  
    Posty: 801
    Pomógł: 86
    Ocena: 73
    W samym plc wartości w blokach nadpisywać się powinny z narastającym zboczu . Kolejny skan programu przypisuję 0 gdyż z hmi nie ma wysyłania pliku.
    Tak sobie myślę...
  • #3 18959813
    salas85
    Poziom 2  
    Posty: 2
    W tej chwili XWIN sa wysterowane bezposrednio z HMI. Sprobuje dodac uklad podtrzymania w plc Naromiast nadal zaatanawia mnie dlaczego tylko wybrane wejscia sa nadpisywane.
  • #4 18959952
    vindevil
    Poziom 27  
    Posty: 801
    Pomógł: 86
    Ocena: 73
    W/g mnie hmi wysyła wartości w jednej ramce w kolejnej 0 . Więc skan plc odczytuję zero.
REKLAMA