WHILE bCondition DO // Perform action WAIT T#10ms; // Allow PLC cycle to continue END_WHILE By default, variables reset on power cycle. Use VAR_RETAIN to preserve values.
FUNCTION F_ScaleInput : INT VAR_INPUT rRaw : REAL; // 0.0 to 10.0 Volts rMin : REAL; rMax : REAL; END_VAR VAR_TEMP rPercent : REAL; END_VAR rPercent := (rRaw - 0.0) / (10.0 - 0.0); // Normalize F_ScaleInput := REAL_TO_INT(rMin + (rMax - rMin) * rPercent); END_FUNCTION Real-time control relies on timing. RC7 uses the TON (Timer ON delay) function block. rc7 script
// Accessing the third joint arm[3].rPosition := 45.5; Even experienced programmers hit snags. Here are the top three RC7 script errors and how to fix them. Pitfall 1: Implicit Type Conversion RC7 does not convert types automatically. Wrong: rResult := 5 / 2; (Returns 2.0 due to integer division) Correct: rResult := 5.0 / 2.0; (Returns 2.5) Pitfall 2: Infinite Loops If you write WHILE TRUE DO ... END_WHILE without a WAIT statement, your controller will crash within seconds. Always yield. WHILE bCondition DO // Perform action WAIT T#10ms;
// FOR loop for array processing FOR i := 0 TO 99 BY 1 DO nSum := nSum + nDataArray[i]; END_FOR // WHILE loop with timeout protection WHILE bBusy AND nTimer < 1000 DO WAIT T#1ms; // Execute next cycle nTimer := nTimer + 1; END_WHILE 1. User-Defined Functions (UDFs) Modularize your code to avoid repetition. RC7 uses the TON (Timer ON delay) function block
Remember the golden rules: respect type safety, manage your loop timers, and modularize your logic. Armed with the syntax, examples, and debugging tips provided in this article, you are now ready to write and deploy advanced RC7 scripts in your own automation projects.
VAR_RETAIN nProductionCount : INT; // Survives reboot END_VAR Let’s synthesize everything into a practical RC7 script for a pick-and-place robot.