Страница 933 из 1190 ПерваяПервая ... 4338338839239319329339349359439831033 ... ПоследняяПоследняя
Показано с 9,321 по 9,330 из 11900

Тема: ВОПРОС-ОТВЕТ (отвечаем на простые вопросы от новичков)

  1. #9321

    По умолчанию

    Я придерусь к этому участку в Ардуино-Идиотино-Дурино:
    Код:
    //////////////// Регистры вашего Slave ///////////////////
    enum 
    {     
    //Просто добавьте или удалите регистры. Первый регистр начинается по адресу 0
      slave_to_master_val_1,          //  с адресом массива 0
      slave_to_master_val_2,          //  с адресом массива 1
      slave_to_master_val_3,          //  с адресом массива 2
      slave_to_master_val_4,          //  с адресом массива 3
      slave_to_master_val_5,          //  с адресом массива 4
      master_to_slave_val_1,          //  с адресом массива 5
      HOLDING_REGS_SIZE // Это не удалять размер массива HOLDING_REGS.
      //общее количество регистров для функции 3 и 16 разделяет тотже самый массив регистров
      //т.е. то же самое адресное пространство
    };
    unsigned int holdingRegs[HOLDING_REGS_SIZE]; // функции 3 и 16 массив регистров
    а) В Ардуино всего ШЕСТЬ регистров, а не пять, как ты тут пытаешься считывать
    б) Запись регистров в Ардуино поддерживается командой 16 (это прямо указано в проекте), а не 6, как у тебя в проекте ПЛК.
    в) Я ни фига не понимаю, как ЭТО работало в OPC, так как в Ардуино написано:
    Код:
    myservo.write(holdingRegs[master_to_slave_val_1]);
    То есть, на Серву передаётся значение ШЕСТОГО регистра, согласно объявлениям, приведённым выше.
    Самая моя придирка (согласо подписи про психопата) - это то, что надо давать понятные имена переменным, мать же вашу курвичную же туды-растуды!!
    То есть, объявление должно быть таким:
    Код:
    enum 
    {     
    //Просто добавьте или удалите регистры. Первый регистр начинается по адресу 0
      Reg_PressureDifferent,          //  с адресом массива 0 = Давление Дифференциальное (чтение)
      Reg_PressureAtm,                //  с адресом массива 1 = Давление Атмосферное (чтение)
      Reg_Temperature,                //  с адресом массива 2 = Температура (чтение)
      Reg_Ves,                        //  с адресом массива 3 = Весы (чтение)
      Reg_Servo,                      //  с адресом массива 4 = Сервопривод (запись)
      HOLDING_REGS_SIZE // Это не удалять размер массива HOLDING_REGS.
      //общее количество регистров для функции 3 и 16 разделяет тотже самый массив регистров
      //т.е. то же самое адресное пространство
    };
    И дальше код переписать с использованием этих имён, а не грёбаных чёртовых идиотских номеров!
    Чтобы код выглядел ТАК:
    Код:
    myservo.write(holdingRegs[Reg_Servo]);
    и был понятным!!! Это исключает ошибки копипасты вида "Так... а под каким номером у меня серва? Вроде под пятым... тут поправил, тут нет".

    Приведу ещё участочек. ХОСПОДЯ!! Я хочу насилия! Kill 'em All!!
    Код:
      holdingRegs[slave_to_master_val_3] = bmp180.getPressure(); 
      holdingRegs[slave_to_master_val_2] = analogRead(sensorPin);
      holdingRegs[slave_to_master_val_5] =  reading;
    Вот ШТО это за ужас? Что, куда и кому присваивается? Получается, если следовать старым объявлениям, что тут регистры, что ли, не по порядку идут? И вроде как с пятого мы что-то читаем, а для сервы в тот же "пятый" в ПЛК пишем, потому что думаем, что они идут подряд. А серва получается шестой.
    Последний раз редактировалось Cs-Cs; 13.01.2023 в 11:41.
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net | Канал в ТГ @CsCsNetLab

  2. #9322

    По умолчанию

    По резистору 120Ом,это согласующий резистор и в данном случае он не причем. Разбор в адресных пространствах.

  3. #9323

    По умолчанию

    6ть регистров я сделал в процессе игры с адресами,что бы адресация начиналась с 1го адреса. Ардуино сляпал на скорую просто что бы данные шли какие нибудь для тестов.Замечания принимаю.

  4. #9324

    По умолчанию

    Цитата Сообщение от Sandkon Посмотреть сообщение
    6ть регистров я сделал в процессе игры с адресами,что бы адресация начиналась с 1го адреса. Ардуино сляпал на скорую просто что бы данные шли какие нибудь для тестов.Замечания принимаю.
    Ну а в итоге оказался двоичный код: два варианта адресации в ПЛК (с 0 и 1), два в Ардуино (с 0 и 1), два с числом регистров (5 или 6) дали 2 х 2 х 2 = 8 вариантов глюков =)
    Не надо! Начни лучше последовательно:
    а) Сделай карту регистров в Ардуино начисто
    б) Присвой пока в коде Ардуино этим регистрам какие-то понятные значения типа 1, 2, 3, 4, 5
    в) Добейся, чтобы ПЛК их верно читал или писал (вот тут пусть и будут опыты)
    ...а потом уже добавляй реальные датчики и устройства с реальными данными, чтобы в них не путаться.
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net | Канал в ТГ @CsCsNetLab

  5. #9325

    По умолчанию

    2023-01-13_11-58-42.png Вот что получилось .Данные все но как говориться не на своих местах.Сдвиг по кругу: Давление .диф. на 4м адресе. И таки запись в серу происходит по 06 и никак по другому. В Ардуино примере на базе которого устройство ошибка в комента.

  6. #9326
    Banned
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,664

    По умолчанию

    Цитата Сообщение от Sandkon Посмотреть сообщение
    И таки запись в серу происходит по 06 и никак по другому. В Ардуино примере на базе которого устройство ошибка в комента.
    пока переписывайтесь с Cs-Cs а потом дождемся кто посоветует либо на бибки перейти либа стринг использовать, тогда станет интереснее

  7. #9327

    По умолчанию

    А какие данные должны быть? Вот 36275, 28, 54, 547 и 140 - это ж данные? Значит всё работает =)
    Сделай тестовые данные, а?

    capzap А это тут при чём? Мне самому интересно, что это и почему это так криво. И было бы интересно покопаться, если бы его железо было на столе у меня.

  8. #9328

    По умолчанию

    https://disk.yandex.ru/d/tdv-ICClHOXScg исправленные файлы(добавил файл конфигурации овенопс)
    Скрин не получается загрузить но сдвиг остается :данные с Давление диф по третьему адресу в ПЛК .Почему так пока объяснений нет

  9. #9329

  10. #9330

    По умолчанию

    В ОПС все четко, в кодесис со сдвигом по кругу

Страница 933 из 1190 ПерваяПервая ... 4338338839239319329339349359439831033 ... ПоследняяПоследняя

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

Ваши права

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