Questa funzione da eseguire nelle tasks Slow e Back, permette di leggere e/o impostare variabili del sistema operativo. In OSID occorre specificare la variabile su cui operare.
In caso di lettura Wr:=FALSE il valore della variabile sarà trasferito nel buffer di memoria indicato in Val. In caso di scrittura Wr:=TRUE il valore presente nel buffer di memoria indicato in Val sarà trasferito nella variabile. Occorre dimensionare il buffer coerentemente con il tipo di dato relativo all’OSID definito.
In uscita dalla funzione avremo TRUE se funzione eseguita correttamente, FALSE in caso di errore.
Funzione
CODESYS: Non disponibile
LogicLab: eLLabXUnified12Lib
Descrizione
Wr (BOOL) Comando scrittura.
FALSE: Lettura, il valore della variabile è trasferito nel buffer definito in Val.
TRUE: Scrittura, il valore del buffer definito in Val è trasferito nella variabile.
OSID (SYS_ID) Identificativo variabile (Definizione).
Val (PVOID) Pointer al buffer di memoria che contiene il valore della variabile.
La funzione ritorna un (BOOL) FALSE se errore esecuzione, TRUE se funzione eseguita correttamente
Esempi
Come utilizzare gli esempi.
ST_SysOSIDValue: Alcuni esempi di utilizzo della funzione.
LogicLab (Ptp116, ST_SysOSIDValue)
PROGRAM ST_SysOSIDValue
VAR
i : UDINT; (* Aucxiliary variable *)
AwB : WORD; (* Auxiliary word buffer *)
SetI2CSpeed : BOOL; (* Set I2C bus speed command *)
PLCRestart : BOOL; (* PLC restart command *)
IPValue : ARRAY[0..3] OF BYTE; (* IP address value *)
PCode : STRING[ 10 ]; (* Product code *)
IPAddress : STRING[ 16 ]; (* IP address as a string *)
END_VAR
// *****************************************************************************
// PROGRAM "ST_SysOSIDValue"
// *****************************************************************************
// Read some ETH0 informations.
// -----------------------------------------------------------------------------
// -------------------------------------------------------------------------
// READ ETH0 IP ADDRESS
// -------------------------------------------------------------------------
// Read the IP address and return it as a string.
i:=SysOSIDValue(FALSE, OSID_ETH0_IP, ADR(IPValue));
i:=SysVsnprintf(ADR(IPAddress), SIZEOF(IPAddress), ADR('%u.'), BYTE_TYPE, ADR(IPValue[0]));
i:=SysCVsnprintf(ADR(IPAddress), SIZEOF(IPAddress), ADR('%u.'), BYTE_TYPE, ADR(IPValue[1]));
i:=SysCVsnprintf(ADR(IPAddress), SIZEOF(IPAddress), ADR('%u.'), BYTE_TYPE, ADR(IPValue[2]));
i:=SysCVsnprintf(ADR(IPAddress), SIZEOF(IPAddress), ADR('%u'), BYTE_TYPE, ADR(IPValue[3]));
// -------------------------------------------------------------------------
// SOME EXAMPLES
// -------------------------------------------------------------------------
// Read the product code.
i:=SysOSIDValue(FALSE, OSID_PRODUCT_CODE, ADR(PCode));
// Set the I2C bus speed to 200kH (Only for CortexM7 systems).
IF (SetI2CSpeed) THEN
AwB:=200; //I2C bus speed (200kHz)
SetI2CSpeed:=FALSE; //Stt I2C bus speed
i:=SysOSIDValue(TRUE, OSID_I2C_EXT_BUS_FREQ, ADR(AwB));
END_IF;
// Restart the PLC program. It doesn't need to reset the command, it will be
// automatically reset on PLC program restart.
IF (PLCRestart) THEN
i:=SysOSIDValue(TRUE, OSID_PLC_COMMAND, ADR('restart'));
END_IF;
// [End of file]