I still don't see anywhere in your code where you are 'persistently' storing the times. The startime is still being unconditionally set every time the page gets requested. Until you store the startime, techtime, and completion time somewhere (it looks like you are using a database table), you don't have any data upon which to produce a report.
There are two concerns that your code is dealing with. The first concern is recording the information. This should be handled using post method forms and php code to detect the form submission and use the submitted form data. The second concern is displaying information based on the recorded information.
It would be better if you first defined the data you have/need and the 'work-follow' you need to accomplish this task -
It appears that this page is reached by someone/something submitting a form (you should not use $REQUEST, but use the actual $GET, $POST, or $COOKIE variables where the data is coming from) that submits the statation_id of the equipment that just went 'down' (a second field in the submitted form data would indicate the 'down' state).
If there isn't an 'open' downtime record for this station_id, you would INSERT a new record into the records database table, with the station_id and the current time as the start time. You don't need to store the line id, because the line id for any station id is already stored in the stations table. You should not store the same data in multiple places.
If there is already an 'open' downtime record for this station_id, you need to decide what action your code should take. If there can only be one open record at a time for each station_id, you would ignore the duplicate request.
When the technician enters/scans his badge and that form is submitted, the code now knows the user_id and the techtime (from the current time), you would UPDATE the correct record with these two pieces of data. It's not clear how you are tying this to the station_id, since there can be any number of different stations/equipment that are 'down' at any one time. If you are assuming that one browser is going to be used exclusively at one/for a station for the duration of a down time event, you can store the station id in a session variable, like your code is doing now.
When the technician finishes and the machine is returned to the 'up' state, a form would need to be submitted that submits the correct station id (if you are assuming one browser = one station_id, you can omit this value) and a field for the 'up' state. The code now knows the completion time (from the current time) and the station_id. You would UPDATE the correct record with the completion time.
At any point, by looking at what values are present in the database table record(s), you can display the status -
1) If only the startime is present, the status is 'waiting for a technician'.
2) If the startime and the techtime are present, the status is 'being worked on'.
3) If the completion time is present, the status is 'complete'.
Displaying the line name, or technician name is part of the display process. You would JOIN the user_id and station_id from the records table with the users table and the stations table to get this secondary information.
By separating the concerns in your code, it will be easier to write and test your code, since one section of code is only dealing with processing form submissions and inserting/updating the record(s) in the database table and the other section of code is only dealing with retrieving data and deciding what to display on the page.