Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 23

Тема: Вопрос по портам!

  1. #11

    По умолчанию

    под традиционным способом я имел ввиду тот способ, который указан в примере через SysComOpen.
    порт 0 (RS-485) открывает без проблем, а COM1 (RS-232) не может открыть, в документации к ПЛК сказано, что он для программирования контроллера и отладки, а значит занят какой-то системной микропрограммой, но можно-ли как-нибудь его освободить?
    Вобщем вопрос не горит, но в будущем может понадобится

  2. #12

    По умолчанию

    Чтобы порт работал не для программирования нужно вставить другой кабель и перезагрузить контроллер. До этого он настроен на работу с CoDeSys.

  3. #13

    По умолчанию

    отпаял перемычку у стандартного кабеля для программирования ПЛК, подключил, всё-равно программа запинается на открытии COM1.
    Как "перезагрузить" контроллер? (подозреваю, что не просто выключить, включить, запрограммировать)

  4. #14

    По умолчанию

    нажал: онлайн/create boot project
    подключился, загрузил проект (как обычно)
    выключил, включил контроллер (программа автоматически почемуто не запустилась), запустил программу - порт опять не открывается

  5. #15

    По умолчанию

    сделал авто-запуск программы при включении контроллера, порт не открывается, независимо от того, подключен кабель или нет.
    ещё интересует какой именно кабель мне нужен: КС2 или КС3?
    (соединяю компьютер с ПЛК 150 через RS 232)
    по описанию в интернет магазинах - подходят оба, но у КС3 вроде провода подключены не так как полагается для компьютера

  6. #16

    По умолчанию

    VAR_GLOBAL
    I1 AT %QD7.0:REAL;
    I2 AT %QD8.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;

    beg:BOOL:=TRUE;
    comPort:PORTS:=0;
    popytka:INT:=0;
    vI:REAL:=0.0;
    openComPortWORD:=INVALID_HANDLE;

    END_VAR
    PROGRAM PLC_PRG
    VAR
    closeComPort:BOOL;
    inp:BOOL;
    outp:BOOL;
    xOutput:fOutput;
    ok:BOOL;
    ComSet:comsettings;
    ComSetEx:comsettingsEx;
    bytesRead, bytesWrite,bytesreadOldWORD;
    buf,buf2,bufold: REAL;
    END_VAR
    настройки:
    ComSet.dwBaudRate:=115200;
    ComSet.byParity:=0;
    ComSet.byStopBits:=0; (*1 stop bit*)
    ComSet.dwBufferSize:=10;
    ComSet.dwScan:=0;
    ComSet.dwTimeout :=200;
    ComSet.Port:=comPort;
    цикл приёма/отправки сообщений:
    IF (bytesread>0) THEN
    bytesreadOld:=bytesread;
    bufold:=buf;
    bytesread:=0;
    END_IF
    popytka:=0;
    WHILE (popytka<20) AND ( bytesread=0) DO
    bytesread:=SysComRead(opencomport,ADR(buf),4,500);
    IF (bytesread=4) THEN
    I1:=buf;
    I2:=4;
    popytka:=0;
    END_IF;
    IF bytesread>0 THEN
    do0:=((bytesread MOD 2)=1);
    do1:=(((bytesread/2) MOD 2)=1);
    do2:=(((bytesread/4) MOD 2)=1);
    END_IF;
    buf2:=1.0*popytka;
    bytesWrite:=SysComWrite(opencomport,ADR(buf2),4,50 0);
    popytka:=(popytka+1) MOD 2000;
    END_WHILE

  7. #17

    По умолчанию

    procedure PortInit(name:string);
    var
    ThreadID,lastError:dword;
    begin
    blockSbuf:=false;
    sBuf:='';
    //создание и иницализация порта
    KolByte:=0;
    //создание порта и получение его хэндла
    CommHandle := CreateFile(PCHAR(name),GENERIC_READ or GENERIC_WRITE,0,nil,OPEN_EXISTING,
    FILE_ATTRIBUTE_NORMAL,0);
    if (CommHandle=INVALID_HANDLE_VALUE) then messagebox(0,'инициализации порта','Ошибка',0);
    lastError:=GetLastError;
    if lastError<>0 then messagebox(0,PCHAR(intToStr(lastError)+' '+intToStr(CommHandle)),'lastError',0);
    //построение DCB
    GetCommState(CommHandle,DCB);
    DCB.BaudRate:=CBR_115200;
    DCB.Parity:=NOPARITY;
    DCB.ByteSize:=8;
    DCB.StopBits:=OneStopBit;
    //устанавливаем DCB
    SetCommState(CommHandle,DCB);
    end;
    procedure writeSingle(x:single);
    var
    pxsingle;
    c:char;
    xx:real;
    s:string;
    cntRead:cardinal;
    begin
    KolByte:=4;
    px:=addr(arr[1]);
    px^:=x;
    if not WriteFile(CommHandle,arr,KolByte,KolByte,nil)
    then MessageBox(0,'WriteFile','Error',0);
    end;
    Пытаюсь наладить связь ПК с ПЛК сообщения отсылаются нормально, но не доходят до приёмника, настройки вроде правильные.
    подскажите где у меня ошибка
    П.С. ПЛК 150 I-L, связываюсь через ПК-USB-AC4-RS485-ПЛК
    Последний раз редактировалось alhoresm; 20.07.2011 в 14:13.

  8. #18

    По умолчанию

    Не могу разобраться в чем проблема!
    byte_wryte:=SysComWrite(port_number,ADR(zapros3),5 , 0);
    в переменную byte_wryte возвращается 5 байт, но в сниффере тварится не понятно что. Когда 9 байт, когда 5. Помогите, пожалуйста!

  9. #19

    По умолчанию

    Как застваить Modbus(master) и UNM работать вместе на одном порту в 485 интерфейсе? Первый по списку в конфигуратации ПЛК блокирует второго

    Контроллер ПЛК110-32.

  10. #20

    По умолчанию

    Интересно узнать номера портов для ПЛК 160

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

Ваши права

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