Страница 1 из 5 123 ... ПоследняяПоследняя
Показано с 1 по 10 из 46

Тема: Подключение ПЛК308, ПЛК304 и СКАДА системе

  1. #1

    По умолчанию Подключение ПЛК308, ПЛК304 и СКАДА системе

    Как без лишних танцев с бубном связать ПЛК308, ПЛК304 со СКАДА системой по ModBus TCP.
    Вопрос относится только к конфигурированию ПЛК, так как ПЛК1xx на CoDeSys 2.3, прекрасно связываются и работают.
    Более того в CoDeSys 2.3 на одну область памяти можно назначить несколько TCP портов, что дает возможность без лишних заморочек опрашивать ПЛК более чем одним "рабочим местом".

  2. #2
    Пользователь Аватар для smk1635
    Регистрация
    06.09.2010
    Адрес
    Брянск
    Сообщений
    1,241

    По умолчанию

    Это не только Вам интересно.
    Теория и практика иногда сталкиваются. Когда это случается, теория проигрывает. Всегда. (Закон Линуса)

  3. #3

    По умолчанию

    Цитата Сообщение от smk1635 Посмотреть сообщение
    Это не только Вам интересно.
    Так в том то и дело, что выпустили коммуникационный ПЛК, но о простом конфигурировании коммуникаций позабыли!
    Конечно наверное не без вины CoDeSys 3!
    Но все равно проблему решать нужно, может "овеновцы" выпустят библиотеки ModBus TCP (Master, Slave) на базе SysLibSocket?

  4. #4

    По умолчанию

    Ну так какие есть варианты? Где пропал модератор ?

  5. #5
    Пользователь
    Регистрация
    12.07.2007
    Адрес
    Воронеж
    Сообщений
    884

    По умолчанию

    Прошу прощения, а в чем конкретно проблема?
    Попробовал в CDS3 - вроде добавляется интерфейс.

    Просто придется в скором времени делать проект, со связью СПК - контроллеры именно по Ethernet.
    Хочется знать, в чем могут быть проблемы.
    Изображения Изображения

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

    По умолчанию

    Цитата Сообщение от Леонид Посмотреть сообщение
    Так в том то и дело, что выпустили коммуникационный ПЛК, но о простом конфигурировании коммуникаций позабыли!
    Конечно наверное не без вины CoDeSys 3!
    Но все равно проблему решать нужно, может "овеновцы" выпустят библиотеки ModBus TCP (Master, Slave) на базе SysLibSocket?
    Давно уже все придумано, в оскат-нетворк есть модбас, там из переделок надо только адаптировать открытие сокета из v23 в.v3
    Я где то выкладывал пробный пример,года два назад, ни кого не заинтересовало я и не стал развивать дальше

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

    По умолчанию

    Цитата Сообщение от приборист Посмотреть сообщение
    Прошу прощения, а в чем конкретно проблема?
    Попробовал в CDS3 - вроде добавляется интерфейс.

    Просто придется в скором времени делать проект, со связью СПК - контроллеры именно по Ethernet.
    Хочется знать, в чем могут быть проблемы.
    проблемы были в ограниченном количестве регистров

  8. #8

    По умолчанию

    Да это я все в курсе дела!
    Вот только придется опять идти по принципу, в умелых руках и .... напильник, а охота так чтоб без любви, из коробки все работало!
    Ну что-же достанем этот самый напильник!

  9. #9

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    Давно уже все придумано, в оскат-нетворк есть модбас, там из переделок надо только адаптировать открытие сокета из v23 в.v3
    Я где то выкладывал пробный пример,года два назад, ни кого не заинтересовало я и не стал развивать дальше
    Начал осваивать SysSocket на ПЛК304! Начал с серверной части, прием данных заработал без проблем. Но стоит вытащить провод связи Ethernet из ПЛК клиента, или не вставить его еще до включения ПЛК304, в роли клиента ПЛК100, и сразу происходит остановка обработки программы в ПЛК304, если воткнуть провод обратно, через некоторое время связь восстанавливается и ПЛК304 продолжает выполнение программы.
    Сразу уточню что сокет перевожу в неблокирующий режим!
    Что я делаю не так?
    CASE Step OF

    0: (* Шаг создания и настройки сокета *)
    hServerSocket:= SysSockCreate(iAddressFamily:= SOCKET_AF_INET, diType:= SOCKET_STREAM, diProtocol:= SOCKET_IPPROTO_TCP, pResult:= ADR(Result_SysSockCreate));
    Result_SysSockIoctl:= SysSockIoctl(hSocket:= hServerSocket, diCommand:= SOCKET_FIONBIO, pdiParameter:= ADR(mode)); (* Переводи сокет в не блокирующий режим *)

    Socket.sin_family:= SOCKET_AF_INET;
    Socket.sin_addr.ulAddr := SOCKET_INADDR_ANY; (* Принимать от любого адреса *)
    Socket.sin_port := SysSockHtons(usHost:= Port); (* Порт по которому будет осуществляться прием *)

    Result_SysSockBind:= SysSockBind(hSocket:= hServerSocket, pSockAddr:= ADR(Socket), diSockAddrSize:= SIZEOF(Socket)); (* Привязываем порт к сокету *)
    Result_SysSockListen:= SysSockListen(hSocket:= hServerSocket, diMaxConnections:= MaxConnections);
    (* Включаем прослушивание сокета *)


    Step:= 1;
    1:
    Tries_1:= Tries_1 + 1;
    hClientSocket:= SysSockAccept(hSocket:= hServerSocket, pSockAddr:= ADR(Socket), pdiSockAddrSize:= ADR(SocketSize), pResult:= ADR(Result_SysSockAccept)); (* Ожидание соединение от клиента, возвращаем номер сокета клиента *)

    IF hClientSocket <> 16#FFFFFFFF THEN
    Result_SysSockInetNtoa:= SysSockInetNtoa(pInAddr:= ADR(Socket.sin_addr.ulAddr), szIPADDR:= Client_IP, diIPAddrSize:= SIZEOF(Client_IP));
    Step:= 3;
    ELSIF Tries_1 > 10 THEN
    Tries_1:= 0;
    Step:= 5;
    END_IF;
    2:
    Tries_2:= Tries_2 + 1;
    Send_Buf[1]:= Send_Buf[1] + 1;
    Send_Buf[2000]:= Send_Buf[2000] + 1;
    Send_Buf[3000]:= Send_Buf[3000] + 1;
    Send_Buf[5000]:= 50;

    SendByte:= SysSockSend(hSocket:= hClientSocket, pbyBuffer:= ADR(Send_Msg), diBufferSize:= SIZEOF(Send_Msg), diFlags:= 0, pResult:= ADR(Result_SysSockSend)); (* Отправляем сообщение *)
    IF SendByte > 0 THEN
    Step:= 3;
    END_IF

    IF Tries > 1000 THEN
    Step:= 3;
    END_IF;
    3:
    Tries_3:= Tries_3 + 1;
    Recv_Msg:= '';
    RecvByte:= SysSockRecv(hSocket:= hClientSocket, pbyBuffer:= ADR(Recv_Buf), diBufferSize:= 256, diFlags:= 0, pResult:= ADR(Result_SysSockRecv));
    Step:= 4;
    IF RecvByte > 0 THEN
    Step:= 3;
    Tries_3:= 0;
    ELSIF
    Tries_3 > 10
    THEN
    Tries_3:= 0;
    Step:= 4;
    END_IF;

    4:
    SysSockClose(hSocket:= hClientSocket);
    Step:= 5;
    Tries_4:= Tries_4 + 1;
    5:
    SysSockClose(hSocket:= hServerSocket);
    Step:= 0;
    Tries:= 0;
    Tries_5:= Tries_5 + 1;
    END_CASE;
    Последний раз редактировалось Леонид; 18.08.2014 в 19:47.

  10. #10

    По умолчанию

    Ну и добавлю, чтоб не смущать, сторожевой таймер я отключил в процессе изысканий причины проблемы, а то ПЛК сваливался в "исключение".
    Последний раз редактировалось Леонид; 18.08.2014 в 20:27.

Страница 1 из 5 123 ... ПоследняяПоследняя

Похожие темы

  1. ПЛК304(ПЛК308) + 2х МУ110-8И
    от SergSB в разделе ПЛК3хх
    Ответов: 1
    Последнее сообщение: 20.12.2013, 10:53
  2. Доступ к файловой системе СПК207
    от Андрей Косоротов в разделе СПК2хх
    Ответов: 2
    Последнее сообщение: 01.12.2012, 00:05
  3. ТРМ 133 в системе вентиляции
    от inovator в разделе Эксплуатация
    Ответов: 7
    Последнее сообщение: 04.11.2011, 16:30
  4. терморегулирование в системе отопления
    от 207 в разделе Трёп (Курилка)
    Ответов: 12
    Последнее сообщение: 29.11.2010, 22:46

Ваши права

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