1 (02-04-2019 16:50:57 отредактировано Sapphire)

Тема: вопрос по дисплею Nextion NX3224T024_011

Доброго времени суток всем, возникла необходимость отображения показаний 6 датчиков температуры на дисплее Nextion NX3224T024_011, после редактирования и добавления элементов на отладочном приложении Nextion Editor вроде бы всё получилось (фото выложил), но проблема в том что все датчики на дисплее отображают показания одного датчика, учитывая то что при отладке была использована диаграмма (c5nano_touch_control) которую тоже выложил
понятно что в ней 1 датчик, и логически показания должны быть на одной строке из 6, код прописки элементов дисплея тут

va1.val=va0.val
va2.val=va1.val/1000
va4.val=va2.val*10/18
cov va2.val,va3.txt,0
va2.val=va2.val*1000
va1.val=va1.val-va2.val
va2.val=va1.val/100
if(va2.val>0)
{
  t0.txt="-"
  j0.val=10-va4.val
}else
{
  t0.txt=""
  j0.val=10+va4.val
}
t0.txt=t0.txt+va3.txt
va2.val=va2.val*100
va1.val=va1.val-va2.val
va2.val=va1.val/10
if(va2.val>0)
{
  p0.pic=1
  p1.pic=3
  tsw m0,0
  tsw m1,1
}else
{
  p0.pic=0
  p1.pic=2
  tsw m0,1
  tsw m1,0
}
va1.val=va0.val
va2.val=va1.val/1000
va4.val=va2.val*10/18
cov va2.val,va3.txt,0
va2.val=va2.val*1000
va1.val=va1.val-va2.val
va2.val=va1.val/100
if(va2.val>0)
{
  t2.txt="-"
  j1.val=10-va4.val
}else
{
  t2.txt=""
  j1.val=10+va4.val
}
t2.txt=t2.txt+va3.txt
va2.val=va2.val*100
va1.val=va1.val-va2.val
va2.val=va1.val/10
va1.val=va0.val
va2.val=va1.val/1000
va4.val=va2.val*10/18
cov va2.val,va3.txt,0
va2.val=va2.val*1000
va1.val=va1.val-va2.val
va2.val=va1.val/100
if(va2.val>0)
{
  t4.txt="-"
  j2.val=10-va4.val
}else
{
  t4.txt=""
  j2.val=10+va4.val
}
t4.txt=t4.txt+va3.txt
va2.val=va2.val*100
va1.val=va1.val-va2.val
va2.val=va1.val/10
va1.val=va0.val
va2.val=va1.val/1000
va4.val=va2.val*10/18
cov va2.val,va3.txt,0
va2.val=va2.val*1000
va1.val=va1.val-va2.val
va2.val=va1.val/100
if(va2.val>0)
{
  t6.txt="-"
  j3.val=10-va4.val
}else
{
  t6.txt=""
  j3.val=10+va4.val
}
t6.txt=t6.txt+va3.txt
va2.val=va2.val*100
va1.val=va1.val-va2.val
va2.val=va1.val/10
va1.val=va0.val
va2.val=va1.val/1000
va4.val=va2.val*10/18
cov va2.val,va3.txt,0
va2.val=va2.val*1000
va1.val=va1.val-va2.val
va2.val=va1.val/100
if(va2.val>0)
{
  t8.txt="-"
  j4.val=10-va4.val
}else
{
  t8.txt=""
  j4.val=10+va4.val
}
t8.txt=t8.txt+va3.txt
va2.val=va2.val*100
va1.val=va1.val-va2.val
va2.val=va1.val/10
va1.val=va0.val
va2.val=va1.val/1000
va4.val=va2.val*10/18
cov va2.val,va3.txt,0
va2.val=va2.val*1000
va1.val=va1.val-va2.val
va2.val=va1.val/100
if(va2.val>0)
{
  t10.txt="-"
  j5.val=10-va4.val
}else
{
  t10.txt=""
  j5.val=10+va4.val
}
t10.txt=t10.txt+va3.txt
va2.val=va2.val*100
va1.val=va1.val-va2.val
va2.val=va1.val/10

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

P.S. также выложил файл для Nextion Editor

Вложений в сообщении

IMG_1236.JPG, 74.63 кб, 532 x 399
IMG_1236.JPG 74.63 кб, скачивался 399 раз, последний раз 2019-04-02 

Иконка вложения c5nano_touch_control.cfd 4.05 кб, скачивался 332 раз, последний раз 2019-04-02 

Иконка вложения пробы.HMI 210.72 кб, скачивался 457 раз, последний раз 2019-04-02 

2

Re: вопрос по дисплею Nextion NX3224T024_011

В коде прописки элементов дисплея для формирования отображаемой температуры используется одна и та же исходная переменная (va0.val) полученная от контроллера.
Пример работы с несколькими датчиками температуры на одной шине рассмотрен в отдельной теме (нужно знать адрес каждого датчика чтобы к нему обращаться). Также датчики температуры можно подключать к разным входам контроллера.

3

Re: вопрос по дисплею Nextion NX3224T024_011

Доброго времени суток, с дисплеем получилось вроде, с диаграммой что то не пойму где я ошибся, датчики на одном канале (вывод с канни №7), в диаграмму добавил пока что 2 датчика для эксперимента, подтяжку 4,7 кОм кинул, так вот при подключении 2го датчика на канал №7, канни не работает, при отсоединении всё пашет корректно, посмотрите пожалуйста где я опять накосячил, спасибо...

Вложений в сообщении

Иконка вложения тест.cfd 7.81 кб, скачивался 434 раз, последний раз 2019-04-04 

4

Re: вопрос по дисплею Nextion NX3224T024_011

В диаграмме значение температуры обоих датчиков отправляется в одну переменную, т.е. должно будет отображаться на дисплее в одной и той же позиции, только поочереди. Нужно будет дописать, чтобы значения передавались контроллером в разные переменные Nextion. А в остальном, диаграмма выглядит вполне рабочей, если ID датчиков температуры указаны верно.
С большой вероятностью проблема в подключении. Пришлите, пожалуйста, схему подключения? Можно нарисовать ее от руки, сфотографировать и прислать фото.
Подтяжка линии данных сопротивленем 4,7кОмк к +5В должна быть у каждого датчика.

5 (05-04-2019 07:58:35 отредактировано Sapphire)

Re: вопрос по дисплею Nextion NX3224T024_011

Доброго времени суток, вот схема подключения, и ещё, можно пример обращения диаграммы к разным переменным, я не пойму чуток как это осуществить, спасибо...

P.S. Не совсем понятно применение 6 подтяжек 4,7 кОм на все 6 датчиков, так как они находятся на одном канале и опрашиваются поочередно

Вложений в сообщении

Иконка вложения IMG_1240.JPG 1.56 мб, скачивался 115 раз, последний раз 2019-04-05 

6

Re: вопрос по дисплею Nextion NX3224T024_011

Sapphire пишет:

...можно пример обращения диаграммы к разным переменным, я не пойму чуток как это осуществить, спасибо...

В принципе, это делается через коммутатор, но в данном случае есть небольшая сложность. В исходном примере в одну переменную закладывалась информация о температуре и состоянии светодиода. Тут, т.к. датчиков много, скорее всего придется менять подход: отправлять температуру каждого из датчиков в своей переменной, а состояние светодиода в своей. В итоге поменяется и обработка данных на стороне дисплея. По этому сначала нужно принять принципиальное решение об изменении подхода, а потом выбирать способ реализации, т.к. результат можно получить несколькими разными способами.

Sapphire пишет:

...Не совсем понятно применение 6 подтяжек 4,7 кОм на все 6 датчиков, так как они находятся на одном канале и опрашиваются поочередно...

Да все верно, достаточно одной подтяжки.

Сейчас система работает с 1 датчиком и не работает с 2мя одновременно. А она работает, если оставить 2й датчик, а первый отключить (на место 1го подключить 2й)?

7 (05-04-2019 14:25:43 отредактировано Sapphire)

Re: вопрос по дисплею Nextion NX3224T024_011

Сейчас система работает с 1 датчиком и не работает с 2мя одновременно. А она работает, если оставить 2й датчик, а первый отключить (на место 1го подключить 2й)?

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

8 (05-04-2019 14:07:54 отредактировано Sapphire)

Re: вопрос по дисплею Nextion NX3224T024_011

И ещё, проверьте пожалуйста на корректность внесенных изменений в проекте Nextion, файл выложил ниже, спасибо...

Вложений в сообщении

Иконка вложения test.HMI 225.46 кб, скачивался 459 раз, последний раз 2019-04-05 

9

Re: вопрос по дисплею Nextion NX3224T024_011

Sapphire пишет:

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

У вас правильно указаны адреса датчиков? Как вы их определили? Если датчик на шине 1, то для его опроса не требуется указания адреса, а если их несколько, то к каждому нужно обращаться по его адресу, иначе датчики не знают, кому сейчас отвечать.
В Вашей диаграмме адреса датчиков, в коммутаторах, стоят где-то посередине, т.е. сначала происходит попытка опроса датчика с нулевым адресом.

10

Re: вопрос по дисплею Nextion NX3224T024_011

У вас правильно указаны адреса датчиков? Как вы их определили?

Адреса указаны правильно, только прописаны с низу в верх, переписал с верху в низ и всё заработало, только на дисплей не могу их вывести, или Т0 или Т1 показывает на первой строке (кода меняю в диаграмме название), как отправить данные для va5.vaI?

Вложений в сообщении

Иконка вложения c5nano_touch_control c 6 датчиками.cfd 8.67 кб, скачивался 262 раз, последний раз 2019-04-05 

11

Re: вопрос по дисплею Nextion NX3224T024_011

Попробуйте так (см.вложение).
Только для универсализации, лучше для передачи данных датчиков использовать первые 6 переменных (va0,va1,va2,va3,va4,va5). Нужно будет адаптировать Вашу программу для дисплея. Также лучше обрабатывать все данные датчиков в одном таймере (tm0) - переменные ведь используются разные. Ну и положение состояния светодиода нужно отслеживать как можно чаще.

А какие диапазоны температур будут измеряться?

Вложений в сообщении

Иконка вложения c5nano_touch_control c 6 датчиками_1.cfd 8.35 кб, скачивался 405 раз, последний раз 2019-04-05 

12

Re: вопрос по дисплею Nextion NX3224T024_011

А какие диапазоны температур будут измеряться?

Диапазоны температур будут до 99 градусов, это пока экспериментально...

13 (08-04-2019 13:41:06 отредактировано Sapphire)

Re: вопрос по дисплею Nextion NX3224T024_011

попробовал диаграмму что вы выложили и прописать все команды в одном таймере (tm0), результат, дисплей отображает данные одного датчика на двух строках, так как в диаграмме введены 2 серийника датчиков, то есть диаграмма опрашивает датчики но данные шлёт одного и того же

va1.val=va0.val
va2.val=va1.val/1000
va4.val=va2.val*10/18
cov va2.val,va3.txt,0
va2.val=va2.val*1000
va1.val=va1.val-va2.val
va2.val=va1.val/100
if(va2.val>0)
{
  t0.txt="-"
  j0.val=10-va4.val
}else
{
  t0.txt=""
  j0.val=10+va4.val
}
if(va2.val>0)
{
  p0.pic=1
  p1.pic=3
  tsw m0,0
  tsw m1,1
}else
{
  p0.pic=0
  p1.pic=2
  tsw m0,1
  tsw m1,0
}
t0.txt=t0.txt+va3.txt
va2.val=va2.val*100
va1.val=va1.val-va2.val
va2.val=va1.val/10
va6.val=va5.val
va7.val=va6.val/1000
va9.val=va7.val*10/18
cov va7.val,va8.txt,0
va7.val=va7.val*1000
va6.val=va6.val-va7.val
va7.val=va6.val/100
if(va7.val>0)
{
  t2.txt="-"
  j1.val=10-va9.val
}else
{
  t2.txt=""
  j1.val=10+va9.val
}
t2.txt=t2.txt+va8.txt
va7.val=va7.val*100
va6.val=va6.val-va7.val
va7.val=va6.val/10
va11.val=va10.val
va12.val=va11.val/1000
va14.val=va12.val*10/18
cov va12.val,va13.txt,0
va12.val=va12.val*1000
va11.val=va11.val-va12.val
va12.val=va11.val/100
if(va12.val>0)
{
  t4.txt="-"
  j2.val=10-va14.val
}else
{
  t4.txt=""
  j2.val=10+va14.val
}
t4.txt=t4.txt+va13.txt
va12.val=va17.val*100
va11.val=va11.val-va12.val
va14.val=va11.val/10
va16.val=va15.val
va17.val=va16.val/1000
va19.val=va17.val*10/18
cov va17.val,va18.txt,0
va17.val=va17.val*1000
va16.val=va16.val-va17.val
va17.val=va16.val/100
if(va17.val>0)
{
  t6.txt="-"
  j3.val=10-va19.val
}else
{
  t6.txt=""
  j3.val=10+va19.val
}
t6.txt=t6.txt+va18.txt
va17.val=va17.val*100
va16.val=va16.val-va17.val
va19.val=va16.val/10
va21.val=va20.val
va22.val=va21.val/1000
va24.val=va22.val*10/18
cov va22.val,va23.txt,0
va22.val=va22.val*1000
va21.val=va21.val-va22.val
va22.val=va21.val/100
if(va22.val>0)
{
  t8.txt="-"
  j4.val=10-va24.val
}else
{
  t8.txt=""
  j4.val=10+va24.val
}
t8.txt=t8.txt+va23.txt
va22.val=va22.val*100
va21.val=va21.val-va22.val
va24.val=va21.val/10
va26.val=va25.val
va27.val=va26.val/1000
va29.val=va27.val*10/18
cov va27.val,va28.txt,0
va27.val=va27.val*1000
va26.val=va26.val-va27.val
va27.val=va26.val/100
if(va27.val>0)
{
  t10.txt="-"
  j5.val=10-va29.val
}else
{
  t10.txt=""
  j5.val=10+va29.val
}
t10.txt=t10.txt+va28.txt
va27.val=va27.val*100
va26.val=va26.val-va27.val
va29.val=va26.val/10

14

Re: вопрос по дисплею Nextion NX3224T024_011

Если использовалась диаграмма примера без доработок, то обращая внимание на следующее:

Только для универсализации, лучше для передачи данных датчиков использовать первые 6 переменных (va0,va1,va2,va3,va4,va5)

Диаграмма шлет данные датчиков температуры в переменных va0,va1,va2,va3,va4,va5. Это сделано, чтобы размер сообщений для дисплея был одинаковый (при использовании для передачи значения температуры переменных типа va10 и т.п., наряду с va0, пришлось бы изменять длину сообщения и усложнять его формирование из-за смещения байт).
Проще изменить обработку данных на стороне дисплея: не использовать в вычислениях переменные, в которых передается информация от контроллера.

15

Re: вопрос по дисплею Nextion NX3224T024_011

Спрашивая про диапазон температур я имел в виду предполагается ли измерение и отображение отрицательных значений температуры.

16

Re: вопрос по дисплею Nextion NX3224T024_011

Спрашивая про диапазон температур я имел в виду предполагается ли измерение и отображение отрицательных значений температуры.

в будущем да, пока с отображением бы разобраться

17

Re: вопрос по дисплею Nextion NX3224T024_011

не использовать в вычислениях переменные, в которых передается информация от контроллера.

маленький пример приведите пожалуйста, если не затруднит, спасибо...

18

Re: вопрос по дисплею Nextion NX3224T024_011

Переменные va0 и va1 получены от контроллера. В вычислениях используются переменные с другими, более "поздними", номерами (для примера все они имеют номера va5x).

va51.val=va0.val
va52.val=va51.val/1000
va54.val=va52.val*10/18
cov va52.val,va53.txt,0
va52.val=va52.val*1000
va51.val=va51.val-va52.val
va52.val=va51.val/100
if(va52.val>0)
{
  t0.txt="-"
  j0.val=10-va54.val
}else
{
  t0.txt=""
  j0.val=10+va54.val
}
if(va52.val>0)
{
  p0.pic=1
  p1.pic=3
  tsw m0,0
  tsw m1,1
}else
{
  p0.pic=0
  p1.pic=2
  tsw m0,1
  tsw m1,0
}
t0.txt=t0.txt+va53.txt
va52.val=va52.val*100
va51.val=va51.val-va52.val
va52.val=va51.val/10
va56.val=va1.val
va57.val=va56.val/1000
va59.val=va57.val*10/18
cov va57.val,va58.txt,0
va57.val=va57.val*1000
va56.val=va56.val-va57.val
va57.val=va56.val/100
if(va57.val>0)
{
  t2.txt="-"
  j1.val=10-va59.val
}else
{
  t2.txt=""
  j1.val=10+va59.val
}
t2.txt=t2.txt+va58.txt
va57.val=va57.val*100
va56.val=va56.val-va57.val
va57.val=va56.val/10
...

19

Re: вопрос по дисплею Nextion NX3224T024_011

то есть мне нужно удалить переменные выше va5?

и тогда получается
к примеру, есть только 1 таймер (tm0) и 5 переменных (va0,va1,va2,va3,va4)
значит

va1.val=va0.val
va2.val=va1.val/1000
va4.val=va2.val*10/18
cov va2.val,va3.txt,0
va2.val=va2.val*1000
va1.val=va1.val-va2.val
va2.val=va1.val/100

это для первого датчика

а для второго как сделать, я понимаю что нужно добавлять цифры слагая 5 к числу с первого датчика, но если переменных всего 5 то при сложении я получаю цифры переменных которых нет, и этот текст не пропишется в дисплей, или я что то не понял?

20

Re: вопрос по дисплею Nextion NX3224T024_011

va0 содержит полученную от контроллера температуру 1го датчика; va1 - 2го (тоже полученную от контроллера); va2 - 3го; va3 - 4го; va4 - 5го; va5 - 6го.
В обработке могут использоваться переменные начиная с va6.

va6.val=va0.val - присвоение переменной va6 значения переменной va0, полученной от контроллера
va7.val=va6.val/1000
va10.val=va7.val*10/18
...
va12.val=va1.val - присвоение переменной va12 значения переменной va1, полученной от контроллера
va13.val=va12.val/1000
va15.val=va13.val*10/18
...

Просто в предыдущем примере я начал, для наглядности, нумерацию переменных для обработки значения температуры с va51. А так можно начать с va6.

21 (09-04-2019 07:45:37 отредактировано Sapphire)

Re: вопрос по дисплею Nextion NX3224T024_011

Доброго времени суток, сейчас попробую

22

Re: вопрос по дисплею Nextion NX3224T024_011

Доброго времени суток, всё получилось спасибо за ответы, ещё можно ли для переключателя LED 1 назначить отдельные переменные чтоб не ждать визуального изменения после нажатия на тач, сама команда вкл-выкл происходит сразу же, только приходится ждать визуализации до 6 секунд, так как идёт опрос 6 датчиков, в принципе не критично но всё же...

23

Re: вопрос по дисплею Nextion NX3224T024_011

Я изначально предлагал включать состояние led в каждое сообщение контроллера. Тогда, при обработке дисплеем данных в одном таймере, обновление led происходило бы на каждом цикле таймера.
Можно было бы все упростить, если бы можно было отказаться от использования прогрессбара для отображения температуры, т.е. остановиться только на отображении текста.

24

Re: вопрос по дисплею Nextion NX3224T024_011

Модифицированный вариант проекта с 6-ю термодатчиками.
Данные всех термодатчиков и состояния светодиода передаются в одной текстовой переменной. В результате на стороне дисплея все обрабатывается гораздо легче: в одном таймере, с минимумом переменных, более компактный и понятный код обработки.
Обновление значений температуры будет происходить примерно 1 раз в 6 секунд (по мере опроса), обновление состояния светодиода 1 раз в 500мс.

Вложений в сообщении

Иконка вложения c5nano_touch_control c 6 датчиками_2.cfd 20.25 кб, скачивался 318 раз, последний раз 2019-04-12 

Иконка вложения test.HMI 207.88 кб, скачивался 415 раз, последний раз 2019-04-12 

25 (15-04-2019 13:33:29 отредактировано Sapphire)

Re: вопрос по дисплею Nextion NX3224T024_011

попробую так спасибо