Text structurat

Acest articol nu citează nicio sursă și poate conține informații inexacte (raportat în martie 2021).

Dacă aveți cărți de referință sau articole sau dacă știți de site - uri web de calitate care se ocupă cu subiectul discutat aici, vă rugăm să completați articolul prin referințele de utile pentru verificabil și prin conectarea acestora la „ Note secțiunea“.  Și referințe  „( edita articol ).

Găsiți surse în „  Text structurat  ”  :

Textul structurat , sau Text structurat ( ST ) în limba engleză , este una dintre cele cinci limbaje de programare pentru controlerele logice programabile (PLC) definite de standardul IEC 61131-3 . Este un limbaj de nivel înalt și structura sa amintește de limbile Ada și Pascal .

Formatul acestor fișiere a fost standardizat în XML de către PLCopen .

Sunt acceptate instrucțiuni mai mult sau mai puțin complexe, de exemplu:

Program de probă

(* simple state machine *) TxtState := STATES[StateMachine];   CASE StateMachine OF 1: ClosingValve(); ELSE  ;; BadCase(); END_CASE;

Un alt exemplu de programare ST

// PLC configuration CONFIGURATION DefaultCfg VAR_GLOBAL b_Start_Stop  : BOOL; // Global variable to represent a boolean. b_ON_OFF  : BOOL; // Global variable to represent a boolean. Start_Stop AT %IX0.0:BOOL; // Digital input of the PLC (Address 0.0) ON_OFF AT %QX0.0:BOOL; // Digital output of the PLC (Address 0.0). (Coil) END_VAR // Schedule the main program to be executed every 20 ms TASK Tick(INTERVAL := t#20ms); PROGRAM Main WITH Tick : Monitor_Start_Stop; END_CONFIGURATION PROGRAM Monitor_Start_Stop // Actual Program VAR_EXTERNAL Start_Stop  : BOOL; ON_OFF  : BOOL; END_VAR VAR // Temporary variables for logic handling ONS_Trig  : BOOL; Rising_ONS  : BOOL; END_VAR // Start of Logic // Catch the Rising Edge One Shot of the Start_Stop input ONS_Trig  := Start_Stop AND NOT Rising_ONS; // Main Logic for Run_Contact -- Toggle ON / Toggle OFF --- ON_OFF := (ONS_Trig AND NOT ON_OFF) OR (ON_OFF AND NOT ONS_Trig); // Rising One Shot logic Rising_ONS := Start_Stop; END_PROGRAM Exemplu de declarare a unui bloc funcțional //======================================================================= // Function Block Timed Counter : Incremental count of the timed interval //======================================================================= FUNCTION_BLOCK FB_Timed_Counter VAR_INPUT Execute  : BOOL := FALSE; // Trigger signal to begin Timed Counting Time_Increment  : REAL := 1.25; // Enter Cycle Time (Seconds) between counts Count_Cycles  : INT  := 20; // Number of Desired Count Cycles END_VAR VAR_OUTPUT Timer_Done_Bit  : BOOL := FALSE; // One Shot Bit indicating Timer Cycle Done Count_Complete  : BOOL := FALSE; // Output Bit indicating the Count is complete Current_Count  : INT  := 0; // Accumulating Value of Counter END_VAR VAR CycleTimer  : TON; // Timer FB from Command Library CycleCounter  : CTU; // Counter FB from Command Library TimerPreset  : TIME; // Converted Time_Increment in Seconds to MS END_VAR // Start of Function Block programming TimerPreset := REAL_TO_TIME(in := Time_Increment) * 1000; CycleTimer( in := Execute AND NOT CycleTimer.Q ,pt := TimerPreset); Timer_Done_Bit := CycleTimer.Q; CycleCounter( cu := CycleTimer.Q ,r := NOT Execute ,pv := Count_Cycles); Current_Count := CycleCounter.cv; Count_Complete := CycleCounter.q; END_FUNCTION_BLOCK

Legătură