Hi,
So you have suggested that "time" is the reason why the dash would stop, not something like stamina. Perhaps it is best to use a Counter to control this behaviour.
1) First, add an "instance variable" to the player called MaxDash.
2) To your existing function "Player_Dash" you could add "Add +1 to MaxDash". Since the function is being called 60 times a second already, giving you smooth movement, you'll find that MaxDash goes up by 60 every second too.
3) Add a "Condition" to your "Player_Dash" function that changes the code to:
On Player_Dash
If Max_Dash <180
Set speed to 500
if Max_Dash >= 120
Set speed to 180
Simulate movement Right
This way your function still operates but the player will find that their speed reverts back to 180 after 2 seconds. To reset Max_Dash you should add a line that says On "D" pressed set Max_Dash = 0. So, D being pressed resets it, D being held doesn't.