How to set maximum velocity for a rigidbody?

Nothing seems to work, played around for a few hours, copied and pasted solutions from google but nope.
Changing the maxSpeed variable doesn’t do anything. Object still flies across the screen like Barry Allen.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMovement : MonoBehaviour {

	[Range (0, 5)]public int speed;
	public Rigidbody2D rb2D;
	public Vector3 veloc;
	public float maxSpeed;

	void Start () 
	{
		rb2D = GetComponent<Rigidbody2D> ();
		speed = 4;
		maxSpeed = 0.01f;
		veloc = GetComponent <Rigidbody2D>().velocity;
	}

	void Update () 
	{
		if(Input.GetKey(KeyCode.W))
		{
			rb2D.AddForce (Vector3.up * speed);
		}
		if(Input.GetKey(KeyCode.S))
		{
			rb2D.AddForce (-Vector3.up * speed);
		}
		if(Input.GetKey(KeyCode.D))
		{
			rb2D.AddForce (Vector3.right * speed);
		}
		if(Input.GetKey(KeyCode.A))
		{
			rb2D.AddForce (-Vector3.right * speed);
		}
	}
	void FixedUpdate ()
	{
		if(veloc.magnitude > maxSpeed)
		{
			rb2D.velocity = rb2D.velocity.normalized * maxSpeed;
		}
	}
}

It’s not working because Vector3 are structs and passed by value so the ‘veloc’ variable at beginning is only storing what the rigidbodys velocity was when it was assigned. On line 41 just change veloc.magnitude to rb2D.velocity.magnitude