Страница 726 из 855 ПерваяПервая ... 226626676716724725726727728736776826 ... ПоследняяПоследняя
Показано с 7,251 по 7,260 из 8547

Тема: CODESYS V3.5. Вопросы и ответы

  1. #7251

    По умолчанию

    Ну похоже там фантомные данные, я обычно в подобных случаях сначала нулями всё забиваю. Иначе тоже начинаются всякие аномалии приходить.

    PS
    Типа
    Код:
    MEM.MemFill(ADR(STR1000), SIZEOF(STR1000), 16#20);
    STR1000:= ' ';
    https://ftp.owen.ru/CoDeSys3/98_Book...nipulation.pdf
    Последний раз редактировалось МихаилГл; 04.07.2024 в 12:35.

  2. #7252

    По умолчанию

    Цитата Сообщение от ВладОвен Посмотреть сообщение
    Перед запуском делал сброс, что-бы все переменные были пустыми.
    С плёткой ПРОДЛОЖУ. Потому что СБРОС НЕ РАВЕН ОЧИСТКЕ ПАМЯТИ ПЕРЕМЕННОЙ.
    У тебя ошибки, как у программиста СИ 80ых, блин. Смысл в том, что переменная просто указывает на область памяти.
    И никто не говорит, что эта память не останется заполненной чем-то.
    Магия по шагам:
    1. Все строки заканчиваются символом нуля. В конце строки. Все строковые функции работают со строками по этому символу.
    2. Ты копируешь буфер целиком. Что там в конце и где там конечный символ нуля строки - хрен знает.
    3. Сброс может не очищать память ПЛК. Он просто перезапускает программу с самого начала. Поэтому некая твоя строка до сих пор хранит старый результат. Возможно, это строка, ИЗ который ты копируешь данные.

    Поэтому правилом хорошего тона является правило инициализировать и очищать все переменные и буферы, которые используются.
    Делаешь MemSet(), заполняя буфер нулями. А потом с ним работаешь.

    Почему я упомянул про СИ - потому что там в некоторых компиляторах была такая фишка:
    * Если программа компилируется в DEBUG - то все переменные очищаются сами и заполняются нулями.
    * Если программа компилируется в RELEASE - то никакие переменные не очищаются вообще.
    И поэтому какое-нить объявление типа int i в DEBUG будет равно нулю, а в RELEASE - 31525, например.
    Чисть буферы!
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net | Канал в ТГ @CsCsNetLab

  3. #7253

    По умолчанию

    Цитата Сообщение от МихаилГл Посмотреть сообщение
    Код:
    MEM.MemFill(ADR(STR1000), SIZEOF(STR1000), 16#20);
    STR1000:= ' ';
    Не понял. А почему тут забиваешь пробелами (16#20), а не нулями (16#00), как пишешь? Поторпился ответить? Поправь код пожалуйста.
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net | Канал в ТГ @CsCsNetLab

  4. #7254

    По умолчанию

    Цитата Сообщение от Cs-Cs Посмотреть сообщение
    Не понял. А почему тут забиваешь пробелами (16#20), а не нулями (16#00), как пишешь? Поторпился ответить? Поправь код пожалуйста.
    Это из рабочего примера код. У меня там JSON и да, забиваю все пробелами, чтоб клиент при считывании JSON нормально работал. Ну я же написал, "обычно...". А код выдернул из рабочего проекта и сказал "Типа".

  5. #7255

    По умолчанию

    Да. Дело было в буферах. Если его чистить, то все норм. Поведение СБРОСа буду учитывать. Спасибо.

    Скрытый текст:
    Открыл код программиста из 80-х и увидел там про буфера...
    Screenshot 2024-07-04 114634.png

    Видимо, там про другие буфера в комментариях...

  6. #7256

    По умолчанию

    Цитата Сообщение от ВладОвен Посмотреть сообщение
    Да. Дело было в буферах. Если его чистить, то все норм. Поведение СБРОСа буду учитывать. Спасибо.
    ОК. Ради интереса, если это не личное, скажи, почему у тебя так получается (я ж по форуму вижу): ты делаешь, не подумаешь, накосячишь, закидываешь форум вопросами, потом на тебя орут, показывают как надо...
    При этом ошибки у тебя элементарные. Вон типа как с SIZEOF().
    Мне бы вот хотелось узнать то, как ты мыслишь и рассуждаешь, раз упускаешь такие ошибки. Я не берусь поучать, а просто спрошу: неужели ты не считаешь время, которое тратишь на поиск косяков? У тебя ж его уходит значительно больше, чем на сами программы.
    (Вот тут позанудствую) У Жени Кислова есть крутая статья про отладку программ. Там как раз про буфера есть =)
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net | Канал в ТГ @CsCsNetLab

  7. #7257

    По умолчанию

    Хм.
    Ну я вообще-то об этом не задумываюсь. Просто когда есть вопрос, я пишу на форуме всё. А когда нет вопросов, делаю программу и все.
    Я не считаю, что на меня орут на форуме. Это всего лишь решения рабочих вопросов.
    И оно может быть полезным даже кому-то другому. Или кому то на этом форуме жалко места на серверах.

    Только ты не подумай, что я оправдываюсь.

  8. #7258

    По умолчанию

    Не, не! Я не про оправдываться или винить. Мне был интересен именно сам ход мышления.
    Мол, почему один раз не разобраться, не проверить всё-всё - и потом фигачить программы быстрее и без ошибок, чем на каждую спрашивать.
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net | Канал в ТГ @CsCsNetLab

  9. #7259

    По умолчанию

    Коллеги, добрый день.
    Настроил удалённое подключение к ПЛК210 через интернет.
    Подключаюсь к веб-визуализации, всё работает.
    Пытаюсь подключиться к ПЛК из среды Codesys - подключается с 5-го раза или вообще не подключается. Пишет "Никакое устройство не отвечает на запрос поиска".
    По ощущениям, просто не успевает соединиться из-за медленного интернета.
    Можно ли как-то увеличить время ожидание ответа контроллера?
    Спасибо.Снимок.PNG

  10. #7260
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,595

    По умолчанию

    Цитата Сообщение от ultra76 Посмотреть сообщение
    Коллеги, добрый день.
    Настроил удалённое подключение к ПЛК210 через интернет.
    Подключаюсь к веб-визуализации, всё работает.
    Пытаюсь подключиться к ПЛК из среды Codesys - подключается с 5-го раза или вообще не подключается. Пишет "Никакое устройство не отвечает на запрос поиска".
    По ощущениям, просто не успевает соединиться из-за медленного интернета.
    Можно ли как-то увеличить время ожидание ответа контроллера?
    Спасибо.Снимок.PNG
    Добрый день.
    Свяжитесь со мной завтра утром по телеграм, пожалуйста.

Страница 726 из 855 ПерваяПервая ... 226626676716724725726727728736776826 ... ПоследняяПоследняя

Похожие темы

  1. Панели оператора СП3xx. Вопросы и ответы
    от Мурат Ахриев в разделе Панели оператора (HMI)
    Ответов: 4000
    Последнее сообщение: Вчера, 12:05
  2. Панели оператора ИП320. Вопросы и ответы
    от automat в разделе Панели оператора (HMI)
    Ответов: 849
    Последнее сообщение: 16.11.2025, 08:58
  3. ИПП120. Вопросы и ответы
    от Р.Александр в разделе Программируемые реле
    Ответов: 273
    Последнее сообщение: 08.09.2025, 13:21
  4. Индикатор ИП120 , вопросы- ответы
    от rovki в разделе Программируемые реле
    Ответов: 56
    Последнее сообщение: 03.11.2017, 15:58
  5. Панели оператора СП270. Вопросы и ответы
    от Давидюк в разделе Панели оператора (HMI)
    Ответов: 930
    Последнее сообщение: 15.05.2017, 17:12

Ваши права

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