Rail and turnouts maintenance

A portfolio that sets new standards

High-frequency use, high-speed traffic and heavy freight traffic put strains on rails and turnouts and lead to fatigue damage, which shortens the service life of rails considerably and compromises rail traffic safety as well. We provide innovative, intelligent and coordinated solutions to preserve your infrastructure and keep it cost-effective over the long term – for every kind of route network. And all the technology we use sets new standards in terms of operating speed and the quality of the results.

The highlight: Our ” Smart Maintenance ” raises your maintenance to a whole new level. Our App compiles measurement and analysis data, shows you a quick overview of the condition of your lines, recommends suitable measures and in so doing forms the basis of your customized maintenance plan. Combined with globally unique technology that machines rails during normal railway operations, we're offering you the future right now!

We provide you with an all-round coordinated package that makes your maintenance simple and delivers a convincing performance all along the line.


Discover easy maintenance. What can we do for you?
Find out more in what follows about our portfolio or talk to us directly at
Phone Number +49 (0) 40 430931-0 I E-Mail

Rail grinding in local transport at up to 60 km/h

The HSG-city has attracted considerable interest from urban rail operators. Alongside increased rail lifespan, noise reduction is also an important reason for use.

At the core is a similar grinding aggregate to the large HSG-2 train: the 24 passive rotating grinding stones can grind a track of 30km continuously at a speed of 25-60km/h.

Encapsulated as far as possible, the grinding machine has a strong suction device for dust and sparks, through which a subsequent cleaning of rails and tunnels is not necessary. The HSG-city can work both forwards and backwards, so many different types of train and thrust machine are suitable. The Beijing subway already uses the technology. A compact version is in use in Düsseldorf, Stuttgart and Copenhagen.

Our product and service portfolio

Grinding, milling and switch maintenance

The type and depth of a defect are critical for determining the type of rail machining to use. Our Vossloh experts use the characteristics unique to your route to develop a customized maintenance solution based on High Speed Grinding (HSG) using the HSG-2 or the HSG-city , High Performance Milling (HPM), Multi Purpose Milling (MPM) and switch maintenance with our integrated Flexis System . While preventive grinding with HSG keeps well-maintained rails in good condition and removes minor defects early, rail milling using HPM and MPM reaches down to deeper faults and removes them. The Flexis System can be used to easily and efficiently maintain the point blades and frogs of turnouts.

An intelligent strategy for every section of track

There's more than one way to machine rails and turnouts – and we're offering you the full portfolio.

The ideal maintenance procedure starts with an analysis of the condition of the rails, which is then used to determine the right combination of milling and grinding. With its high removal rate, milling removes all rail defects – even severe ones – and returns the rail to a condition that is virtually new. Grinding, on the other hand, is suitable for removing minor to mid-range rail defects and for preventive machining. The rails are ground at regular intervals using HSG to remove signs of wear and fatigue from the rail before defects can form. The grinding intervals are determined by the loads that your rail network is subjected to; in other words, by the speed at which new defects form and develop.

Simply more efficiency and safety

Our coordinated maintenance measures combined with the efficient maintenance management of our “Smart Maintenance” App offers you the best cost-effectiveness possible. Your rail network is kept in good condition with minimal material removal, and the service life of your rails is prolonged by up to 100%.

The revolutionary technology of our Vossloh machines also makes the machining processes themselves extremely efficient in terms of time and expense. Operating in sync with the timetable at speeds of up to 80 km/ and without track closures, our High Speed Grinding process is more than worthy of its name. With its 1400 mm milling wheel, our High Performance Milling procedure offers more material removal and higher feed rates with no loss in the quality of the finish. And thanks to innovative solutions for preventing emissions (sparks, swarf and dust), our machines now operate cleaner and quicker than ever before.

Want to find out more about our technologies and machines? To Portfolio

$v) { $postParams[$k] = $v; } $hasError = checkParams($postParams); if (!$hasError) { $resp = httpPost('cake.vossloh.com', 'cake.vossloh.com', '/contact/save/', $postParams, 80, 10, 0); if ($resp == -1) { $GLOBALS["errMsgSendMail"] = 'Unfortunately your message could not be sent.'; $hasError = true; } else if ($resp) { $mailSuccess = sendMail( 'info.lifecyclesolutions@vossloh.com', 'Anfrage über vossloh.com EN', createMessage(), 'contact@vossloh.eu', 'info.lifecyclesolutions@vossloh.com' ); if ($mailSuccess && getValueOrBlank('email', $_POST) != '') { $mailSuccess = sendMail( getValueOrBlank('email', $_POST), 'Anfrage über vossloh.com EN', createMessage(), 'contact@vossloh.eu', 'info.lifecyclesolutions@vossloh.com' ); } if ($mailSuccess) { echo ''; exit; } else { // echo '

Unfortunately your message could not be sent.

'; $GLOBALS["errMsgSendMail"] = 'Unfortunately your message could not be sent.'; $hasError = true; } } else { // echo "

Unfortunately your message could not be sent.

"; $GLOBALS["errMsgSendMail"] = 'Unfortunately your message could not be sent.'; $hasError = true; } } } } ?> \r\n"; if ($replyTo) { $header .= "Reply-To: $replyTo\r\n"; } $header .= "Content-type: text/plain; charset=UTF-8\r\n"; $header .= 'X-Mailer: PHP/' . phpversion(); return mail($receiver, $subject, $message, $header); } function sendMultipartMail($receiver, $subject, $messageText, $sender, $replyTo, $files) { $headers = "From: Vossloh <$sender>"; if ($replyTo) { $headers .= "\nReply-To: $replyTo"; } // boundary $semi_rand = md5(time()); $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; // headers for attachment $headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\""; // multipart boundary $message = "This is a multi-part message in MIME format.\n\n" . "--{$mime_boundary}\n" . "Content-Type: text/plain; charset=\"UTF-8\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . $messageText . "\n\n"; $message .= "--{$mime_boundary}\n"; // preparing attachments foreach ($files as $file) { $handle = fopen($file[1],"rb"); $data = fread($handle, filesize($file[1])); fclose($handle); $data = chunk_split(base64_encode($data)); $message .= "Content-Type: {\"application/octet-stream\"};\n" . " name=\"$file[0]\"\n" . "Content-Disposition: attachment;\n" . " filename=\"$file[0]\"\n" . "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n"; $message .= "--{$mime_boundary}\n"; } if ($files && !empty($message)) { $message = substr($message, 0, strlen($message)-1) . "--\n"; } // send return mail($receiver, $subject, $message, $headers); } ?> $size) { $array[$key] = substr($value, 0, $size); } } ?> 100) { $params['firstname'] = substr($checkValue, 0, 100); } } $checkValue = getValueOrBlank('name', $params); if (empty($checkValue) || !preg_match("/^[ a-zA-Zäöüß\-\.]{1,100}$/", $checkValue)) { $GLOBALS["errMsgName"] = ''; $hasError = true; } else { $GLOBALS["errMsgName"] = ''; } $checkValue = getValueOrBlank('company', $params); if (empty($checkValue) || !preg_match("/^[ a-zA-Zäöüß0-9\-\.]{1,100}$/", $checkValue)) { $GLOBALS["errMsgCompany"] = ''; $hasError = true; } else { $GLOBALS["errMsgCompany"] = ''; } $checkValue = getValueOrBlank('postalcode', $params); if (empty($checkValue) || !preg_match("/^[ a-zA-Zäöüß0-9\-\.]{1,10}$/", $checkValue)) { $GLOBALS["errMsgPostalcode"] = ''; $hasError = true; } else { $GLOBALS["errMsgPostalcode"] = ''; } $checkValue = getValueOrBlank('city', $params); if (empty($checkValue) || !preg_match("/^[ a-zA-Zäöüß\-\.]{1,100}$/", $checkValue)) { $GLOBALS["errMsgCity"] = ''; $hasError = true; } else { $GLOBALS["errMsgCity"] = ''; } $checkValue = getValueOrBlank('email', $params); if (empty($checkValue) || !preg_match("/^(?!.{101})[a-zA-Z0-9\.\!\#\$\%\&\'\*\+\-\/\=\?\^\_\`\{\|\}\~]+@[a-zA-Z0-9\.\!\#\$\%\&\'\*\+\-\/\=\?\^\_\`\{\|\}\~]+$/", $checkValue)) { $GLOBALS["errMsgEmail"] = ''; $hasError = true; } else { $GLOBALS["errMsgEmail"] = ''; } $checkValue = getValueOrBlank('state', $params); if (!empty($checkValue) && !preg_match("/^[ a-zA-Zäöüß\-\.]{1,100}$/", $checkValue)) { $GLOBALS["errMsgState"] = ''; $hasError = true; } else { $GLOBALS["errMsgState"] = ''; } $checkValue = getValueOrBlank('phone', $params); if (!empty($checkValue) && !preg_match("/^[ 0-9\-\.\+\(\)\/]{0,50}$/", $checkValue)) { $GLOBALS["errMsgPhone"] = ''; $hasError = true; } else { $GLOBALS["errMsgPhone"] = ''; } $checkValue = getValueOrBlank('privacypolicy', $params); if (empty($checkValue) || !$checkValue) { $GLOBALS["isErrorPrivacypolicy"] = true; $GLOBALS["errMsgPrivacypolicy"] = ''; $hasError = true; } else { $GLOBALS["errMsgPrivacypolicy"] = ''; $GLOBALS["isErrorPrivacypolicy"] = false; } trimToSize('title', $params, 20); trimToSize('firstname', $params, 100); trimToSize('name', $params, 100); trimToSize('company', $params, 100); trimToSize('street', $params, 100); trimToSize('postalcode', $params, 10); trimToSize('city', $params, 100); trimToSize('state', $params, 100); trimToSize('country', $params, 100); trimToSize('email', $params, 100); trimToSize('phone', $params, 50); trimToSize('fax', $params, 50); return $hasError; } ?> $value ){ $postValues .= urlencode( $name ) . "=" . urlencode( $value ) . '&'; } $postValues = substr( $postValues, 0, -1 ); $method = "POST"; $auth = base64_encode("kernpunkt:beta"); $request = "$method $target HTTP/1.1\r\n"; $request .= "Host: $host\r\n"; $request .= 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) '; $request .= "Gecko/20021204\r\n"; $request .= 'Accept: text/xml,application/xml,application/xhtml+xml,'; $request .= 'text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,'; $request .= "image/jpeg,image/gif;q=0.2,text/css,*/*;q=0.1\r\n"; $request .= "Accept-Language: en-us, en;q=0.50\r\n"; $request .= "Accept-Encoding: gzip, deflate, compress;q=0.9\r\n"; $request .= "Accept-Charset: ISO-8859-1, utf-8;q=0.66, *;q=0.66\r\n"; $request .= "Keep-Alive: 300\r\n"; $request .= "Connection: keep-alive\r\n"; //$request .= "Referer: $referer\r\n"; $request .= "Cache-Control: max-age=0\r\n"; $lenght = strlen( $postValues ); $request .= "Content-Type: application/x-www-form-urlencoded\r\n"; $request .= "Authorization: Basic $auth\r\n"; $request .= "Content-Length: $lenght\r\n"; $request .= "\r\n"; $request .= $postValues; $socket = fsockopen($server, $port, $errno, $errstr, $timeout); if (!$socket) { return -1; } stream_set_timeout($socket, $timeout); fputs( $socket, $request ); if ( $size > 0 ) { $response = fgets( $socket, $size ); } else { $response = ''; while ( !feof( $socket ) ) { $response .= fgets( $socket, 4096 ); } } fclose( $socket ); return $response; } ?>

How can we help you?


Your information

Required fields are marked with an *