Страница 8 из 13 ПерваяПервая ... 678910 ... ПоследняяПоследняя
Показано с 71 по 80 из 130

Тема: Универсальный диспетчер для Modbus.lib

  1. #71
    Пользователь
    Регистрация
    10.11.2014
    Адрес
    Санкт-Петербург
    Сообщений
    980

    По умолчанию

    Цитата Сообщение от Sergeba Посмотреть сообщение
    Не получается сделать задержку. Испольую Time(), но время не сохраняется. Пробовал в описании типа функции задать переменную и в неё передавать время - тоже 0.
    Это уже собственно к диспетчеру не имеет отношения. Но попробуйте просто стандартный таймер TON использовать. Проблем быть не должно.

  2. #72
    Пользователь
    Регистрация
    10.11.2014
    Адрес
    Санкт-Петербург
    Сообщений
    980

    По умолчанию

    Цитата Сообщение от Alexlyu Посмотреть сообщение

    * вопрос на засыпку: могу ли я менять скорость работы порта при вызове модуля? например одно устройство опрашивать на скорости 9600, другое на 19200 с одного порта?
    Настройка порта происходит на шаге dispOpeningPort в диспетчере, на который (шаг) мы уже более не возвращаемся, побывав там однажды. Если опрашивать модули на разных скоростях, то соответственно нужно, повторно настраивать порт на другую скорость.
    Одним словом, такая возможность не предусмотрена в текущей реализации.

  3. #73
    Пользователь
    Регистрация
    09.02.2016
    Адрес
    Тверь
    Сообщений
    28

    По умолчанию

    И так, методом страшнейших мучений и научного тыка я сделал из модулей fcE4_8400 fcMB110_32DN fcMY110_16P модуль MK110_8DN4R.
    Было настоящей пыткой разбираться в коде без комментариев, как понял работу, так и написал комменты в своём модуле. Особо сложно было врубиться в обработчик счётчиков модуля 32ДН.
    Когда это победил, получил проблемы с переносом данных из буфера.
    Долго искал, предположил, что есть перекрытие областей памяти, немного изменил порядок в структуре модуля и модуль полностью заработал.
    Вложения Вложения
    Последний раз редактировалось Alexlyu; 12.12.2019 в 18:42.

  4. #74
    Пользователь
    Регистрация
    10.11.2014
    Адрес
    Санкт-Петербург
    Сообщений
    980

    По умолчанию

    Цитата Сообщение от Alexlyu Посмотреть сообщение
    Было настоящей пыткой разбираться в коде без комментариев...
    Меня учили, что современный код, практически не нуждается в комментариях.
    Комментарии нужны были преимущественно тогда, когда писали на ассемблере. В настоящее время есть возможность давать любые имена переменным, поэтому хорошо продуманное именование переменных практически полностью заменяет комментарии.

  5. #75
    Пользователь
    Регистрация
    09.02.2016
    Адрес
    Тверь
    Сообщений
    28

    По умолчанию

    Цитата Сообщение от Спорягин Кирилл Посмотреть сообщение
    Меня учили, что современный код, практически не нуждается в комментариях.
    Комментарии нужны были преимущественно тогда, когда писали на ассемблере. В настоящее время есть возможность давать любые имена переменным, поэтому хорошо продуманное именование переменных практически полностью заменяет комментарии.
    А вот и нет. Скинул фотку кода программеру знакомому, который у нас в ЦПС работает, на оборонку. Их отдел на Си пишет. Так этот человек ужаснулся "а где комментарии!".
    Как бы не были названы переменные, всегда полезно знать, а чего хотел автор тут сделать, почему именно так сделал (часто варианты разные бывают, иногда другие варианты к краху приводят).
    Т.к. я задел больную тему, мы минут 10 обсуждали полезность комментариев и необходимость подробной документации к модулям.

    Вам то понятно, но другие то откуда знают, что происходит? Это нужно долго и мучительно просматривать связи, документацию на железо, затем тестировать и смотреть, "а что будет?".
    Вот листал я темы, как real получить. Этот вездессущий ОВЕН так да сих пор и неудосужился дать нормальное описание. Спасибо хоть супермодератору за видосик для CS3.5, и тот без комментариев к пачке указателей :-( (пока допёрло, что там за жонглирование, время много прошло).
    Один только Сазар там пытался этим ТруКодерам растолковать, какие описания должны быть: берём вот это, вот так кладём сюда, вот так потому-что ... , получаем вот это.
    Ведь не понятно даже, почему из буфера извлекаются данные с перемешиванием. Видно только, что это работает, значит так надо.
    Последний раз редактировалось Alexlyu; 13.12.2019 в 12:20.

  6. #76
    Пользователь
    Регистрация
    10.11.2014
    Адрес
    Санкт-Петербург
    Сообщений
    980

    По умолчанию

    Местами я пишу (цитаты по памяти): "Необходимо заново сформировать буфер", "Чтобы потом не проверять указатели" и т.д. Т.е. какие-то важные места я комментирую.
    Это первое.
    Второе. Думаю, что ваш товарищ работает в команде и комментарии нужны скорее другим.
    Тут я писал для себя. И только потом решил выложить свои труды.

  7. #77
    Пользователь
    Регистрация
    09.02.2016
    Адрес
    Тверь
    Сообщений
    28

    По умолчанию

    Цитата Сообщение от Спорягин Кирилл Посмотреть сообщение
    Местами я пишу (цитаты по памяти): "Необходимо заново сформировать буфер", "Чтобы потом не проверять указатели" и т.д. Т.е. какие-то важные места я комментирую.
    Это первое.
    Второе. Думаю, что ваш товарищ работает в команде и комментарии нужны скорее другим.
    Тут я писал для себя. И только потом решил выложить свои труды.
    Да, для других комменты.
    могу позавидовать вашей памяти!
    Я через год открываю какой то проект, и если не написал ранее, что и зачем я сделал, то идёт мучительное разбирательство, (а это что, а нафига, а как это вобще у меня работает, а почему я так сделал, можно же упростить... а, нет, нельзя, всё рушится)

  8. #78
    Пользователь
    Регистрация
    09.02.2016
    Адрес
    Тверь
    Сообщений
    28

    По умолчанию

    Поймал странный глюк, который нагуглить не смог. Вчера вечером всё работало, а сегодня модуль fcEI_7012(FC1) отказался работать. Судя мо mdlErr - ошибка 251 (mdlDispIsNullError), и вот эту ошибку не нарыл в описании овеновском modbus.lib и syslibcom, и гуглем, и поиском по форуму.
    Ладно... объявил fcEI_7012(FC3), туда пихнул целевой адрес, а на FC1 левый. загрузочный проект->перезагрузка = работает скотина! удалил FC1 -> загрузочный проект->перезагрузка = работает скотина!
    Что это было я так и не понял. Ведь я ничего не поменял, просто переобъявил под новым именем. НО! вечером работало после перезагрузок, а на следующий день не захотело.
    Если это залётная ошибка, то фиг с ней, а вот если такое периодически будет, то меня интегрируют в систему управления.
    Вот как этого беднягу:


    Этот то заработал (Disp1), а вот Disp0 встрял на модуле MK110 и сидит. Чертовщина. Только что работал.
    О, всё само заработало после перезалива и перезагрузки. я только сделал, чтоб MK110 сразу в ожидание встал после загрузки, пустил в опрос чуть позже.
    Очень пугает такое.
    Вложения Вложения
    Последний раз редактировалось Alexlyu; 13.12.2019 в 18:10.

  9. #79
    Пользователь
    Регистрация
    10.11.2014
    Адрес
    Санкт-Петербург
    Сообщений
    980

    По умолчанию

    Цитата Сообщение от Alexlyu Посмотреть сообщение
    Поймал странный глюк, который нагуглить не смог. Вчера вечером всё работало, а сегодня модуль fcEI_7012(FC1) отказался работать. Судя мо mdlErr - ошибка 251 (mdlDispIsNullError), и вот эту ошибку не нарыл в описании овеновском modbus.lib и syslibcom, и гуглем, и поиском по форуму.
    Ошибка mdlDispIsNullError устанавливается в функции fcModuleDispVerification (она входит в библиотеку) - смотрите вот это место:
    IF pDisp = Null THEN
    MdlBase.Error := mdlDispIsNullError;
    fcModuleDispVerification := FALSE;
    RETURN;
    END_IF;
    И означает, что в модулей не настроен указатель на диспетчер.

    Я посмотрел вы инициализируете сеть правильно.
    Не знаю как такое могло произойти.


    Цитата Сообщение от Alexlyu Посмотреть сообщение
    Этот то заработал (Disp1), а вот Disp0 встрял на модуле MK110 и сидит. Чертовщина. Только что работал.
    О, всё само заработало после перезалива и перезагрузки. я только сделал, чтоб MK110 сразу в ожидание встал после загрузки, пустил в опрос чуть позже.
    Очень пугает такое.
    Тут анализируйте свой модуль.

    Для уверенности могу сказать, что у меня на десятках объектов 24/7 все пашет идеально.

  10. #80
    Пользователь
    Регистрация
    09.02.2016
    Адрес
    Тверь
    Сообщений
    28

    По умолчанию

    Цитата Сообщение от Спорягин Кирилл Посмотреть сообщение
    Тут анализируйте свой модуль.
    Да, так и оказалось.
    Пришлось нумеровать каждый уровень "IF", открытие, закрытие. Один шаг оказался на уровень выше других.
    Теперь всё чётко. модуль МК110_8ДН4Р работает нормально.
    Вложения Вложения

Страница 8 из 13 ПерваяПервая ... 678910 ... ПоследняяПоследняя

Похожие темы

  1. Универсальный блок питания ПР114
    от sea в разделе Программируемые реле
    Ответов: 12
    Последнее сообщение: 13.10.2013, 22:56
  2. PCLogger - универсальный логгер для CDS v3
    от Mikhail Shvetsov в разделе ПЛК3хх
    Ответов: 0
    Последнее сообщение: 23.11.2012, 14:39
  3. Универсальный Modbus Сервер Инсат и 200 контроллеров ПЛК-100
    от lomtik в разделе Сетевые технологии
    Ответов: 17
    Последнее сообщение: 08.11.2012, 23:42
  4. Универсальный конфигурируемый регулятор
    от ОООСА в разделе Разработки
    Ответов: 32
    Последнее сообщение: 09.12.2009, 22:12
  5. Ответов: 7
    Последнее сообщение: 04.05.2009, 10:42

Ваши права

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