Spesso è utile estrarre un bit da un byte per diminuire il numero di tag in scambio con il PLC
Di seguito il codice necessario per settare un bit all’interno di un byte
BOOL SetTagByteBit(char* pszTagDest, int iNumBit, short int iValue)
{
int iRit=TRUE;
char szTagDest[NC]; //contiene nome tag
int iAgg;iAgg=iNumBit;
//Crea nome destinazione
sprintf(szTagDest,”%s”,pszTagDest);if(iValue)
{
//Setta il bit
SetTagByteWait(szTagDest,GetTagByte(szTagDest) | (1<<iAgg));
}
else
{
//Resetta il bit
SetTagByteWait(szTagDest,GetTagByte(szTagDest) &~ (1<<iAgg));
}
return(iRit);}
Di seguito il codice necessario per ottenere lo stato di un bit all’interno di un byte.
BOOL GetTagByteBit(char* pszTagSource, int iNumBit)
{int iRit;
int iAgg;
char szTagSource[NC]; //contiene nome tag//Crea nome sorgente
sprintf(szTagSource,”%s”,pszTagSource);iAgg=iNumBit;
//Leggi valore
if(GetTagByte(szTagSource) & (1<<iAgg))
{
iRit=TRUE;
}
else
{
iRit=FALSE;
}
return(iRit);}
Le funzioni servono di esempio ma sono facilmente estendibili per la stessa operazione su una word o una doppiaword.

Commenti recenti