А я устал уже повторять что модбас это стандартный протокол, он собирается и разбирается по одним и тем же законам, что во второй что в третьец версии
А я устал уже повторять что модбас это стандартный протокол, он собирается и разбирается по одним и тем же законам, что во второй что в третьец версии
Хорошо. Если Вы так упрямо стоите на своем, то объясните почему в CDS2.3 я этого не делал.
Может быть у Вас это коммерческая тайна? Почему если в данной версии нет того же функционала, какой был в предыдущей Вы не напишите пользователям внятной инструкции. Вы поймите мы работу делаем и занимаемся разработками малую часть своей деятельности. У меня нет времени долго и нудно сидеть и разбираться в этом вопросе. За то время которое я убиваю не понятно на что, я бы уже написал программу по обработке флоатовского значения, а я тупо не могу нормально получить значения веса, который выдает Ваш же прибор, а не прибор стороннего производителя. Подумайте над моими словами, мы в конце концов Ваши партнеры.
Я Ваш пример в проект встроил, но значения REAL отличаются от значений которые у меня выдает прибор в программе на CDS2.3. Там у меня выдает -9.8....... а здесь.... высылаю скриншот.
Последний раз редактировалось инок; 10.09.2013 в 23:37.
А код без онлайн можно увидеть, а то как то не вяжеться мысль что Вы тосуете байты местами, если одни и теже значения три раза повторяются и указатель из указателя это вообще круто, в каком примере это описано?
Этот пример программы мне прислал СуперМодератор в первом ответе можете оригинал посмотреть.
Я не супер программист, но я тоже немного засомневался и попросил словами объяснить, может у меня лучше бы получилось. Просто нужно понять, что нужно сделать. Я из этого текста кода просто даже понять не могу ни чего и тем более внятно объяснить.
Последний раз редактировалось инок; 11.09.2013 в 00:30.
Ссылка на ссылку это как бы нормальное дело, но в плк это делать лучше имея большой опыт, меня удивило что так предлагают в примерах для новичков, считаю что надо показывать каждый шаг в таких делах, вот этоо реал, вот это указатель на реал, вот это массив из четырех байт, вот указатель ложим в ячейку массива, вот дедаем смещегие указателя, снова ложим и т.д.
Тогда новичку было бы ронятно
Для начала о формате Float. Число в этом формате представлено в виде мантиссы и экспоненты+знак числа. Для представления такого числа используются 32 бита=4байта=2WORD.
Есть такой онлайн ресурс http://www.binaryconvert.com/convert_float.html, где можно проводить преобразование чисел из одного формата в другой.
Так вот, попробую с его помощью объяснить почему возможны 4 варианта
Вот так выглядит представление числа Float
1.png
Хорошо видно где находятся знак, мантисса и экспонента.
В ПЛК число "1" должно быть представлено так
2.png
Как уже было сказано, в стандарте на протокол ModBus не описано как должны передаваться 32-битные числа в формате Float. Просто для предачи 32 бит используют передачу двух 16-битных регистров WORD. Назавем их WORD_0 и WORD_1
В каком порядке будет передавать эти WORD в Ваш ПЛК подключенное к нему Slave устройство выбрал изготовитель Slave устройства, так как ему понравиться. Ведь стандарта нет.
Мало того, что порядок передачи регистров может быть WORD_0,WORD_1 или WORD_1,WORD_0.
Так еще есть два вариант упаковки байт исходного числа в WORD.
Вот и получаются еще три варианта в дополнение к выше приведенному.
3.png
4.png
5.png
Можете попробовать вставить сюда 2 WORD, которые Вы прочитали из Slave, может будет понятно в каком порядке нужно будет переставлять байты (какой из четырех алгоритмов использовать)
Последний раз редактировалось petera; 11.09.2013 в 12:04.
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg