Показано с 1 по 7 из 7

Тема: проблемы с Com портом на плк-150

  1. #1

    По умолчанию проблемы с Com портом на плк-150

    написал программу для PLC-150:
    Код:
    VAR_GLOBAL
    	I1 AT %QD7.0:REAL;
    	di0 AT %IX0.0:BOOL;
    	di1 AT %IX0.1:BOOL;
    
          do0 AT %QX1.0:BOOL;
          do1 AT %QX1.1:BOOL;
          do2 AT %QX1.2:BOOL;
          do3 AT %QX1.3:BOOL;
    
    END_VAR
    Код:
    PROGRAM PLC_PRG
    VAR
          beg:BOOL:=TRUE;
    	comPort:PORTS:=0;
    	openComPort:DWORD;
    	closeComPort:BOOL;
    	inp:BOOL;
    	outp:BOOL;
    	xOutput:fOutput;
    	ok:BOOL;
    	ComSet:comsettings;
    	vI:REAL;
    	bytesRead:DWORD;
    	buf: REAL;
    END_VAR
    Код:
    IF di0 THEN
     (*завершение*)
     closeComPort:=SysComClose(opencomport);
    ELSE
     IF beg THEN
       (*инициализация*)
       openComPort:=SysComOpen(comPort);
       IF openComPort=INVALID_HANDLE THEN
          i1:=5.1;
       ELSE
          i1:=10.1;
       END_IF;
    
       ComSet.dwBaudRate:=9600;
       ComSet.byParity:=0;
       ComSet.byStopBits:=0;
       ComSet.dwBufferSize:=4;
       ComSet.dwScan:=0;
       ComSet.dwTimeout :=10;
       ComSet.Port:=comPort;
       ok:=SysComSetSettings(openComPort,ADR(ComSet));
       IF ok THEN
          do3:=TRUE;
       END_IF;
       vI:=0.001;
       beg:=FALSE;
     ELSE
       (*цикл пока не нажата кнопка di0*)
        bytesread:=SysComRead(opencomport,ADR(buf),4,300);
        IF bytesread=4 THEN
         (*vI:=buf;*)
         I1:=buf;
        END_IF;
        IF  bytesread>0 THEN
          do0:=((bytesread MOD 2)=1);
          do1:=(((bytesread/2) MOD 2)=1);
          do2:=(((bytesread/4) MOD 2)=1);
         (* do3:=(((bytesread/16) MOD 2)=1);*)
       END_IF;
     END_IF (* IF beg ELSE*)
    END_IF (*IF di0 ELSE*)
    При старте программы начинает выдавать ток с 1-ого аналогового выхода 10.1 мА (т.е. порт открыт)
    почему-то загорается лампочка дискретного выхода №1 вместо №4-ого (т.е. конфигурация установлена)
    передаю с копма сообщение, а контроллер не ловит его, о чём говорят лампочки остальных дискретных выходов (т.е. количество принятых байт=0)

    Заметил, что при логиневании CoDeSys говорит, что я не правильно задал ComSet.Port, и всегда принудительно менял значение переменной comPort на COM1

    Пробовал связываться через RS-232 и RS-485 (менял подключение Rx,Tx - A,B) результат одинаковый.

    Вопросы:
    1. Можно ли общаться с этим контроллером через RS-232 или он только для записи в него программы?
    2. Как подключаться к RS-485 (в смысле: Tx к A, Rx к B или наоборот)? Что будет если я не правильно подключу?
    заранее спасибо

  2. #2

    По умолчанию

    программу выложите пожалуйста с указанием полной маркировки контроллера плк150-х-х. укажите версию прошивки контроллера.

  3. #3

    По умолчанию

    контроллер плк150-220.и-l
    версия таргет файлов 2.0-4
    контроллер не я прошивал, как узнать версию прошивки - не знаю, но с диском, который мне дали была версия прошивки 2.01.8
    Изображения Изображения

  4. #4

    По умолчанию

    воспользуйтесь наконец стандартным примером работы с Com-портом. он есть на диске

  5. #5

    По умолчанию

    при загрузке стандартного примера codesys ругается, да и в моей программе практически всё то же самое написано
    Изображения Изображения
    Последний раз редактировалось alhoresm; 07.10.2010 в 12:41. Причина: добавление картинки

  6. #6

    По умолчанию

    Советую поставить актуальную версию прошивки и соответствующий таргет файл:
    http://www.owen.ru/catalog/78552813

  7. #7

    По умолчанию

    новую прошивку и таргет файлы уже установил, но теперь порт не открывается.. (openComPort=INVALID_HANDLE)

Ваши права

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