int Speed100 = Serial.read()- '0';
int Speed10 = Serial.read()- '0';
int Speed1 = Serial.read()- '0';
Speed = 100*Speed100 + 10*Speed10 + Speed1;
If there is a byte of serial data to read, read it. If that byte is an 'S', call this function. Wait around doing nothing for two milliseconds, and hope like hell that another character arrives while we're taking a nap. Then, repeat twice more.
That's a lot of hoping.
But, suppose we do get lucky and get 3 characters. You assume that they are all represent numbers. That is not necessarily a valid assumption.
But, suppose that that does happen. Now, I don't know what numbers you are sending. But, suppose that the number 210 was sent (that is in the from range of the map, so it might happen). Speed will be 210 as input to the map() call, so the output will be about 460.
Now, what do you suppose that analogWrite() does with a value that is out-of-bounds, as most of the values output by map will be?
Finally, what is on the receiving end of the Serial data that the Arduino is sending?
There is a lot that is missing from your post. Does the RX light on the Arduino blink when x-sim is sending it data? Do you have a clue what x-sim is actually sending it? Do you understand the issues with how you are reading data? Where did the numbers in the map() call come from? Do you understand that most of the output values will be invalid for the analogWrite() call?