Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 17

Тема: Плк63, 485-й мастер. Открытие порта и опрос.

  1. #1

    По умолчанию Плк63, 485-й мастер. Открытие порта и опрос.

    Доброго времени суток господа. Угораздило меня не отговорить заказчика и взяться за проект с существующим ПЛК63. До этого имел дело только с ПР-ками и с ПЛК1**, а там это дело все куда проще реализовано. Дело срочное, а голова уже взрывается. Суть работы 485-го мастера через библиотеки я уже уловил, но не могу ухватить детали. Примеры по форуму 63/73 лопатил, нашел уже и открытие порта, и проекты с командными словами и кучу всего еще. Не могу теперь толком в голове увязать. Работаю на CFC. Собственно прошу помощи в следующих вопросах.

    1) Открытие порта. Нашел несколько вариантов примеров. Смущает то, что ни один из них не выполнен на стандартных блоках из библиотеки SysLibCom. Правильно ли я понимаю, что при открытии порта через SysComOpen на входе должен быть номер порта, на выходе дескриптор, который потом можно брать на вход SysComSetSettings и на вход блока запроса через протокол Модбас из библиотеки Modbus.lib?
    2) Обязательно ли задавать параметры порта и запроса модбаса через переменные или, при условии их неизменности, можно просто задавать их напрямую? По голове не бить, программист из меня пока (п)аховый.
    3) Есть какой-то простейший пример, но со всеми шагами? Открытие порта+запрос чего угодно из слэйв устройства по модбасу, только на CFC? Сложновато с непривычки вникать в логику других языков. Проблема в том, что суть и логику работы я понимаю, но технические детали упускаю, а время жмет.

    Заранее всем спасибо.

  2. #2

    По умолчанию

    1) Поведение SysLibCom на ПЛК1хх и ПЛКхх ничем, кроме номеров портов и возможностей железа не отличается. Что и не удивительно, т.к. код по сути один и тот-же.
    2) не обязательно, можно и напрямую
    3) Пример на CFC? Не, у нас традиционные наклонности ST форева!
    Тролль-наседка, добрый, нежный и ласковый

  3. #3

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    .. и возвращаемых SysComOpen значениях
    .. и необходимости пересброса питания для 63/73 (или стартового закрытия порта) //актуально при отладке
    Если писать код правильно - т.е. с деинициализацией выделенных ресурсов по событию STOP - проблем с переоткрытием порта нет.
    Тролль-наседка, добрый, нежный и ласковый

  4. #4

    По умолчанию

    В этом ПЛК работает механизм событий?

  5. #5

    По умолчанию

    Мозг почти расплавился. Не могу никаким образом получить адекватно данные через этот гребанный 63-й. Не хвататет теории. Порт открыл, запрос сделал. Рядом собраны физически ПЛК63+МУ110-8AC+Датчик 2-10 вольт. Разгребался в примерах, общую суть понял, набросал простейшую прогу - и ничерта не могу вытащить данные. Причем в примере на FBD тоже работает все как-то странно. Читает с 1-го входа модуля 2 вольта, но не реагирует на них потом. Ткните рожей, где и чего упустил?

    UPD: Неправильный пример всунул, заменил. Протестировал все на ПЛК100, с тем же модулем и датчиком, теми же настройками, адресами и скоростью - все работает через UMD в конфигурации. Все отлично видит и читает именно нужные мне 2*10 вольт и реагирует на изменение работы датчика. То есть я где-то косячу с выниманием данных из массива и не могу понять где. Не хватате теоретической подготовки все же... Если все же не лень, дайте подсказку куда копать.
    Вложения Вложения
    Последний раз редактировалось Аши; 13.04.2022 в 21:02.

  6. #6

    По умолчанию

    Пример опроса МВ110-8AC:
    Код:
    VAR
       MB_Get : MB_RD_HOLD_REGS;
       ComService : COM_SERVICE;
       Settings : COMSETTINGS;
       ComPortState : BYTE := 0;
       ES : BOOL := TRUE;
       MBTimeOut : TIME := T#100ms; //например
       Buffer : ARRAY[0..255] OF BYTE;
    END_VAR
    
    //настраиваем и открываем порт, например так:
    IF ComPortState = 0 THEN
       Settings.Port := 0;
       Settings.dwBaudRate := 19200;
       Settings.byParity := 0;
       Settings.dwTimeout := 5;
       Settings.byStopBits := 1;
       Settings.dwBufferSize := 0;
       Settings.dwScan := 0;
    END_IF
    
    ComService(ENABLE := ComPortState = 0, SETTINGS := Settings, TASK := OPEN_TASK);
    
    IF ComService.Ready THEN
       ComPortState := 2;
    END_IF
    
    //по готовности порта "работаем" с ним
    IF ComPortState = 2 THEN
    MB_Get(
       Enable := ES,
       Mode := MB_RTU,
       DevAddr := 1, //например
       FirstAddr := 280, //для МВ110-8AC
       Quantity := 32, //"выгоднее" читать из МВ110-8AC всю пачку значений регистров сразу, вместе со статусами каналов
       ComHandle := Settings.Port,
       TimeOut := MBTimeOut,
       Buffer := Buffer);
    ES := FALSE;
    IF MB_Get.Complete THEN
       IF MB_Get.Exception = 0 THEN
       ...//разбираем Buffer
       END_IF
       ES := TRUE;
    END_IF
    Для работы нужны Modbus.lib, ComService.lib, SysLibCom.lib. Буфер, надеюсь, сами сможете разобрать.
    Последний раз редактировалось Spawn; 14.04.2022 в 01:10.

  7. #7

    По умолчанию

    Я, за сегодня, чему только не научился. Третью ночь не сплю. И с массивами разобрался и с тем, как их выдергивать... На данный момент есть только одна проблема - хз как работает опрос. И я не могу сообразить что с этим делать. То есть у меня банально из ФБ опроса по модбасу только изредка выходит "тру" на статусе. В те моменты когда это проскакивает, я в переменной вижу свои заветные циферки, которые мне и нужны. Я вроде добрый кусок форума перерыл, в том числе нашел топик, где достопочтимый Валенок рассказывает про пьяных реализаторов Овена. Но это не связанно с моей проблемой. Я пятой точкой чую что загвоздка где-то в другом, возможно в проверке успешности опроса блока модбаса, но пробовал реализовать его как смог в CFC, ситуацию это не поменяло. Грешил бы на связь - так с ПЛК100 все без проблем с той же конфигурацией. Игрался с таймингом на входе блока опроса - при ноле и рядом - вообще выдает хз что, при 30 и выше ситуация которую описываю. При 150 и выше ничего не меняется, кроме чатсоты появления "успешного" опроса. Вот я в конечном итоге и не пойму, почему блок опроса работает не стабильно.

    ЗЫ: А откуда адрес 280? Это же статус вроде?
    Вложения Вложения

  8. #8

    По умолчанию

    А откуда адрес 280? Это же статус вроде?
    Да, пардон, если Вам статусы не нужны, то значения чуть ниже идут, с 288...

    где достопочтимый Валенок рассказывает про пьяных реализаторов Овена
    Нормально работает Modbus RTU и на 63-м, и на 73-м, и даже с теми же Modbus.lib, ComService.lib. Свой опросник на SysLibCom.lib (или UNM) все руки никак не доходят написать, но меня и работа библиотек Modbus.lib и ComService.lib вполне устраивает. Единственное неудобство у ПЛК63/73 может возникнуть (но это смотря для кого) - опрос нужно "поднимать" руками (на библиотеках, через конфигурацию не получится), но разовое и грамотное его написание этот недостаток снимает.

    На CFC не подскажу (Вам самому нужно вникать), но я делаю всю реализацию алгоритма на ST. В свое время, перед первым появлением ПЛК ОВЕН у меня в руках, перечитал кучу информации на данном форуме и понял, что лучше сразу двигаться в сторону ST и библиотечной работы с протоколами обмена, сейчас тупо копипаст из проекта в проект с небольшими дополнениями/изменениями.
    Последний раз редактировалось Spawn; 14.04.2022 в 02:35.

  9. #9

    По умолчанию

    То есть у меня банально из ФБ опроса по модбасу только изредка выходит "тру" на статусе
    Вы, кстати, проверяли мой код у себя?

    Можно его "оформить" в FB и пользовать в CFC, "подсовывая" номера слэйвов, адреса регистров и их количество...
    Последний раз редактировалось Spawn; 14.04.2022 в 08:00.

  10. #10

    По умолчанию

    Сейчас планирую заняться, спасибо. Суть проблемы не в языке, суть в моей голове. Я не понимаю что я упускаю. То ли порт закрывать после опроса, то ли фиксировать как-то данные из буфера в момент подтверждения отработки опроса... Почитал ещё форум, много похожего, но никакой конкретики. Пока склоняюсь к рабочему варианту осваивать ST и брать его для ФБ, а тело писать на CFC. Суть ST мне понятна, только матчасть надо подтянуть.

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. Ответов: 11
    Последнее сообщение: 23.08.2021, 10:20
  2. Ответов: 27
    Последнее сообщение: 10.09.2020, 10:33
  3. ПЛК63 опрос аналоговых входов
    от nevii в разделе ПЛК63/73
    Ответов: 3
    Последнее сообщение: 14.04.2018, 11:18
  4. плк63(мастер)+мва8+сп270
    от AVit в разделе ПЛК63/73
    Ответов: 15
    Последнее сообщение: 15.09.2011, 11:32
  5. МСД-100 + ПЛК63(мастер)/OwenPoolMaster
    от pt200 в разделе ПЛК63/73
    Ответов: 7
    Последнее сообщение: 28.09.2010, 11:48

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

Ваши права

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