Преобразование реального типа данных из Siemens PL C (S7-1200) для отображения в виде Visual C# Windows - PullRequest
2 голосов
/ 28 февраля 2020

Я пытаюсь прочитать реальное значение из Siemens PL C (S7-1200) и отобразить его в форме Windows. Я использую библиотеку S7. NET для связи с PL C и TIA Portal V15 для программирования / мониторинга PL C.

. Я могу прочитать конкретный блок данных ( DB3.DBD0 ) в форме Windows из PL C, оно возвращает значение, но оно отображается в другом формате. Например, если я изменю значение в DB3.DBD0 на «2.22», это даст мне «1.074665 + 09». Я хотел бы, чтобы он возвращал то же значение, что и на портале TIA, которое равно «2.22».

Ниже приведен код, который я использую для преобразования значений.

object real0 = Convert.ToSingle(plc.Read("DB3.DBD0"));
label43.Text = real0.ToString();

Если мой вопрос не ясно, пожалуйста, дайте мне знать, я могу попытаться объяснить более подробно.

Заранее спасибо!

1 Ответ

0 голосов
/ 28 февраля 2020

Тип данных PL C представляется РЕАЛЬНЫМ (числом с плавающей точкой) 'IEEE числом с плавающей точкой' согласно http://www.plcdev.com/step_7_elementary_data_types

Эти числа представлены как фракции, в результате чего 2.2 не может быть точно определено. Большое подробное объяснение: Почему числа с плавающей запятой неточны?

Хорошее простое объяснение: https://floating-point-gui.de/basic

Попробуйте преобразовать в десятичные типы данных, затем округление, чтобы удалить конечные 0's

...