📖 Scenario: You are setting up a simple Modbus RTU communication between a PLC and a temperature sensor. The PLC will read temperature data from the sensor using Modbus RTU protocol.
🎯 Goal: Build a basic Modbus RTU communication script that reads a temperature value from a sensor and displays it.
📋 What You'll Learn
Create a variable for the Modbus slave address
Set up the Modbus RTU communication parameters
Read the temperature register from the sensor
Display the temperature value
💡 Why This Matters
🌍 Real World
Modbus RTU is widely used in industrial automation to connect PLCs with sensors and devices over serial communication.
💼 Career
Understanding Modbus RTU communication is essential for automation engineers and technicians working with PLCs and industrial networks.
Progress0 / 4 steps
1
Set the Modbus Slave Address
Create a variable called slave_address and set it to 1 to represent the Modbus device address.
PLC Programming
Hint
The slave address is the ID of the device you want to communicate with. Usually, it is a number like 1.
2
Configure Modbus RTU Parameters
Create a dictionary called modbus_config with keys baudrate set to 9600, parity set to 'N', and stopbits set to 1.
PLC Programming
Hint
These settings define how the PLC talks to the sensor: speed, parity check, and stop bits.
3
Read Temperature Register
Create a variable called temperature_register and set it to 100. Then create a variable called temperature_value and simulate reading by setting it to 25.5.
PLC Programming
Hint
The register number 100 is where the temperature is stored. We simulate reading 25.5 degrees.
4
Display the Temperature Value
Write a print statement to display the text "Temperature: 25.5 °C" using the variable temperature_value.
PLC Programming
Hint
Use an f-string to insert the temperature_value into the print statement.
Practice
(1/5)
1. What is the main purpose of Modbus RTU communication in PLC programming?
easy
A. To exchange data between devices over serial communication
B. To create graphical user interfaces
C. To compile PLC programs
D. To store data in cloud servers
Solution
Step 1: Understand Modbus RTU basics
Modbus RTU is a protocol used for serial communication between devices like PLCs and sensors.
Step 2: Identify the main function
Its main function is to exchange data by sending requests and responses over serial lines.
Final Answer:
To exchange data between devices over serial communication -> Option A
Quick Check:
Modbus RTU = Data exchange over serial [OK]
Hint: Modbus RTU is about device data exchange via serial lines [OK]
Common Mistakes:
Confusing Modbus RTU with programming languages
Thinking it creates user interfaces
Assuming it stores data remotely
2. Which of the following is the correct format for a Modbus RTU request frame?
easy
A. CRC + Device Address + Function Code + Data
B. Device Address + Function Code + Data + CRC
C. Data + Device Address + Function Code + CRC
D. Function Code + Device Address + Data + CRC
Solution
Step 1: Recall Modbus RTU frame structure
The request frame starts with the device address, followed by the function code, then data, and ends with CRC for error checking.
Step 2: Match the correct sequence
Device Address + Function Code + Data + CRC matches this exact order: Device Address + Function Code + Data + CRC.
Final Answer:
Device Address + Function Code + Data + CRC -> Option B
Quick Check:
Frame order = Address, Function, Data, CRC [OK]
Hint: Remember: Address first, then function, data, and CRC last [OK]
Common Mistakes:
Mixing up the order of function code and device address
Placing CRC at the start instead of the end
Confusing data position in the frame
3. Given this Modbus RTU request frame in hex: 01 03 00 0A 00 02 C5 CD, what does the function code 03 represent?
medium
A. Write Multiple Registers
B. Write Single Coil
C. Read Input Status
D. Read Holding Registers
Solution
Step 1: Identify the function code in the frame
The second byte in the frame is 03, which is the function code.
Step 2: Recall Modbus function codes
Function code 03 is used to read holding registers in Modbus RTU communication.
Final Answer:
Read Holding Registers -> Option D
Quick Check:
Function code 03 = Read Holding Registers [OK]
Hint: Function code 03 always reads holding registers [OK]
Common Mistakes:
Confusing function code 03 with write operations
Mixing read input status (code 02) with 03
Ignoring the function code position in the frame
4. You wrote a Modbus RTU request but the PLC does not respond. Which of these is the most likely error in your request frame?
medium
A. Using ASCII instead of RTU mode
B. Sending data without device address
C. Incorrect CRC value
D. Using function code 99
Solution
Step 1: Check common communication errors
Incorrect CRC causes the PLC to reject the frame because it detects data corruption.
Step 2: Evaluate other options
Using ASCII mode or missing device address would cause errors, but CRC error is the most common cause of no response. Function code 99 is invalid but usually triggers an error response, not silence.
Final Answer:
Incorrect CRC value -> Option C
Quick Check:
Bad CRC = No response from PLC [OK]
Hint: Always verify CRC to avoid silent communication failures [OK]
Common Mistakes:
Ignoring CRC errors
Assuming wrong function code causes no response
Confusing ASCII and RTU modes
5. You want to read 4 consecutive holding registers starting at address 100 from a device with address 5 using Modbus RTU. Which request frame (in hex) correctly represents this?
hard
A. 05 03 00 64 00 04 45 C9
B. 05 04 00 64 00 04 45 C9
C. 01 03 00 64 00 04 45 C9
D. 05 03 00 65 00 04 45 C9
Solution
Step 1: Understand the frame components
Device address is 05, function code for reading holding registers is 03, starting address 100 in hex is 00 64, number of registers to read is 00 04, followed by CRC.