Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 18 из 18

Тема: ПЛК200 + DS18B20

  1. #11

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Объединение UNION не нужно в данном случае, полученные 2 шт. WORD присвоить в переменные INT, и просто конвертировать INT_TO_REAL и потом разделить на 10.
    В WORD (INT) уже должны быть значения, типа 235, после конвертации и деления на 10 получите 23,5 градуса.
    INT нужен, чтобы не потерять отрицательные значения (если они будут). Например -2 градуса в INT, в переменной WORD будет 65534
    А почему нужно делить именно на 10? Я находил информацию о том что полученное число нужно умножить на 0.0625 или поделить на 16 (значения все равно одинаковые получаются)
    10.png - вот делю на 10, а при умножении на 0.0625 или делении на 16 получается 39 градусов (датчик лежит на батарее)
    знак.png - еще компилятор выдает предупреждение. Его можно игнорировать? Знак в случае чего не потеряется?
    Последний раз редактировалось KorSerO; 06.12.2023 в 11:28.

  2. #12

    По умолчанию

    Вроде сделал как вы предложили, но ничего не поменялось. Мб что то еще нужно?
    канал.png переменные.png
    прога.png - вот тут видно что на выходе имеем какую то белиберду (сейчас эти значения сменились нулями)

  3. #13

    По умолчанию

    Цитата Сообщение от KorSerO Посмотреть сообщение
    А почему нужно делить именно на 10? Я находил информацию о том что полученное число нужно умножить на 0.0625 или поделить на 16 (значения все равно одинаковые получаются)
    - вот делю на 10, а при умножении на 0.0625 или делении на 16 получается 39 градусов (датчик лежит на батарее)
    - еще компилятор выдает предупреждение. Его можно игнорировать? Знак в случае чего не потеряется?
    На счёт деления на 10, это предположение, обычно так передаётся дробная часть через целочисленную переменную типа INT, как у вас сделано, должно быть в инструкции.
    А вот что я написал вы не сделали нормально, переменные оставили старые, какие там типы на скринах не видно. У вас должно что то прийти в обеих переменных в слейве. Удалите всё и сделайте снова как написал. Кроме того, после таких переделок надо очистить всё и компилировать всё.
    Последний раз редактировалось kondor3000; 06.12.2023 в 13:23.

  4. #14

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    На счёт деления на 10, это предположение, обычно так передаётся дробная часть через целочисленную переменную типа INT, как у вас сделано, должно быть в инструкции.
    А вот что я написал вы не сделали нормально, переменные оставили старые, какие там типы на скринах не видно. У вас должно что то прийти в обеих переменных в слейве. Удалите всё и сделайте снова как написал. Кроме того, после таких переделок надо очистить всё и компилировать всё.
    инт.png - вот я поменял типы и на скринах выше видно что эффекта это не дало
    нули.png - вот что происходит при запуске
    Последний раз редактировалось KorSerO; 06.12.2023 в 13:42.

  5. #15

    По умолчанию

    Странно, создал сейчас новый проект только с датчиками и там все нормально работает. MAGIC
    Придется ковыряться что в моем не так((

  6. #16

    По умолчанию

    Цитата Сообщение от KorSerO Посмотреть сообщение
    Странно, создал сейчас новый проект только с датчиками и там все нормально работает. MAGIC
    Придется ковыряться что в моем не так((
    Всё уже написал, удалить UNION вообще, переменные INT создать в PLC_PRG, вставить их в слейв, после переделки, очистить всё и компилировать всё!
    Последний раз редактировалось kondor3000; 06.12.2023 в 15:23.

  7. #17

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Всё уже написал, удалить UNION вообще, переменные INT создать в PLC_PRG, вставить их в слейв, после переделки, очистить всё и компилировать всё!
    Все заработало так как нужно, спасибо большое за помощь! Теперь буду пробовать брать значения с датчиков по вызову в программе.

  8. #18

    По умолчанию

    Цитата Сообщение от KorSerO Посмотреть сообщение
    Все заработало так как нужно, спасибо большое за помощь! Теперь буду пробовать брать значения с датчиков по вызову в программе.
    Это плохой вариант, чтение, тем более с датчиков должно быть циклическим и постоянным. Можно изменить период чтения.
    А вот запись можно делать по изменению или по биту из программы.

Страница 2 из 2 ПерваяПервая 12

Похожие темы

  1. 4 датчика DS18B20 +плк150
    от g.alexsandr в разделе ПЛК1хх
    Ответов: 6
    Последнее сообщение: 24.11.2022, 19:52
  2. ПЛК200 и SQL
    от Сема в разделе ПЛК2хх
    Ответов: 1
    Последнее сообщение: 13.10.2022, 10:12
  3. Проблема с RS-485 на ПЛК200
    от Pavel_L в разделе ПЛК2хх
    Ответов: 9
    Последнее сообщение: 14.04.2022, 11:50
  4. ПЛК200 OPC UA
    от evgeni85 в разделе ПЛК2хх
    Ответов: 5
    Последнее сообщение: 13.03.2022, 17:09
  5. DS18B20 и прочие датчики 1wire (iButton)
    от ASZ в разделе Разработки
    Ответов: 0
    Последнее сообщение: 06.03.2013, 01:31

Метки этой темы

Ваши права

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