Страница 2 из 4 ПерваяПервая 1234 ПоследняяПоследняя
Показано с 11 по 20 из 38

Тема: SysLibCom

  1. #11

    По умолчанию

    Цитата Сообщение от Аркадий Посмотреть сообщение
    по номерам портов все таки напишите пожайлуста.
    какой номер для функций библиотеки у порта на лицевой стороне ПЛК-150?
    и еще. можно ли вообще работать с портом на лиц панели из программы? не занят ли он под отладочный?
    порт на лицевой панели debud rs232 имеет 4 номер. Работать с ним можно, однако для этого не подходит кабель программирования ПЛК, идущий в комплекте. В руководстве на плк приведена схема распайки нужного вам кабеля (см. рисунок). Его можно получить из кабеля программирования, удалив перемычку со стороны разъема db9.

    Такой кабель также можно приобрести в фирме ОВЕН.

    ris1.JPG

  2. #12

    По умолчанию

    У меня не работает функция SetingsEx - всегда возвращает false. Необходимо использовать функцию управления RTS. Может есть какие тонкости ее использования? Перепробовал все... даже нашел пример с установкой параметра размера .size:=sizeof(); и тем не менее не работает..... Подскажите если есть наработки
    Последний раз редактировалось GazovikYa; 28.03.2008 в 10:48.

  3. #13

    По умолчанию

    Цитата Сообщение от GazovikYa Посмотреть сообщение
    У меня не работает функция SetingsEx - всегда возвращает false. Необходимо использовать функцию управления RTS. Может есть какие тонкости ее использования? Перепробовал все... даже нашел пример с установкой параметра размера .size:=sizeof(); и тем не менее не работает..... Подскажите если есть наработки
    собственно, если функция фозвращает 0 то она работает. если не работает - то 255. я пользуюсь данной функцией, щас проверил.
    по поводу RTS вроде видел тут, что на овенах не распаяны управляющие сигналы на портах.
    т.е. функция то управляет.. чипом.

  4. #14

    По умолчанию

    Если идет речь не об Овен ПЛК то:
    Возможно на этом контроллере просто не реализована данная функция. Некоторые контроллеры аппаратно не позволяют работать с не традиционными параметрами порта - например 7,n,1.5 или 7,e,2.

  5. #15

    Post

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    Пример работы:
    У меня приведенный пример не работает. Подменил таргет под свой 150 IL, запускаю, получаю settings.Port = *** INVALID: 0 ***
    А чего можно ожидать, выполняя сначала:

    setings.Port:=COM1;

    затем

    setings.Port:=setings.Port-1;

    потом

    opn:=TRUE;
    IF SysComOpen(setings.Port)=0 THEN
    OPEN_FUN:=FALSE;
    ELSE
    OPEN_FUN:=TRUE;
    END_IF

    а после -

    setings.Port:=setings.Port+1;

    В режиме отладки видно все что происходит.
    Функциональный блок:
    FUNCTION SysComOpen : DWORD
    VAR_INPUT
    Port:PORTS;
    END_VAR
    VAR
    END_VAR
    То есть, SysComOpen должна возвращать WORD, а в примере
    IF SysComOpen(setings.Port)=0 THEN
    разве, это значит, что порт открыт?

    -----------------------------------------------

    Вот мой пример, проще не придумать, всё работает "на автомате", но НЕ применяются настройки(res = *** INVALID: 16#FF ***), и порт НЕ закрывается (close = *** INVALID: 16#FF ***):

    PROGRAM PLC_PRG
    VAR
    StartOpenAdrSetClose: BOOL;
    TimerToOpen:TON;
    ReadyToOpen: BOOL;
    WasOpen: BOOL;
    TimerToAdr:TON;
    ReadyToAdr: BOOL;
    WasAdr: BOOL;
    TimerToSet:TON;
    ReadyToSet: BOOL;
    WasSet: BOOL;
    TimerToClose:TON;
    ReadyToClose: BOOL;
    WasClosed: BOOL;

    com_handle: DWORD;
    com_set: COMSETTINGS:=(
    Port:=1,
    dwBaudRate:=115200,
    byParity:=0,
    dwTimeout:=0,
    byStopBits:=0,
    dwBufferSize:=0,
    dwScan:=0);
    ptCs: POINTER TO COMSETTINGS;
    res: BOOL;
    close: BOOL;
    END_VAR


    TimerToOpen(IN:=StartOpenAdrSetClose, PT:=t#1s);
    ReadyToOpen:=TimerToOpen.Q;
    IF ReadyToOpen THEN
    StartOpenAdrSetClose:=FALSE;
    com_handle:=SysComOpen(com_set.Port);
    WasOpen:=TRUE;
    END_IF
    TimerToAdr(IN:=WasOpen, PT:=t#1s);
    ReadyToAdr:=TimerToAdr.Q;
    IF ReadyToAdr THEN
    WasOpen:=FALSE;
    ptCs:=ADR(com_set);
    WasAdr:=TRUE;
    END_IF
    TimerToSet(IN:=WasAdr, PT:=t#1s);
    ReadyToSet:=TimerToSet.Q;
    IF ReadyToSet THEN
    WasAdr:=FALSE;
    res:=SysComSetSettings(com_set.Port,ptCs);
    WasSet:=TRUE;
    END_IF
    TimerToClose(IN:=WasSet, PT:=t#1s);
    ReadyToClose:=TimerToClose.Q;
    IF ReadyToClose THEN
    WasSet:=FALSE;
    close:=SysComClose(com_set.Port);
    WasClosed:=TRUE;
    END_IF
    IF (WasClosed) THEN
    WasClosed:=FALSE;
    StartOpenAdrSetClose:=TRUE;
    END_IF


    Архив с программой Здесь

  6. #16

    По умолчанию

    Порт должен быть==0
    Com1 ==1 - это 232 на ПЛК100

  7. #17

    По умолчанию

    Спасибо, я слышал об этом, но в SysLibCom заявлео твердое соответствие, COM1:=1, COM2, и так далее, то есть 0 не может соответствовать какому-то гипотетически COM0, поэтому когда я присваиваю переменной объявленой как com_set.Port:PORTS:=0; то, что не удивительно получаю ошибку: com_set.Port = *** INVALID: 0 ***
    ----------------------------------------
    Для начала, я хочу изучить команды открытия и закрытия, и проверить их выполнение. Для этого, пытаюсь открыть любой доступный порт, настроить его и закрыть. У меня нет подключенного устройства на RS-485 и на RS-232 порту, при этом я не могу настроить его и закрыть. Так должно быть?
    P.S.: У меня ПЛК150, на нем нумерация портов такая же?

  8. #18

    По умолчанию

    Настроить и закрыть можно только открытый порт
    0 - 485
    1 - 232
    4 - DBGU

    На всех

  9. #19

    По умолчанию

    Да, пожалуйста, присмотритесь к коду моей программы, я всё приложил:
    Открываю, настраиваю, и закрываю. По непонятным причинас, проходит только команда открытия. Пусть, это будет COM1:=1 он же 232, не суть. Трабл в том, что я могу его только открыть.
    -----------------------------------------------------------
    Ну, и .. только что всем советовали использовать константы из библиотеки, но ведь константы для 0, он же 485, не существует, и если писать ноль то получаю ошибку: com_set.Port = *** INVALID: 0 ***

  10. #20

    По умолчанию

    Это Не ошибка, а возмущение компилятора на константу вне диапазона. Можно не реагировать.

Страница 2 из 4 ПерваяПервая 1234 ПоследняяПоследняя

Ваши права

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