Найти - Пользователи
Полная версия: Вычисление и запись результата с условием.
Начало » Python для новичков » Вычисление и запись результата с условием.
1 2
staxbel
Добрый день. Еще совсем молод в Python, но появилась задачка, которую сам не могу решать. Помогите если кто сможет.
Есть код, вычисление остатка материала. Но проблема в том, что прибор, который передает данные расхода, хранит у себя 16 бит данных, затем обнуляется и тут начинается проблема.

 a1 =  float(result1[0] * 0.1)
b1 =  float(row[2]) #row2- 1продукт
silos1a = b1 - a1
print ("Расход:"f'{silos1a:.1f}')

a1 - это данные с прибора, b1 - это предыдущие данные - соответственно, когда все хорошо - получается расход со знаком -, но когда показания с прибора допустим 100, а предыдущее 65500 - в расход пишется 58950.
Как можно сделать условие? Мне кажется сделать проверку на отрицательное число. Если отрицательное - то пишем в базу, если положительное, то используем другую формулу и пишем в базу.
xam1816
staxbel
a1 - это данные с прибора, b1 - это предыдущие данные - соответственно, когда все хорошо - получается расход со знаком -, но когда показания с прибора допустим 100, а предыдущее 65500 - в расход пишется 58950.


было 65500,стало 100,расход = 65500 - 100 = 65400, откуда 58950?
staxbel
Да, что-то я не так посчитал :-(
было 65500 предыдущее значение, получили материал какое-то количество, стало значение 100, 16 бит это 65535. Если новое значение стало 100 значит 65535 - 65500= 35 - это значение до конца 16 бит. стало значение 100, значит взяли материала 135. а в расходе будет 65400.
xam1816
staxbel
Если новое значение стало 100 значит 65535 - 65500= 35 - это значение до конца 16 бит
Такая логика меня вводит в ступор,
staxbel
Но проблема в том, что прибор, который передает данные расхода, хранит у себя 16 бит данных
если ты про свои весы,то вес у тебя в с 10 по 17 БАЙТы а не биты,это 16 байт,пардон,8 байт данных,
staxbel
Это уже не те весы, где я задавал вопрос. Это другой прибор. У него (я не знаю как правильно сказать) в ячейке данных хранится максимальное число 65535, потом оно начинает с 0. работает он по modbus
xam1816
Какой прибор?как называется?
xam1816
А есть возможность выложить сюда какой вес отображается на индикаторе,и какие данные приходят в через порт в этот момент
staxbel
прибор работает по другому. Оператор указывает вес, который нужно набрать, идет набор, может набраться немного меньше или больше указанного. После окончания цикла набора, когда вес стал стабильным, он записывает это значение в регистр 40056.
AD0DE412
staxbel
в ячейке данных хранится максимальное число 65535, потом оно начинает с 0.
ага short int
python
чет типа того этого
те предствте числовой ряд как “не бесконечный” а зацикленный чели
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB