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

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

  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

  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

  5. #9325

    По умолчанию

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

  6. #9326
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,225

    По умолчанию

    Цитата Сообщение от Sandkon Посмотреть сообщение
    И таки запись в серу происходит по 06 и никак по другому. В Ардуино примере на базе которого устройство ошибка в комента.
    пока переписывайтесь с Cs-Cs а потом дождемся кто посоветует либо на бибки перейти либа стринг использовать, тогда станет интереснее
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  7. #9327

    По умолчанию

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

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

  8. #9328

    По умолчанию

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

  9. #9329

  10. #9330

    По умолчанию

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

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

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

Ваши права

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