Hirdetés

Hirdetés

Új hozzászólás Aktív témák

  • KB.Pifu

    tag

    válasz Szirty #4201 üzenetére

    Szia!

    Gyanakvás helytálló, szép kerek szám, legalábbis számunkra.
    Azt hogy néha stop-ba megy a CPU még nem is feszegettem.

    OB38 hívja Fc8-at, Ob35 FC9-et, mindkettő helytelenül működik és mindkettő a DB8-at használja.
    Először memóriaszavakat használtam, de az sem volt jó

    a kód messze nincs még kész, valószínű akad benne bug elég.

    Ob35

    CALL FC 9
    inout:=DB8.DBW10

    FC9 (=ez csak a teszt, ami szintén 255-ig megy, aztán újrakezdi)
    inout változó, egy integer az In_Out paraméterek között

    L #inout
    INC 1
    T #inout

    OB38
    CALL FC8
    bit :=DB8.DBX6.0
    Pre_state:=DB8.DBW4 //integer az In_Out paraméterek között
    Inc_val :=DB8.DBW0 //integer az In_Out paraméterek között
    Calc_val :=DB8.DBW2 // integer az In_Out paraméterek között

    FC8 ahol a csodának kellene történnie

    VAR_OUTPUT
    bit : BOOL ;
    END_VAR
    VAR_IN_OUT
    Pre_state : INT ;
    Inc_val : INT ;
    Calc_val : INT ;
    END_VAR
    BEGIN
    NETWORK
    TITLE =
    //
    //

    L #Inc_val; //határértékfigyelés
    L 0;
    >=I ;
    JCN end;

    L #Inc_val;
    L 2000;
    <=I ;
    JCN end;

    L #Calc_val; //előző állapot mntése, hogy eldönthető legyen, hogy csökken-e vagy nő
    T #Pre_state;


    A "hist_up"; // i1.0
    JCN end2;


    L #Inc_val;
    INC 1;
    T #Inc_val;

    end2: A "hist down"; // i1.1
    JCN end3;

    L #Inc_val;
    DEC 1;
    T #Inc_val;

    end3: L 10;
    /I ; // ezt lehet real-ben fogom ha eljutok odáig
    T #Calc_val;


    L #Calc_val;
    L 120;
    >I ;
    JCN end1;

    SET ;
    = #bit;

    end1: L #Calc_val; //azt már látom, hogy ez mivel integeren számolok a legtöbbször meg fog egyezni,
    L #Pre_state;
    <I ;
    JCN end;
    L #Calc_val;
    L 108;
    <I ;
    CLR ;
    = #bit;



    end: BE ;

    ez pedig az adatmegjelenítésre használt DB8

    DATA_BLOCK DB 8
    TITLE =
    VERSION : 0.1


    STRUCT
    Inc_Val : INT ; //Temporary placeholder variable
    Calc_Val : INT ;
    pre_state : INT ;
    bit : BOOL ;
    dummy : INT ;
    Obb35 : INT ;
    END_STRUCT ;
    BEGIN
    Inc_Val := 0;
    Calc_Val := 0;
    pre_state := 0;
    bit := FALSE;
    dummy := 0;
    Obb35 := 0;
    END_DATA_BLOC
    K

    Ezekkel csak azt szerettem volna megmutatni, hogy sehol sincs byte, és mivel nem memóriaszót használok, még a keresztbecímzés sem fordul elő
    Remélem elég olvashatóra sikerült ez a kis bejegyzés

    Üdv
    Pifu

Új hozzászólás Aktív témák