Страница 63 из 130 ПерваяПервая ... 1353616263646573113 ... ПоследняяПоследняя
Показано с 621 по 630 из 1291

Тема: CODESYS V3.5. Настройка обмена с другими устройствами (Modbus, ОВЕН, OPC и др.)

  1. #621

  2. #622

    По умолчанию

    ок, будем пробовать..

  3. #623

    По умолчанию

    Доброе утро!

    ПЛК210. SP14. OwenCommunication, Float

    Не выходит пока организовать нормальную IN_OUT или чтение/запись функцию.
    В примере дано отдельно описание на чтение и отдельно запись.
    И то и то хорошо работает, а вот когда я начинаю и читать и писать, имею проблемы

    Пробовал разделить через BLINK по 200мс, то чтение, то запись. Работает, когда угадываю промежуток, но скажем так себе решение.
    Пробовал сделать через блок с входами IN_OUT, выбивает в исключение иногда
    IF OUT1_old<>OUT1 OR OUT2_old<>OUT2 THEN
    IN:=OCL.WORD2_TO_REAL(awSlaveData[OUT1], awSlaveData[OUT2], FALSE);
    END_IF;

    IF IN_old<>IN THEN
    FB (rInput :=IN, wOutput1 => awSlaveData[OUT2], wOutput2 => awSlaveData[OUT1]);
    END_IF;

    IN_old:=IN;
    OUT1_old:=OUT1;
    OUT2_old:=OUT2;
    Для чего вообще нужно: например SP(REAL) вы ее пишете как с панели, так можете записать в нее и из кода.
    Регистры должны обновиться, а в случае изменения регистров, должна измениться связанная с ними переменная

    В конфигураторе ПЛК110 переменные именно так и работают.
    Как это сделать корректно в Codesys 3.5 SP14?
    +79104444236
    С уважением,
    Лапшин Вячеслав

  4. #624
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,064

    По умолчанию

    Цитата Сообщение от krollcbas Посмотреть сообщение
    Доброе утро!

    ПЛК210. SP14. OwenCommunication, Float

    Не выходит пока организовать нормальную IN_OUT или чтение/запись функцию.
    В примере дано отдельно описание на чтение и отдельно запись.
    И то и то хорошо работает, а вот когда я начинаю и читать и писать, имею проблемы

    Пробовал разделить через BLINK по 200мс, то чтение, то запись. Работает, когда угадываю промежуток, но скажем так себе решение.
    Пробовал сделать через блок с входами IN_OUT, выбивает в исключение иногда


    Для чего вообще нужно: например SP(REAL) вы ее пишете как с панели, так можете записать в нее и из кода.
    Регистры должны обновиться, а в случае изменения регистров, должна измениться связанная с ними переменная

    В конфигураторе ПЛК110 переменные именно так и работают.
    Как это сделать корректно в Codesys 3.5 SP14?
    Добрый день.

    Производите запись в awSlaveData событийно, а не каждый цикл ПЛК - тогда проблем не будет.

  5. #625

    По умолчанию

    Доброго дня )вопрос : не могу в документации найти..стандартный компонент Modbus TCP Master ( через дерево объектов) может содержать до 100 запросов....а сколько я могу вычитать за один запрос?

  6. #626
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,064

    По умолчанию

    Цитата Сообщение от Максим Ульянов Посмотреть сообщение
    Доброго дня )вопрос : не могу в документации найти..стандартный компонент Modbus TCP Master ( через дерево объектов) может содержать до 100 запросов....а сколько я могу вычитать за один запрос?
    Добрый день.
    Согласно спецификации протокола Modbus - до 125 регистров в запросе чтения.
    У конкретного slave-устройства могут быть свои ограничения по этому поводу.

  7. #627

    По умолчанию

    Доброго времени Коллеги) итак : MB_TcpRequest отказывается работать (HANDLE_INVALID,10,Некорректное значение дескриптора интерфейса) хотя дескриптор получает от TcpClient....Через опс сервер ,проблем нет,если добавляю через дерево устройств как модбас слейв тоже читается без проблем...какаятофигня.png

  8. #628
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,064

    По умолчанию

    Цитата Сообщение от Максим Ульянов Посмотреть сообщение
    Доброго времени Коллеги) итак : MB_TcpRequest отказывается работать (HANDLE_INVALID,10,Некорректное значение дескриптора интерфейса) хотя дескриптор получает от TcpClient....Через опс сервер ,проблем нет,если добавляю через дерево устройств как модбас слейв тоже читается без проблем...какаятофигня.png
    Добрый день.
    Удалите из проекта весь код, кроме вызовов фб TCP_Client и MB_TcpRequest.
    Если после этого проблема сохранится - выкладывайте этот проект.

  9. #629

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Добрый день.
    Удалите из проекта весь код, кроме вызовов фб TCP_Client и MB_TcpRequest.
    Если после этого проблема сохранится - выкладывайте этот проект.
    Вот весь "Код")) удалил все...

    IF EnableRead THEN
    CASE ReadState OF
    STATE_MB_RD.CONNECTING:
    fbTcpClient
    (
    xEnable := TRUE ,
    tTimeout := T#5S,
    sIpAddr := '192.168.0.7',
    uiPort :=502
    );
    IF fbTcpClient.xActive THEN
    fbReadRequest (xExecute := TRUE);
    ReadState := STATE_MB_RD.READ;
    ELSIF fbTcpClient.xError THEN
    fbTcpClient(xEnable := FALSE);
    ReadState := STATE_MB_RD.CONNECTING;
    END_IF
    STATE_MB_RD.READ:
    fbReadRequest
    (
    xExecute:=TRUE,
    tTimeout:=T#5S,
    usiRetry:=5,
    hConnection:=fbTcpClient.hConnection,
    xIsRtuOverTcpMode:=FALSE,
    usiUnitId:=1,
    eFuncCode:=OCL.MB_FC.READ_INPUT_REGISTERS,
    uiDataAddr:=1,
    uiDataCount:=32,
    pData:=ADR (DatafORFANK),
    szSize:=SIZEOF (DatafORFANK)
    );
    EnableRead:=FALSE;
    ReadState := STATE_MB_RD.CONNECTING;
    END_CASE
    END_IF

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

    По умолчанию

    Поправил ошибки (выделил исправления жирным).

    Код:
    IF EnableRead THEN
    
       CASE ReadState OF
    
           STATE_MB_RD.CONNECTING:
    
           fbTcpClient
           (
             xEnable := TRUE ,
             tTimeout := T#5S,
             sIpAddr := '192.168.0.7',
             uiPort :=502
           );
    
          IF fbTcpClient.xActive THEN
    
             fbReadRequest (xExecute := FALSE);
             ReadState := STATE_MB_RD.READ;
    
          ELSIF fbTcpClient.xError THEN
    
             fbTcpClient(xEnable := FALSE);
             ReadState := STATE_MB_RD.CONNECTING;
    
          END_IF
    
       STATE_MB_RD.READ:
    
            fbReadRequest
            (
                 xExecute:=TRUE,
                 tTimeout:=T#5S,
                 usiRetry:=5,
                 hConnection:=fbTcpClient.hConnection,
                 xIsRtuOverTcpMode:=FALSE,
                 usiUnitId:=1,
                 eFuncCode:=OCL.MB_FC.READ_INPUT_REGISTERS,
                 uiDataAddr:=1,
                 uiDataCount:=32,
                 pData:=ADR (DatafORFANK),
                 szSize:=SIZEOF (DatafORFANK)
             );
    
    	IF fbReadRequest.xDone OR fbReadRequest.xError THEN
    		
    		EnableRead:=FALSE;
    		ReadState := STATE_MB_RD.CONNECTING;
    	
    	END_IF
    
       END_CASE
    
    END_IF
    2021-08-19_7-58-40.png

Страница 63 из 130 ПерваяПервая ... 1353616263646573113 ... ПоследняяПоследняя

Похожие темы

  1. Настройка ПР200, управление 3-мя устройствами через RS-485
    от Orbes в разделе Среда программирования OWEN Logic
    Ответов: 20
    Последнее сообщение: 15.05.2017, 16:45
  2. СП3ХХ Пример настройка обмена с ПЛК на CODESYS 2.3
    от Denis_Kay в разделе Панели оператора (HMI)
    Ответов: 6
    Последнее сообщение: 02.03.2017, 15:12
  3. Ответов: 43
    Последнее сообщение: 13.04.2015, 14:05
  4. Универсальная функция для обмена с устройствами OwenIO и всеми любимый LabView.
    от Алексей Крагель в разделе Помощь Разработчикам
    Ответов: 0
    Последнее сообщение: 30.05.2014, 14:38

Ваши права

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