Well, AFAIR, the FreeRTOS documentation explains this. Have you read it?
Yes I gone throug example plant control but I don't understand example in context of task state
https://www.freertos.org/tutorial/solution2.html
https://www.freertos.org/RTOS-task-states.html
https://en.wikipedia.org/wiki/Process_state
Let's try again...
A process, or task, performs a certain function. It is simply a block of code (in the case of computer tasks) that needs to function from time to time to accomplish something but it doesn't need to run constantly so it can go to sleep until it is required.
There exists, in the case of an RTOS, a master scheduler responsible for getting these tasks started (or restarted) based on a list of tasks, their
priority and their state. If a task is suspended, it will not be scheduled to run so we're done talking about that state. Something has to change the status of a suspended task but it is external to the task itself because it won't be scheduled. The scheduler still knows about the Suspended task but pays no attention to it. Until its state is changed to Ready (available to be scheduled), nothing happens. Initialization code might run from startup and suspend itself never to run again (until the next reset).
Looking again at the transition diagram, there will be a list of tasks in the Ready state. These are Ready to be scheduled and will be changed to Running, one by one, in priority order, by the scheduler. At every tick, the scheduler looks at the priority of the Running task and those in the list of Ready tasks and picks one to start (or restart). Remember, tasks lose their focus based on a timer tick and may not be complete and might be the type of task that is never truly complete.
OK, the scheduler starts a task and allows it to run for one tick. At the end of the tick period, the task might revert to Ready or remain Running, depending upon task priority. If there is a higher (or equal) priority task Ready to run, it gets to run for the next tick and the previous task is marked Ready.
Tasks can also be Blocked - they're not Ready to be started. They are waiting on an event of some kind. Perhaps a character received on the USART and the event posted by the interrupt handler (puts the char in a queue). The scheduler now has another Ready task to schedule, again depending on priority. The task for serial input probably builds a line of text before it posts the line in a queue to an even higher level task which might interpret the line as a command string. This command string could even be interpreted as an event to unBlock another task.
The task transition diagram and description is very specific and quite correct. Just imagine some piece of code and think about how it would transition between the states and WHY.
You can imagine each task as an entry in a ledger. The entry will have the task name, it's current state, a pointer to what it's waiting on to transition to the next state, the memory address of the next instruction in the task (remember, it was stopped at a timer tick, not necessarily completion).
Suppose you are the scheduler. How would you handle a dozen different tasks such that each received the CPU resources it needs in a timely manner. You can't overlook a task, task states change as does the priority (yes, you can mangle the priority) and external events happen all day long.
Take a long look at the transition diagram and ask yourself why each arc is there. What does it do and why does it do it in exactly that way. There are no random transitions, each is enumerated with great care.
Maybe this series of videos will help:
ETA: Part 3 is very helpful!