Задачку эту наши клиенты решали - точно, и на Сименсе и на Омроне.
Но поделится исходниками народ не сильно жаждет...
Видимо придется писать самому.