Operazioni con logica booleana - Corrispondenza schema Ladder / codice

CIao a tutti .

Mi chiedevo quale fosse il modo piu intelligente di scrivere la funzione rappresentata nel disegno.

E' il classico schema elettrico stile Ladder, che altro non è che l'equivalente esatto di quello che sarebbe lo schema elettrico in logica cablata, se non esistessero i plc.

La funzione, salvo errori, è :

Y3 = X9 ( ( X35 * X7 * X20) + ( X4 * X14 * ( x10 + X20 + X11 ) ) )

Tutte le variabili sono ovviamente di tipo booleano,

  • sta per AND
  • sta per OR
    X20 indica X20 negato

Con riferimento allo schema allegato, guardo il ramo inferiore composto da un tre variabili su cui agisce un operatore AND; in C si scrive così (X35 & X7 & X20).

Il ramo centrale composto da: X20, X11, in C scrive così: (X20 & X11)

Il ramo principale composto da: X10, X14, X4, X9 comporta:
Un OR tra (X10 OR (X20 AND X11)); in C (X10 | (X20 & X11))

Questo deve essere posto in AND con X14 e X4, quindi: ( ( X10 | ( X20 & X11 ) ) & ( X14 & X4 ) )
Tutto questo è posto in OR con il terzo ramo, quindi:

( ( ( X10 | ( X20 & X11 ) ) & ( X14 & X4 ) ) | ( X35 & X7 & X20 ) )

Manca solo l'ultimo AND di X9, quindi:
( ( ( ( X10 | ( X20 & X11 ) ) & ( X14 & X4 ) ) | ( X35 & X7 & X20 ) ) & X9 )

Credo sia corretto, ma ho dubbi sul concetto di negato perché in algebra C esiste l'operatore negazione che trasforma uno vero in falso e viceversa, mentre in LADDER sta ad indicare circuito chiuso.

Se X9, X35 ecc sono delle variabili booleane, quando il loro valore è diverso da 0 sono da considerare vere, false se valgono zero.

Quindi penso che in ladder si disegna X20 quando il valore è 1.

Mentre se alcune variabili li vuoi negare in C puoi anteporre loro il simbolo !, es: !X20

Se il valore di X20 è 1 sottoponendolo all'operatore ! otterrai zero come risultato, se il valore di X20 è 0 otterrai 1.

Spero ti sia di aiuto, io sono lontano dal ladder e molto vicino all'algebra di bool quindi prendi il mio intervento con le pinze ed aspetta qualche altra conferma.

Ciao.