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

Тема: RS-485 на ПЛК304

  1. #1

    По умолчанию RS-485 на ПЛК304

    Доброго времени суток, возникает следующая проблема при попытке открыть порт COM, COM_SERVICE1.ready постоянно возвращает FALSE, код программы следующий(практически такой же, как и из примера):
    PROGRAM PLC_PRG
    VAR
    GetTemp: MB_RD_HOLD_REGS;
    Buffer: ARRAY[0..255] OF BYTE; (* байтовый буфер данных *)
    port_opened: BYTE := 0;
    cmpl: BOOL;
    Init: BOOL; (* признак инициализации пользовательской программы *)
    Settings: ModBus.SysCom.COM_Settings;(* настройки последовательного порта *)
    SettingsEx: ModBus.SysCom.COM_SettingsEx;
    com_num: ModBus.COM_Ports:=1;
    enabl: BOOL:=1; (*состояние работы блока*)
    err: INT; (*номер ошибки*)
    TimeOut: TIME:=T#500ms;(*таймаут*)
    Exception: BYTE;
    DataSize: WORD;
    master1: BYTE:= 1;

    t: DWORD; (*переменная для организации счетчика*)
    A: WORD := 0; (*счетчик*)
    x: WORD; (*считанное значение*)
    x1: WORD; (*переменная для записи по сети*)
    x2: WORD; (*переменная для записи по сети*)
    x3: WORD; (*переменная для записи по сети*)
    d: REAL; (*считанное значение*)
    ptr_D:POINTER TO BYTE;

    COM_SERVICE1: COM_SERVICE;
    //Res : ModBus.SysCom.RTS_IEC_RESULT;

    END_VAR



    (*Устанавливаем настройки COM-порта*)
    IF port_opened=0 THEN
    Settings.sPort:=com_num;
    Settings.ulBaudRate:=19200;
    Settings.byParity:=0;
    Settings.ulTimeOut:=0;
    Settings.byStopBits:=3;
    Settings.ulBufferSize:=0;
    //SettingsEx.byByteSize:=8;
    //SettingsEx.bBinary:=TRUE;
    END_IF
    COM_SERVICE1(Enable:=(port_opened=0) , Settings:=Settings,(*sets_ex:=Setting*****) Task:=OPEN_TSK);
    (*Если COM-порт открыт, то переходим к приему и передачи данных *)
    IF COM_SERVICE1.ready THEN
    port_opened:=2;
    //ELSE
    //COM_SERVICE1.Enable:=FALSE;
    END_IF

    IF port_opened=2 THEN
    GetTemp(
    Enable:=enabl , (* разрешение работы блока *)
    Mode:=MB_RTU , (*режим передачи*)
    DevAddr:=1 , (*адрес*)
    FirstAddr:=1 , (*номер регистра*)
    Quantity:=1, (*количество регистров*)
    ComHandle:=Settings.sPort , (*номер COM-порта*)
    TimeOut:=TimeOut , (*Таймаут T#500ms*)
    Buffer:=Buffer , (* буфер данных *)
    Complete=>cmpl , (* скопировать признак завершения операции *)
    Exception=>err , (* скопировать регистр ошибок *)
    ByteCnt=>DataSize ); (*кол-во считанных байтов *)
    END_IF;
    Последний раз редактировалось Jumo; 10.11.2011 в 12:17.

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

    По умолчанию

    Цитата Сообщение от Jumo Посмотреть сообщение
    com_num: ModBus.COM_Ports:=1; (*0 - RS-485, 1 - RS-232*)
    На эту строчку кто будет смотреть?

  3. #3

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    На эту строчку кто будет смотреть?
    А что не так с этой строчкой?

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

    По умолчанию

    ну прочту за Вас, в Вашем коде переменной ModBus.COM_Ports присвоена единица, смотрим комментарий и видим, что единице соответствует порт RS232, а Вы пытаетесь соединится по RS485, т.е. необходимо присвоить (нуль,ноль) - по вкусу

  5. #5

    По умолчанию

    Надо комментарий убрать (он старый), не важно какой порт я пытаюсь открыть результат один и тот же.

  6. #6

    По умолчанию

    Все проблема решена, нужно было стучаться в com-порт много раз, через определенное количество попыток порт открывается. Теперь возникла следующая проблема: при приеме данных через com-порт по интерфейсу rs-485 постоянно появляется ошибка передачи данных 255, как с этим бороться? Данные естественно не передаются.

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

    По умолчанию

    Вы и так стучались в порт несколько раз, пока порт не откроется
    COM_SERVICE1(Enable:=(port_opened=0) , Settings:=Settings,(*sets_ex:=Setting*****) Task:=OPEN_TSK);
    увеличивайте таймаут, пока не пропадет ошибка 255

    ЗЫ еще не прокомментируете, что за оборудование обладает тремя стоповыми битами
    Settings.byStopBits:=3;
    или опять устарелая информация
    Последний раз редактировалось capzap; 10.11.2011 в 14:33.

  8. #8

    По умолчанию

    по работе с компортом посмотрите вот этот пример
    http://www.owen.ru/forum/showpost.ph...55&postcount=7
    так же проверьте правильно ли выбран режим работы порта (т.е. перемычки)

    для работы по 485 интерфейсу все в положении off

  9. #9

    По умолчанию

    Settings.byStopBits:=1; это один стоп бит,
    Settings.byStopBits:=2; это полтора стоп бита,
    Settings.byStopBits:=3; это два стоп бита,

    Вообще-то порт открывается с первой попытки

    для использования первого порта P1 необходимо указывать номер ком порта 2, нумерация получилась сдвинутой из-за того, что 1 это консоль.

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

    По умолчанию

    Цитата Сообщение от Евгений Сергеевич Посмотреть сообщение
    Settings.byStopBits:=1; это один стоп бит,
    Settings.byStopBits:=2; это полтора стоп бита,
    Settings.byStopBits:=3; это два стоп бита,

    Вообще-то порт открывается с первой попытки

    для использования первого порта P1 необходимо указывать номер ком порта 2, нумерация получилась сдвинутой из-за того, что 1 это консоль.
    Оказывается как не просто переходить с КДС 2.3, там то
    (*
    byParity - Режим проверки четности 0 = нет, 1 = нечет, 2 = четн
    byStopBits - Кол-во стоповых бит 0 =один, 1=полтора, 2=два
    номер порта 0 - RS-485, 1 - RS-232, 4 - RS-232 DEBUG
    *)

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

Похожие темы

  1. ПЛК304 запись на SD-карту
    от kgsh82 в разделе ПЛК3хх
    Ответов: 10
    Последнее сообщение: 15.07.2016, 08:07
  2. ПЛК304
    от Pixelcom в разделе ПЛК3хх
    Ответов: 3
    Последнее сообщение: 09.09.2011, 16:39
  3. Linux в ПЛК304
    от Ling-Ling в разделе ПЛК3хх
    Ответов: 6
    Последнее сообщение: 20.05.2011, 01:14
  4. Свои библиотеки в ПЛК304
    от Ling-Ling в разделе ПЛК3хх
    Ответов: 2
    Последнее сообщение: 16.05.2011, 23:21

Ваши права

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