Уведомления

Группа в Telegram: @pythonsu

#1 Май 25, 2021 20:58:09

staxbel
Зарегистрирован: 2021-03-13
Сообщения: 48
Репутация: +  0  -
Профиль   Отправить e-mail  

Вычисление и запись результата с условием.

Добрый день. Еще совсем молод в 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.
Как можно сделать условие? Мне кажется сделать проверку на отрицательное число. Если отрицательное - то пишем в базу, если положительное, то используем другую формулу и пишем в базу.

Офлайн

#2 Май 25, 2021 21:35:20

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1370
Репутация: +  121  -
Профиль   Отправить e-mail  

Вычисление и запись результата с условием.

staxbel
a1 - это данные с прибора, b1 - это предыдущие данные - соответственно, когда все хорошо - получается расход со знаком -, но когда показания с прибора допустим 100, а предыдущее 65500 - в расход пишется 58950.


было 65500,стало 100,расход = 65500 - 100 = 65400, откуда 58950?

Офлайн

#3 Май 25, 2021 21:55:09

staxbel
Зарегистрирован: 2021-03-13
Сообщения: 48
Репутация: +  0  -
Профиль   Отправить e-mail  

Вычисление и запись результата с условием.

Да, что-то я не так посчитал :-(
было 65500 предыдущее значение, получили материал какое-то количество, стало значение 100, 16 бит это 65535. Если новое значение стало 100 значит 65535 - 65500= 35 - это значение до конца 16 бит. стало значение 100, значит взяли материала 135. а в расходе будет 65400.

Офлайн

#4 Май 25, 2021 22:21:30

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1370
Репутация: +  121  -
Профиль   Отправить e-mail  

Вычисление и запись результата с условием.

staxbel
Если новое значение стало 100 значит 65535 - 65500= 35 - это значение до конца 16 бит
Такая логика меня вводит в ступор,
staxbel
Но проблема в том, что прибор, который передает данные расхода, хранит у себя 16 бит данных
если ты про свои весы,то вес у тебя в с 10 по 17 БАЙТы а не биты,это 16 байт,пардон,8 байт данных,

Отредактировано xam1816 (Май 25, 2021 22:24:18)

Офлайн

#5 Май 25, 2021 22:24:53

staxbel
Зарегистрирован: 2021-03-13
Сообщения: 48
Репутация: +  0  -
Профиль   Отправить e-mail  

Вычисление и запись результата с условием.

Это уже не те весы, где я задавал вопрос. Это другой прибор. У него (я не знаю как правильно сказать) в ячейке данных хранится максимальное число 65535, потом оно начинает с 0. работает он по modbus

Отредактировано staxbel (Май 25, 2021 22:25:46)

Офлайн

#6 Май 25, 2021 22:28:18

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1370
Репутация: +  121  -
Профиль   Отправить e-mail  

Вычисление и запись результата с условием.

Какой прибор?как называется?

Офлайн

#7 Май 25, 2021 22:33:19

staxbel
Зарегистрирован: 2021-03-13
Сообщения: 48
Репутация: +  0  -
Профиль   Отправить e-mail  

Вычисление и запись результата с условием.

Офлайн

#8 Май 26, 2021 00:32:55

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1370
Репутация: +  121  -
Профиль   Отправить e-mail  

Вычисление и запись результата с условием.

А есть возможность выложить сюда какой вес отображается на индикаторе,и какие данные приходят в через порт в этот момент

Офлайн

#9 Май 26, 2021 04:46:38

staxbel
Зарегистрирован: 2021-03-13
Сообщения: 48
Репутация: +  0  -
Профиль   Отправить e-mail  

Вычисление и запись результата с условием.

прибор работает по другому. Оператор указывает вес, который нужно набрать, идет набор, может набраться немного меньше или больше указанного. После окончания цикла набора, когда вес стал стабильным, он записывает это значение в регистр 40056.

Офлайн

#10 Май 26, 2021 19:42:14

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Вычисление и запись результата с условием.

staxbel
в ячейке данных хранится максимальное число 65535, потом оно начинает с 0.
ага short int
python
чет типа того этого
те предствте числовой ряд как “не бесконечный” а зацикленный чели



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Май 26, 2021 19:50:42)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version