CODESYS форум

Добро пожаловать на официальный форум CODESYS
Deutsche Version English version russian version 
Текущее время: Чт авг 17, 2017 2:52 am

Часовой пояс: UTC+01:00




Начать новую тему  Ответить на тему  [ 3 сообщения ] 
Автор Сообщение
 Заголовок сообщения: PLC WinNT и системные библиотеки
СообщениеДобавлено: Чт фев 28, 2013 2:59 pm 
Не в сети

Зарегистрирован: Пт дек 14, 2012 11:24 am
Сообщения: 4
Доброго времени суток! Интересует следующий вопрос:

Хочу использовать PLC WinNT для тестирования программы без использования контроллера. Скажем, программа читает данные с приборов по Modbus RTU, взаимодействует со SCADA через Modbus TCP. Для этих целей в CoDeSys можно использовать системные библиотеки SysLibCom и SysLibSockets. Они платформозависимые. Для контроллера они уже использовались (в данном случае использую контроллеры ОВЕН). Как я понимаю, для симулятора должны быть свои реализации этих библиотек.

Теперь возникает вопрос - где их найти?
Смотрел во всех каталогах установленных CoDeSys - не нашел. На сайте codesys.com ничего подобного тоже не нашел.


Вернуться к началу
 Заголовок сообщения: Re: PLC WinNT и системные библиотеки
СообщениеДобавлено: Пт мар 01, 2013 11:36 am 
Не в сети

Зарегистрирован: Пт дек 14, 2012 11:24 am
Сообщения: 4
Прошу прощения за глупый пост :oops: . У себя нашел в директории "C:\Program Files\Common Files\CAA-Targets\3S\Lib_PLCWinNT".


Вернуться к началу
 Заголовок сообщения: Re: PLC WinNT и системные библиотеки
СообщениеДобавлено: Вс мар 03, 2013 6:31 pm 
Не в сети

Зарегистрирован: Пт дек 14, 2012 11:24 am
Сообщения: 4
Здравствуйте! Опять вопрос по PLC WinNT и библиотеке SysLibSockets. C помощью данной библиотеки удалось реализовать TCP клиент. Все нормально, вроде работает. Далее пытаюсь реализовать ТСР сервер. Вот тут посложнее. Вот кусок кода:
Код:
VAR
   state         : SERV_STATE := SERV_INIT;
   sock, sock_acc   : DINT;
   tcp_adr      : SOCKADDRESS;
   acc_adr      : SOCKADDRESS;
   res         : BOOL;
   param_ctrl      : DINT;
   InBuff         : ARRAY[1..300] OF BYTE;
   OutBuff      : ARRAY[1..300] OF BYTE;
END_VAR
....
CASE state OF

SERV_INIT:      (* SOCK CREATE *)
    sock   := SysSockCreate(SOCKET_AF_INET, SOCKET_STREAM, SOCKET_IPPROTO_TCP);
    state   := SERV_SETUP;

SERV_SETUP:      (* SOCK SETUP *)
    param_ctrl      := 1;
    tcp_adr.sin_family   := SOCKET_AF_INET;
    tcp_adr.sin_port   := SysSockNtohs(502);
    tcp_adr.sin_addr   := SOCKET_INADDR_ANY;

    res         := SysSockBind(sock, ADR(tcp_adr), SIZEOF(tcp_adr));
    SysSockIoctl(sock,SOCKET_FIONBIO,ADR(param_ctrl)); (* Non blocking mode *)
    res         := SysSockListen(sock, 1);
    state         := SERV_ACC;

SERV_ACC:      (* WAIT FOR CONNECTION *)
    sock_acc   := SysSockAccept(sock, ADR(acc_adr), SIZEOF(acc_adr));
    IF (sock_acc = 16#FFFFFFFF) THEN
        RETURN;
    ELSIF (sock_acc = 0) THEN
        RETURN;
    ELSE
        state := SERV_RCV;
    END_IF;

SERV_RCV:      (* WAIT FOR REQUEST *)
...
END_CASE

При попытке подключения вылетает функция SysSockAccept и выдается ошибка: "#81: Access violation in 'Access violation Task = DefaultTask'"...
Возможно кто-то сталкивался с подобным. Пробовал разные варианты - блокирующий/неблокирующий режим, пробовал SysSockSelect... В чем может проблема? Работает ли данная библиотечная функция для PLC WinNT? Или данную задачу не решить c помощью SysLibSockets
для PLC WinNT? Если нужен будет проект - я выложу.


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 3 сообщения ] 

Часовой пояс: UTC+01:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя


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

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB