Segnetics

Вернуться   Segnetics > Форум Segnetics > Вопросы о программировании > Готовые решения

Готовые решения Здесь собраны все темы, по которым было найдено и выложено решение

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.12.2018, 11:03   #1
gcvdsv
Senior Member
 
Регистрация: Dec 2015
Сообщения: 119
Благодарил(а): 23 раз(а)
Поблагодарили: 4 раз(а) в 4 сообщениях
По умолчанию BCD, Сигнализатор кислорода СТГ-3-И-O2

Может кто знает, как преобразовать число из 12h 34h 56h в 123456dec ?
Миниатюры
Нажмите на картинку для увеличения

Название:  2018-12-27_10-01-30.jpg
Просмотров: 92
Размер:  67.6 Кбайт  
gcvdsv вне форума   Ответить с цитированием
Старый 27.12.2018, 11:08   #2
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 016
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: FBD чайникам

Цитата
Сообщение от gcvdsv Посмотреть сообщение
Может кто знает, как преобразовать число из 12h 34h 56h в 123456dec ?
Если вы задаёте вопрос о BCD, то это требует отдельного уточнения.

Да и вопрос должен задаваться в совсем другой форме. Потому что это сродни вопросу "Сколько змеиного яда можно выпить?". Ответ зависит от желаемого результата: нужно вылечить, покалечить или умертвить.

Вам что нужно делать с результатом преобразования?


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 27.12.2018, 11:14   #3
gcvdsv
Senior Member
 
Регистрация: Dec 2015
Сообщения: 119
Благодарил(а): 23 раз(а)
Поблагодарили: 4 раз(а) в 4 сообщениях
По умолчанию Ответ: FBD чайникам

Цитата:
Сообщение от Arsie Посмотреть сообщение

Ну и опять же, 123456h не равно 123456d. 123456h равно 1193046d.
Все верно они не равны, но данные необходимо далее передать. И для унификации мне надо как то преобразовать эти виды.
Ведь у меня 4 значения передаются в нормальном виде типа 20 °С
а не 14h °C
А это концентрация кислорода, которая далее идет в диспетчеризацию
gcvdsv вне форума   Ответить с цитированием
Старый 27.12.2018, 11:17   #4
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 016
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: FBD чайникам

Цитата
Сообщение от gcvdsv Посмотреть сообщение
Все верно они не равны, но данные необходимо далее передать. И для унификации мне надо как то преобразовать эти виды.
Ведь у меня 4 значения передаются в нормальном виде типа 20 °С
а не 14h °C
Все числа передаются в двоичном формате. Т.е. что 20 °С, что 14h °С имеют абсолютно одинаковый вид при передаче.

Выглядят они так: 10100b °С


Вам нужно сшить число двоично-десятичное в двоичное число?


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 27.12.2018, 11:50   #5
gcvdsv
Senior Member
 
Регистрация: Dec 2015
Сообщения: 119
Благодарил(а): 23 раз(а)
Поблагодарили: 4 раз(а) в 4 сообщениях
По умолчанию Ответ: FBD чайникам

Цитата:
Сообщение от Arsie Посмотреть сообщение
Все числа передаются в двоичном формате. Т.е. что 20 °С, что 14h °С имеют абсолютно одинаковый вид при передаче.

Выглядят они так: 10100b °С


Вам нужно сшить число двоично-десятичное в двоичное число?
Получается так, надо сшить
Миниатюры
Нажмите на картинку для увеличения

Название:  2018-12-27_10-49-02.jpg
Просмотров: 98
Размер:  72.8 Кбайт  
gcvdsv вне форума   Ответить с цитированием
Старый 27.12.2018, 12:14   #6
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 016
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: FBD чайникам

Цитата
Сообщение от gcvdsv Посмотреть сообщение
Получается так, надо сшить
А надо ли? Зачем вам это надо?

С точки зрения компьютера и скада изображённое на картинке - довольно-таки бессмыслица. Битовая последовательность разбита на части. Чтобы такое делать, нужно чётко понимать, зачем это делается.

Если цель - отображение в скаде, то ничего не нужно делать в контроллере. Нужно отталкиваться от возможности скады.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 27.12.2018, 12:43   #7
gcvdsv
Senior Member
 
Регистрация: Dec 2015
Сообщения: 119
Благодарил(а): 23 раз(а)
Поблагодарили: 4 раз(а) в 4 сообщениях
По умолчанию Ответ: FBD чайникам

Цитата:
Сообщение от Arsie Посмотреть сообщение
А надо ли? Зачем вам это надо?

С точки зрения компьютера и скада изображённое на картинке - довольно-таки бессмыслица. Битовая последовательность разбита на части. Чтобы такое делать, нужно чётко понимать, зачем это делается.

Если цель - отображение в скаде, то ничего не нужно делать в контроллере. Нужно отталкиваться от возможности скады.
Получается эти числа разбиты уже в приборе (сигнализатор СТГ-3-И-O2)
И думаю это еще с каких нибудь времен, когда была индикация на самом приборе.

1. Необходимо отображать pixel, с этим проблем нет, можно выводить каждое число в формате %h если не ошибаюсь.
2. Нужно учитывать положение запятой, потому что в разное время может быть как 12,3456 так и 123,456 .(вроде бы и здесь можно рисовать каждый раз запятую в нужном месте).
3. Необходимо полученное число сравнивать с уставкой введенной с экрана плк.
4. Передавать дальше непонятно в какую скаду или вообще в скаду.
gcvdsv вне форума   Ответить с цитированием
Старый 27.12.2018, 12:47   #8
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 016
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: FBD чайникам

Цитата
Сообщение от gcvdsv Посмотреть сообщение
1. Необходимо отображать pixel, с этим проблем нет, можно выводить каждое число в формате %h если не ошибаюсь.

2. Нужно учитывать положение запятой, потому что в разное время может быть как 12,3456 так и 123,456 .(вроде бы и здесь можно рисовать каждый раз запятую в нужном месте).

3. Необходимо полученное число сравнивать с уставкой введенной с экрана плк.

4. Передавать дальше непонятно в какую скаду или вообще в скаду.
2) Как выяснить положение запятой?

4) Нужно как-то определиться с рамками: что, куда и в каком виде


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 27.12.2018, 13:34   #9
gcvdsv
Senior Member
 
Регистрация: Dec 2015
Сообщения: 119
Благодарил(а): 23 раз(а)
Поблагодарили: 4 раз(а) в 4 сообщениях
По умолчанию Ответ: FBD чайникам

Цитата:
Сообщение от Arsie Посмотреть сообщение
2) Как выяснить положение запятой?

4) Нужно как-то определиться с рамками: что, куда и в каком виде
2) Положение запятой, согласно описанию(прилеплено в 1 сообщении) отображается в 1 байте биты 1,2 и 3
4) Куда неизвестно на текущий момент, а вид в нормальном формате(десятичный int или real)
gcvdsv вне форума   Ответить с цитированием
Старый 27.12.2018, 15:33   #10
gcvdsv
Senior Member
 
Регистрация: Dec 2015
Сообщения: 119
Благодарил(а): 23 раз(а)
Поблагодарили: 4 раз(а) в 4 сообщениях
По умолчанию Ответ: Работа с двоично-десятичными числами BCD

Предварительное решение есть.
Миниатюры
Нажмите на картинку для увеличения

Название:  2018-12-27_14-51-12.jpg
Просмотров: 67
Размер:  164.4 Кбайт  
Вложения
Тип файла: psl BCD_DEC .psl (107.7 Кбайт, 13 просмотров)

Последний раз редактировалось gcvdsv, 27.12.2018 в 15:51
gcvdsv вне форума   Ответить с цитированием
Старый 27.12.2018, 15:55   #11
ATS
Senior Member
 
Регистрация: Aug 2013
Сообщения: 3 735
Благодарил(а): 12 раз(а)
Поблагодарили: 192 раз(а) в 188 сообщениях
По умолчанию Ответ: Работа с двоично-десятичными числами BCD

Цитата
Сообщение от gcvdsv Посмотреть сообщение
Предварительное решение есть.
А зачем нужны min-max и почему min=1?
ATS вне форума   Ответить с цитированием
Старый 27.12.2018, 16:01   #12
gcvdsv
Senior Member
 
Регистрация: Dec 2015
Сообщения: 119
Благодарил(а): 23 раз(а)
Поблагодарили: 4 раз(а) в 4 сообщениях
По умолчанию Ответ: Работа с двоично-десятичными числами BCD

Цитата
Сообщение от ATS Посмотреть сообщение
А зачем нужны min-max и почему min=1?
Нужен только min, если будет в том месте 0, соответственно будет потеряна часть при сложении.
А затем из слепленного числа вычитаем те значения для которых был min 1
gcvdsv вне форума   Ответить с цитированием
Старый 27.12.2018, 16:06   #13
ATS
Senior Member
 
Регистрация: Aug 2013
Сообщения: 3 735
Благодарил(а): 12 раз(а)
Поблагодарили: 192 раз(а) в 188 сообщениях
По умолчанию Ответ: Работа с двоично-десятичными числами BCD

Цитата
Сообщение от gcvdsv Посмотреть сообщение
Нужен только min, если будет в том месте 0, соответственно будет потеряна часть при сложении.
И чем мешает потерянный ноль? Лишнее это и коррекция надумана.
ATS вне форума   Ответить с цитированием
Старый 27.12.2018, 16:14   #14
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 016
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: FBD чайникам

Цитата
Сообщение от gcvdsv Посмотреть сообщение
2) Положение запятой, согласно описанию
Уродское описание, надо отметить. Если представлять байты ровно так, как нарисовано, то они перепутаны местами. Хрен поймёшь, что эти писатели на самом деле имели ввиду.

Вот преобразование, байты местами поменяйте самостоятельно, как там правильно.

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

Название:  Безымянный.png
Просмотров: 78
Размер:  24.2 Кбайт  
Вложения
Тип файла: psl Untitled.psl (136.9 Кбайт, 16 просмотров)


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 28.12.2018, 08:40   #15
gcvdsv
Senior Member
 
Регистрация: Dec 2015
Сообщения: 119
Благодарил(а): 23 раз(а)
Поблагодарили: 4 раз(а) в 4 сообщениях
По умолчанию Ответ: FBD чайникам

Цитата:
Сообщение от Arsie Посмотреть сообщение
Уродское описание, надо отметить. Если представлять байты ровно так, как нарисовано, то они перепутаны местами. Хрен поймёшь, что эти писатели на самом деле имели ввиду.

Вот преобразование, байты местами поменяйте самостоятельно, как там правильно.

От вас жду модель прибора и правильно расставленные байты по результату натурных испытаний
Благодарю,
Модель СТГ-3-И-O2
http://www.gazanalizator.ru/gazoanalizatory/stg-3-i-o2
Испытания чуть позднее, прибора еще нет на руках
gcvdsv вне форума   Ответить с цитированием
Старый 28.12.2018, 16:38   #16
ujin
Senior Member
 
Аватара для ujin
 
Регистрация: May 2010
Адрес: Novosibirsk
Сообщения: 762
Благодарил(а): 1 раз(а)
Поблагодарили: 10 раз(а) в 10 сообщениях
По умолчанию Ответ: BCD, Сигнализатор кислорода СТГ-3-И-O2

Цитата
Сообщение от gcvdsv Посмотреть сообщение
Может кто знает, как преобразовать число из 12h 34h 56h в 123456dec ?
У датчиков CH4 плохо читаются пороги. Как недавно выяснил нужно паузу несколько секунд делать между запросами.
Датчики CO шустрее работают.
У датчика O2 думаю регистры те же
В приложении пример. Работает с 2013 года.
Есть пример на Labview на сдвиговых регистрах.
Миниатюры
Нажмите на картинку для увеличения

Название:  СТГ3и.jpg
Просмотров: 64
Размер:  378.9 Кбайт   Нажмите на картинку для увеличения

Название:  СТГ 3и сдвиг.jpg
Просмотров: 50
Размер:  109.6 Кбайт  
Вложения
Тип файла: msl Convert BCD SG3i.msl (20.4 Кбайт, 21 просмотров)
Тип файла: map STG3i.map (663 байт, 11 просмотров)
Тип файла: map STG3i_lim.map (509 байт, 10 просмотров)


__________________
В жизни 2 правила успеха:
1 Не говори всего что знаешь
2 ...
ujin вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать свои сообщения

BB code is Вкл.
[IMG] код Вкл.
HTML код Выкл.



Часовой пояс GMT +4, время: 13:48.


Версия vBulletin: 3.8.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Segnetics 2005 - 2023