PLC-to-SCADA communication lets a machine controller talk to a monitoring system. This helps people see and control machines from a computer.
You want to watch machine status on a screen in real time.
You need to control machines remotely from a control room.
You want to log machine data for later analysis.
You want alarms to show up on a computer when something goes wrong.
You want to automate reports about machine performance.
Syntax
PLC Programming
PLC side:
// Define communication parameters
COMM_INIT(protocol, ip_address, port)
// Send data to SCADA
COMM_SEND(data_tag, value)
// Receive commands from SCADA
value = COMM_RECEIVE(command_tag)
SCADA side:
// Connect to PLC
connectToPLC(ip_address, port)
// Read data from PLC
value = readTag(data_tag)
// Write command to PLC
writeTag(command_tag, value)
Exact commands depend on your PLC and SCADA software.
Communication often uses protocols like Modbus TCP or OPC UA.
Examples
This sends the temperature value 75.5 to the SCADA system under the tag "TempSensor1".
PLC Programming
// PLC example: send temperature value
COMM_SEND("TempSensor1", 75.5)
This reads the temperature value from the PLC and prints it on the SCADA screen.
PLC Programming
// SCADA example: read temperature
value = readTag("TempSensor1")
print(value)
The PLC waits for a start command from SCADA and starts the machine when received.
PLC Programming
// PLC example: receive start command
start = COMM_RECEIVE("StartButton")
if start == 1 then
// start machine
end if
Sample Program
This PLC program connects to SCADA using Modbus TCP, sends a temperature value, and listens for a start command. It prints machine status based on the command.
PLC Programming
// Simple PLC program snippet
// Initialize communication
COMM_INIT("ModbusTCP", "192.168.1.10", 502)
// Send sensor value
temperature = 72.3
COMM_SEND("TempSensor1", temperature)
// Receive command
start_command = COMM_RECEIVE("StartButton")
if start_command == 1 then
print("Machine started")
elseprint("Machine stopped")
end if
OutputSuccess
Important Notes
Always test communication in a safe environment before using on real machines.
Network settings must match on both PLC and SCADA sides.
Use clear tag names to avoid confusion.
Summary
PLC-to-SCADA communication lets machines and computers talk.
It uses protocols like Modbus TCP to send and receive data.
This helps monitor and control machines remotely.
Practice
(1/5)
1. What is the main purpose of PLC-to-SCADA communication?
easy
A. To program the PLC hardware directly
B. To replace the PLC with a SCADA system
C. To allow remote control and monitoring of machines
D. To connect two PLCs without a SCADA system
Solution
Step 1: Understand the role of PLC and SCADA
PLC controls machines locally, SCADA monitors and controls remotely.
Step 2: Identify communication purpose
Communication enables SCADA to read data and send commands to PLC for remote control.
Final Answer:
To allow remote control and monitoring of machines -> Option C
Quick Check:
PLC-to-SCADA communication = remote control and monitoring [OK]
Hint: Think: Who controls and who monitors remotely? [OK]
Common Mistakes:
Confusing PLC programming with communication
Thinking SCADA replaces PLC
Assuming PLCs communicate without SCADA
2. Which of the following is a common protocol used for PLC-to-SCADA communication?
easy
A. Modbus
B. FTP
C. HTTP
D. SMTP
Solution
Step 1: Recall common industrial communication protocols
Modbus and OPC UA are widely used for PLC-to-SCADA data exchange.
Step 2: Identify correct protocol from options
Modbus is a standard protocol for PLC communication; HTTP, FTP, SMTP are not typical for this use.
Final Answer:
Modbus -> Option A
Quick Check:
Industrial protocol for PLC-SCADA = Modbus [OK]
Hint: Industrial control uses Modbus, not web or email protocols [OK]
Common Mistakes:
Choosing HTTP thinking it's for all network communication
Confusing FTP or SMTP with control protocols
Not knowing Modbus is designed for industrial use
3. Given this PLC script snippet reading a SCADA command:
IF SCADA_Command = 1 THEN
Motor_Start := TRUE;
ELSE
Motor_Start := FALSE;
END_IF;
What will be the value of Motor_Start if SCADA_Command is 0?
medium
A. Error
B. TRUE
C. 1
D. FALSE
Solution
Step 1: Analyze the IF condition
The condition checks if SCADA_Command equals 1; if true, Motor_Start is TRUE.
Step 2: Evaluate with SCADA_Command = 0
Since 0 is not equal to 1, ELSE branch runs, setting Motor_Start to FALSE.
Final Answer:
FALSE -> Option D
Quick Check:
SCADA_Command=0 means Motor_Start=FALSE [OK]
Hint: IF equals 1? No? Then FALSE [OK]
Common Mistakes:
Assuming Motor_Start stays TRUE by default
Confusing numeric 0 with TRUE
Expecting error due to zero value
4. Identify the error in this PLC-to-SCADA communication snippet:
IF SCADA_Status = TRUE THEN
Alarm := TRUE
ELSE
Alarm := FALSE;
END_IF;
medium
A. Missing semicolon after Alarm := TRUE
B. Incorrect use of ELSE statement
C. SCADA_Status should be compared to 1, not TRUE
D. END_IF is not needed
Solution
Step 1: Check statement syntax
Each assignment must end with a semicolon in PLC languages.
Step 2: Locate missing semicolon
Alarm := TRUE line lacks a semicolon at the end, causing syntax error.
Final Answer:
Missing semicolon after Alarm := TRUE -> Option A
Quick Check:
Semicolon missing after assignment = syntax error [OK]
Hint: Every assignment needs a semicolon [OK]
Common Mistakes:
Ignoring missing semicolon errors
Thinking ELSE syntax is wrong
Confusing boolean TRUE with numeric 1
5. You want to send a temperature value from PLC to SCADA every 5 seconds using Modbus. Which approach is best?
hard
A. Send temperature as a string message over HTTP every 5 seconds
B. Write temperature to a Modbus register and update it every 5 seconds
C. Use SCADA to poll the PLC once and never update
D. Send temperature only when it changes, ignoring timing
Solution
Step 1: Understand Modbus data exchange
Modbus uses registers to hold data; PLC writes values, SCADA reads them.
Step 2: Choose update method for regular timing
Writing temperature to a register and updating every 5 seconds ensures SCADA gets fresh data regularly.
Final Answer:
Write temperature to a Modbus register and update it every 5 seconds -> Option B
Quick Check:
Regular register update = reliable Modbus communication [OK]
Hint: Use Modbus registers for periodic data updates [OK]
Common Mistakes:
Using HTTP which is not standard for PLC-Modbus
Polling only once misses updates
Ignoring timing causes stale data
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.