Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 21

Тема: ПЛК63 + МВ110-8АС + МУ110-8И + МК110-8ДН-4Р опрос по modbus

  1. #1

    По умолчанию ПЛК63 + МВ110-8АС + МУ110-8И + МК110-8ДН-4Р опрос по modbus

    Здравствуйте! Прошу помощи в опросе МВ110-8АС с ПЛК63 по модбус. Связь с модулями есть - лампочки RS-485 мигают. из кучи примеров найденных на форуме слепил это, но никак не могу разобраться с указателями и буфером МВ110-8АС и МУ110-8И. С дискретными входами/выходами МК110 разобрался - все работает, но никак не удается получить значения с аналоговых входов.

    PHP код:
    VAR
        
    get1_modbusMB_RD_HOLD_REGS;                    (*МВ110.8АС*) (*функция 04 чтение параметров float*)
        
    send2_modbusMB_WR_REGS;                   (*МУ110.8И*)  (*функция 16 запись параметров float*)
        
    get3_modbusMB_RD_HOLD_REGS;                   (*МК110.8ДН.4Р*)    (*функция 04 чтение параметров типа int*)
        
    send4_modbusMB_WR_REGS;                     (*МК110.8ДН.4Р*) (*функция 16 запись параметров int*)
        
    Buffer: ARRAY[0..255OF BYTE;                    (* байтовый буфер данных *)




             
    cmplBOOL;
        
    port_opened:  BYTE := 0;
        
    InitBOOL;                                (* признак инициализации пользовательской программы *)
        
    Settings:COMSETTINGS;                (* настройки последовательного порта *)
              
    com_numPORTS:=0;                (*RS-485RS-232*)
        
    enablBOOL;                            (*состояние работы блока*)
        
    errINT;                                (*номер ошибки*)
        
    TimeOutTIME:=T#50ms;                (*таймаут*)
        
    ExceptionBYTE;
        
    DataSizeWORD;
        
    master1BYTE:= 1;

        
    COM_SERVICE1COM_SERVICE;
        
    ptr_D:POINTER TO BYTE;


                    (* 
    Каналы модуля МВ110 8АС *)
        
    i                    :     BYTE;
        
    pAI                    :    POINTER TO BYTE;
        
    pDiag                :    POINTER TO BYTE;
        
    x: ARRAY[1..8OF REAL;
        
    ReciveBuffer            :    ARRAY[0..255OF BYTE;                            (* Буфер ответов*)
        
    SendBuffer            :    ARRAY[0..255OF BYTE;                            (* Буфер посылок *)
        
    AI                    :    ARRAY[1..8OF INT;                        (* Данные с каналов модуля*)
        
    Diag                :    ARRAY[1..8OF INT;                        (* Диагностические данные с каналов модуля*)


                    (* 
    Каналы модуля МУ110 8И *)
        
    pAO                    :    POINTER TO BYTE;
        
    y: ARRAY[1..8OF REAL;

                    (* 
    Каналы модуля  МК110.8ДН.4Р *)
        
    dwDI                :    WORD;                                    (* Данные с входов модуля в формате word*)
        
    DI                    :    ARRAY[1..8OF BOOL;                    (* Данные с входов модуля*)
        
    DICntr                :    ARRAY[1..16OF WORD;                    (* Счетчики входов модуля *)
        
    pData                :    POINTER TO BYTE;
    END_VAR


    (*Устанавливаем настройки COM-порта*)
    IF 
    port_opened=0 THEN
            Settings
    .Port:=com_num;               (*номер COM-порта*)
            
    Settings.dwBaudRate:=115200;    (*скорость*)
            
    Settings.byParity:=0;
            
    Settings.dwTimeout:=0;
            
    Settings.byStopBits:=0;
            
    Settings.dwBufferSize:=0;
            
    Settings.dwScan:=0;
    END_IF

    COM_SERVICE1
    (Enable:=(port_opened=0) , Settings:=Settings Task:=OPEN_TSK  );
    (*
    Если COM-порт открытто переходим к приему и передачи данных *)
    IF 
    COM_SERVICE1.ready THEN
        port_opened
    :=2;
    END_IF

    IF port_opened=2 THEN (*Удачно проинициализировали*)

    CASE 
    master1 OF
    0
    :

    get1_modbus(
        
    Enable:=enabl ,            (* разрешение работы блока *)
        
    Mode:=MB_RTU ,        (*режим передачи*)
        
    DevAddr:=adr1 ,                (*адрес*)
        
    FirstAddr:=100 ,                (*номер регистра*)
        
    Quantity:=1,                (*количество регистров*)
        
    ComHandle:=Settings.Port ,(*номер COM-порта*)
        
    TimeOut:=TimeOut ,         (*Таймаут T#50ms*)
        
    Buffer:=Buffer ,            (* буфер данных *)
        
    Complete=>cmpl ,        (* скопировать признак завершения операции *)
        
    Exception=>err ,            (* скопировать регистр ошибок *)
        
    ByteCnt=>DataSize );        (*кол-во считанных байтов *)
    (*
    если установлен признак завершения операциито *)
    IF 
    cmpl THEN
        master1
    :=1;(*переходим к выполнению следующего ФБ*)
        IF 
    err=0 THEN (*Если нет ошибокто получаем  данные из буфера типа FLOAT*)
            FOR 
    := 1 TO 8 DO
                        
    pAI := ADR(AI[i]);
                        
    pAI^ := Buffer[(i-1)*1];
                        
    pAI := pAI 1;
                        
    pAI^ := Buffer[(i-1)*4];

                        
    pDiag := ADR(Diag[i]);
                        
    pDiag^ := ReciveBuffer[(i-1)*33];
                        
    pDiag := pDiag 1;
                        
    pDiag^ := ReciveBuffer[(i-1)*32];
                    
    END_FOR;
        
    END_IF
    END_IF

    1
    :
    (*
    запись в буффер параметра типа Float*)
    pAO:=ADR(y);
         
    buffer[5] := pAO^;
         
    pAO:=pAO+1;
         
    buffer[4] := pAO^;
         
    pAO:=pAO+1;
         
    buffer[7] := pAO^;
         
    pAO:=pAO+1;
         
    buffer[6] := pAO^;

    send2_modbus(
           
    Enable:= enabl,            (* разрешение работы блока *)
        
    Mode:=MB_RTU ,        (*режим передачи*)
        
    DevAddr:=adr2 ,                 (*адрес*)
        
    FirstAddr:= 0,                 (*номер регистра*)
        
    Quantity:= 6,                   (*количество записываемых регистров*)
        
    ComHandle:=Settings.Port ,(*номер сом-порта*)
        
    TimeOut:=TimeOut ,        (*таймаут T#50ms*)
        
    Buffer:=Buffer ,            (* буфер данных *)
        
    Complete=>cmpl ,        (* скопировать признак завершения операции *)
        
    Exception=>err ,            (* скопировать регистр ошибок *)
        
    RegCnt=> DataSize);        (*кол-во считанных байтов *)
    (*
    если установлен признак завершения операциито *)
    IF 
    cmpl THEN
        master1
    :=2;(*переходим к выполнению следующего блока*)
    END_IF


    2
    :

    get3_modbus(
        
    Enable:= enabl,            (* разрешение работы блока *)
        
    Mode:=MB_RTU ,        (*режим передачи*)
        
    DevAddr:=adr3 ,                (*адрес*)
        
    FirstAddr:=51 ,                (*номер регистра*)
        
    Quantity:=,                (*количество регистров*)
        
    ComHandle:= Settings.Port,(*номер COM-порта*)
        
    TimeOut:=TimeOut  ,         (*Таймаут T#50ms*)
        
    Buffer:=Buffer ,            (* буфер данных *)
        
    Complete=>cmpl ,        (* скопировать признак завершения операции *)
        
    Exception=>err ,            (* скопировать регистр ошибок *)
        
    ByteCnt=> DataSize);        (*кол-во считанных байтов *)
    (*
    если установлен признак завершения операциито *)

    IF 
    cmpl THEN
        
    IF err=0 THEN (*Если нет ошибокто получаем данные из буфера типа INT*)
            
    dwDI:=BYTE_TO_WORD(BUFFER[1]) OR SHL(BYTE_TO_WORD(BUFFER[0]),8);
        
    END_IF
    master1
    :=3;
            
    END_IF

    3
    :

            (*
    Пишем в буфер отправки битовую маску*)
            
    ptr_D:=ADR(mk_mask_in);
            
    Buffer[1]:=ptr_D^;
            
    ptr_D:=ptr_D+1;
            
    Buffer[0]:=ptr_D^;
            (*
    Выполняем отправку*)
            
    send4_modbus(
                
    Enable:= enabl,            (* разрешение работы блока *)
                
    Mode:=MB_RTU ,        (*режим передачи*)
                
    DevAddr:=adr3 ,                (*адрес*)
                
    FirstAddr:=50 ,                (*номер регистра*)
                
    Quantity:=,                (*количество регистров*)
                
    ComHandle:= Settings.Port,(*номер COM-порта*)
                
    TimeOut:=TimeOut  ,         (*Таймаут T#50ms*)
                
    Buffer:=Buffer ,            (* буфер данных *)
                
    Complete=>cmpl ,        (* скопировать признак завершения операции *)
                
    Exception=>err ,            (* скопировать регистр ошибок *)
                
    RegCnt=> DataSize);        (*кол-во считанных байтов *)
            (*
    если установлен признак завершения операциито *)
    IF 
    cmpl THEN
        master1
    :=0;(*переходим к выполнению следующего блока*)
    END_IF
    END_CASE

    IF  enabl FALSE THEN
         enabl 
    := TRUE;
    END_IF

    IF  err <> 0 THEN
         enabl 
    := FALSE;
    END_IF
    (*Разбираем битовую маску входов МК110.8ДН.4Р*)
        
    A4_in1:=dwDI.0;
        
    A4_in2:=dwDI.1;
        
    A4_in3:=dwDI.2;
        
    A4_in4:=dwDI.3;
        
    A4_in5:=dwDI.4;
        
    A4_in6:=dwDI.5;
        
    A4_in7:=dwDI.6;
        
    A4_in8:=dwDI.7;
    END_IF 

  2. #2

    По умолчанию

    (* Каналы модуля МУ110 8И *)
    pAO : POINTER TO BYTE;
    y: ARRAY[1..8] OF REAL;

    зачем это? у модуля 8И регистры типа WORD
    сделайте y: ARRAY[1..8] OF WORD; подайте значение от 0 до 1000 (0,0.. 100.0%)

    Quantity:= 8 (8 же каналов а не 6), (*количество записываемых регистров*)
    Buffer:=ADR(y) ,

    и будете записывать. не представляю что Вы в модуль записываете. у Вас скорей всего err не равен 0 , т.е. ошибка какая то происходит.
    cml выставится и при наличии ошибки

  3. #3

    По умолчанию

    Спасибо, с записью вроде понял, но проверить сейчас нет возможности. А как быть с чтением с МВ1108АС? в примерах есть опрос одного регистра, но мне надо считывать значения со всех 8 входов.

  4. #4

    По умолчанию

    сразу и не заметил. у Вас ошибка в адресе регистра 8АС. в РЭ стоит 0х100 , а у Вас просто 100...
    приставка 0х говорит о том , что число в шестнадцатеричной системе исчисления, а не десятеричной , поэтому либо переводите в десятеричну , т.е адрес окажется 256м, либо в кодесис пишите 16#100 (в кодесис директива 16# указана согласно МЭК стандартам языка и она эквивалентна общепринятым в других стандартах 0х).
    в количестве регистров укажите 8 а не 1, будете читать все 8 каналов. учтите, данных придёт в 8 раз больше и надо будет их парсить, как у Вас в коде для одного канала, также для всех( просто сдвигая индескы буфера)

  5. #5

    По умолчанию

    да, ошибку в адресе регистра я тоже нашел. Но судя по РЭ МВ110-8АС измеренное значение 1го канала это 0х120, 0х121, 0х122, или 288, 289, 290 регистры, 2го канала это 0х123, 0х124, 0х125, или 291, 292, 293 регистры и т.д. Как понимаю мне надо считать значения с 288, 291, 294... регистров. Но как это сделать не пойму. подредактировал код, но значения, конечно, не считываются.
    учтите, данных придёт в 8 раз больше и надо будет их парсить, как у Вас в коде для одного канала, также для всех( просто сдвигая индескы буфера)
    как это реализовать?
    VAR
    i : BYTE;
    pAI : POINTER TO BYTE;
    AI : ARRAY[1..8] OF REAL; (* Данные с каналов модуля*)
    Buffer: ARRAY[0..255] OF BYTE; (*байтовый буфер данных*)
    END_VAR

    и отрывок кода:

    get1_modbus(
    Enable:=enabl , (* разрешение работы блока *)
    Mode:=MB_RTU , (*режим передачи*)
    DevAddr:=32 , (*адрес*)
    FirstAddr:=288 , (*номер регистра*)
    Quantity:=8, (*количество регистров*)
    ComHandle:=Settings.Port ,(*номер COM-порта*)
    TimeOut:=TimeOut , (*Таймаут T#50ms*)
    Buffer:=Buffer , (*буфер данных*)
    Complete=>cmpl , (* скопировать признак завершения операции *)
    Exception=>err , (* скопировать регистр ошибок *)
    ByteCnt=>DataSize ); (*кол-во считанных байтов *)
    (*если установлен признак завершения операции, то *)
    IF cmpl THEN
    master1:=1;(*переходим к выполнению следующего ФБ*)
    IF err=0 THEN (*Если нет ошибок, то получаем данные из буфера типа FLOAT*)
    FOR i := 1 TO 8 DO
    pAI := ADR(AI);
    pAI^:=Buffer[1];
    pAI:=pAI+1;
    pAI^:=Buffer[0];
    pAI:=pAI+1;
    pAI^:=Buffer[3];
    pAI:=pAI+1;
    pAI^:=Buffer[2];

    END_FOR;
    END_IF
    END_IF

  6. #6

    По умолчанию

    с адресом регистра верно.
    1 вход занимает 3 регистра (2 регистра данные + метка времени) если метка не нужна то
    Quantity:=24, (*количество регистров*)

    парсинг :
    pAI := ADR(AI[1]);
    pAI^:=Buffer[1];
    pAI:=pAI+1;
    pAI^:=Buffer[0];
    pAI:=pAI+1;
    pAI^:=Buffer[3];
    pAI:=pAI+1;
    pAI^:=Buffer[2];

    pAI := ADR(AI[2]);
    pAI^:=Buffer[7];
    pAI:=pAI+1;
    pAI^:=Buffer[6];
    pAI:=pAI+1;
    pAI^:=Buffer[9];
    pAI:=pAI+1;
    pAI^:=Buffer[8];


    pAI := ADR(AI[2]);
    pAI^:=Buffer[13];
    pAI:=pAI+1;
    pAI^:=Buffer[12];
    pAI:=pAI+1;
    pAI^:=Buffer[15];
    pAI:=pAI+1;
    pAI^:=Buffer[14];


    и так далее

  7. #7

    По умолчанию

    Что-то не хочет работать
    Вложения Вложения

  8. #8

    По умолчанию

    Поделитесь, люди добрые, кодом опроса всех входов модуля МВ110-8АС. по кривому примеру с ошибками не получается никак

  9. #9

    По умолчанию

    Здравствуйте.

    Read8AS_Modbus.pro
    Проверьте порт, сетевые настройки и адрес модуля
    Инженер по продуктам «ПЛК и модули»
    e-mail: i.masterenko@owen.ru | skype: i.masterenko_owen

  10. #10

    По умолчанию

    Цитата Сообщение от Егор_Егор Посмотреть сообщение
    Здравствуйте! Нужна помощь в организации опроса модулей ввода - вывода аналоговых сигналов с ПЛК 63. Связь с модулями настроить удалось, лампочки RS-485 мигают, но данные не считываются. Примеры с диска перепробовал. для опроса мв110-8АС использую функцию 0х03 Read Holding Registers, для МУ110-8И 0х10 Write Multiple registers.

    PHP код:
    VAR
        
    get1_modbusMB_RD_HOLD_REGS;                    (*МВ110.8АС*) (*функция 04 чтение параметров float*)
        
    send2_modbusMB_WR_REGS;                   (*МУ110.8И*)  (*функция 16 запись параметров float*)

            
    cmplBOOL;
        
    port_opened:  BYTE := 0;
        
    Settings:COMSETTINGS;                (* настройки последовательного порта *)
              
    com_numPORTS:=0;                (*RS-485RS-232*)
        
    enablBOOL;                            (*состояние работы блока*)
        
    errINT;                                (*номер ошибки*)
        
    TimeOutTIME:=T#100ms;                (*таймаут*)
        
    DataSizeWORD;
        
    master1BYTE:= 1;
        
    COM_SERVICE1COM_SERVICE;
        
    ptr_D:POINTER TO BYTE;

                    (* 
    Каналы модуля МВ110 8АС *)
        
    pAI                    :    POINTER TO BYTE;
        
    Buffer: ARRAY[0..255OF BYTE;                    (* байтовый буфер данных *)

                    (* 
    Каналы модуля МУ110 8И *)
        
    pAO                    :    POINTER TO BYTE;
        
    y: ARRAY[1..8OF WORD;

    END_VAR
    VAR_INPUT
        y1
    :WORD; (*Записываемый параметр типа WORD*)
        
    y2:WORD; (*Записываемый параметр типа WORD*)
        
    y3:WORD; (*Записываемый параметр типа WORD*)
        
    y4:WORD; (*Записываемый параметр типа WORD*)
        
    y5:WORD; (*Записываемый параметр типа WORD*)
        
    y6:WORD; (*Записываемый параметр типа WORD*)
        
    y7:WORD; (*Записываемый параметр типа WORD*)
        
    y8:WORD; (*Записываемый параметр типа WORD*)
    END_VAR
    VAR_OUTPUT
        x1
    :REAL;                                (*Принятый результат*)
        
    x2:REAL;                                                      (*МВ110.8АС*)
        
    x3:REAL;
        
    x4:REAL;
        
    x5:REAL;
        
    x6:REAL;
        
    x7:REAL;
        
    x8:REAL;
    END_VAR
    (*Устанавливаем настройки COM-порта*)
    IF 
    port_opened=0 THEN
            Settings
    .Port:=com_num;               (*номер COM-порта*)
            
    Settings.dwBaudRate:=115200;    (*скорость*)
            
    Settings.byParity:=0;
            
    Settings.dwTimeout:=0;
            
    Settings.byStopBits:=0;
            
    Settings.dwBufferSize:=0;
            
    Settings.dwScan:=0;
    END_IF

    COM_SERVICE1
    (Enable:=(port_opened=0) , Settings:=Settings Task:=OPEN_TSK  );
    (*
    Если COM-порт открытто переходим к приему и передачи данных *)
    IF 
    COM_SERVICE1.ready THEN
        port_opened
    :=2;
    END_IF

    IF port_opened=2 THEN (*Удачно проинициализировали*)

    CASE 
    master1 OF
    0
    :

    get1_modbus(
        
    Enable:=enabl ,            (* разрешение работы блока *)
        
    Mode:=MB_RTU ,        (*режим передачи*)
        
    DevAddr:=32 ,                (*адрес*)
        
    FirstAddr:=288 ,                (*номер регистра*)
        
    Quantity:=24,                (*количество регистров*)
        
    ComHandle:=Settings.Port ,(*номер COM-порта*)
        
    TimeOut:=TimeOut ,         (*Таймаут T#50ms*)
        
    Buffer:=Buffer ,            (* буфер данных *)
        
    Complete=>cmpl ,        (* скопировать признак завершения операции *)
        
    Exception=>err ,            (* скопировать регистр ошибок *)
        
    ByteCnt=>DataSize );        (*кол-во считанных байтов *)
    (*
    если установлен признак завершения операциито *)
    IF 
    cmpl THEN
        master1
    :=1;(*переходим к выполнению следующего ФБ*)
        IF 
    err=0 THEN (*Если нет ошибокто получаем  данные из буфера типа FLOAT*)


                    
    pAI := ADR(x1);
    pAI^:=Buffer[1];
    pAI:=pAI+1;
    pAI^:=Buffer[0];
    pAI:=pAI+1;
    pAI^:=Buffer[3];
    pAI:=pAI+1;
    pAI^:=Buffer[2];

    pAI := ADR(x2);
    pAI^:=Buffer[7];
    pAI:=pAI+1;
    pAI^:=Buffer[6];
    pAI:=pAI+1;
    pAI^:=Buffer[9];
    pAI:=pAI+1;
    pAI^:=Buffer[8];


    pAI := ADR(x3);
    pAI^:=Buffer[13];
    pAI:=pAI+1;
    pAI^:=Buffer[12];
    pAI:=pAI+1;
    pAI^:=Buffer[15];
    pAI:=pAI+1;
    pAI^:=Buffer[14];


    pAI := ADR(x4);
    pAI^:=Buffer[19];
    pAI:=pAI+1;
    pAI^:=Buffer[18];
    pAI:=pAI+1;
    pAI^:=Buffer[21];
    pAI:=pAI+1;
    pAI^:=Buffer[20];


    pAI := ADR(x5);
    pAI^:=Buffer[25];
    pAI:=pAI+1;
    pAI^:=Buffer[24];
    pAI:=pAI+1;
    pAI^:=Buffer[27];
    pAI:=pAI+1;
    pAI^:=Buffer[26];


    pAI := ADR(x6);
    pAI^:=Buffer[31];
    pAI:=pAI+1;
    pAI^:=Buffer[30];
    pAI:=pAI+1;
    pAI^:=Buffer[33];
    pAI:=pAI+1;
    pAI^:=Buffer[32];


    pAI := ADR(x7);
    pAI^:=Buffer[37];
    pAI:=pAI+1;
    pAI^:=Buffer[36];
    pAI:=pAI+1;
    pAI^:=Buffer[39];
    pAI:=pAI+1;
    pAI^:=Buffer[38];


    pAI := ADR(x8);
    pAI^:=Buffer[43];
    pAI:=pAI+1;
    pAI^:=Buffer[42];
    pAI:=pAI+1;
    pAI^:=Buffer[45];
    pAI:=pAI+1;
    pAI^:=Buffer[44];



        
    END_IF
    END_IF

    1
    :
    (*
    запись в буффер параметра типа Float*)
    pAO:=ADR(y1);
         
    buffer[5] := pAO^;
         
    pAO:=pAO+1;
         
    buffer[4] := pAO^;
         
    pAO:=pAO+1;
         
    buffer[7] := pAO^;
         
    pAO:=pAO+1;
         
    buffer[6] := pAO^;

    pAO:=ADR(y2);
         
    buffer[11] := pAO^;
         
    pAO:=pAO+1;
         
    buffer[10] := pAO^;
         
    pAO:=pAO+1;
         
    buffer[13] := pAO^;
         
    pAO:=pAO+1;
         
    buffer[12] := pAO^;

    pAO:=ADR(y3);
         
    buffer[17] := pAO^;
         
    pAO:=pAO+1;
         
    buffer[16] := pAO^;
         
    pAO:=pAO+1;
         
    buffer[19] := pAO^;
         
    pAO:=pAO+1;
         
    buffer[18] := pAO^;

    pAO:=ADR(y4);
         
    buffer[23] := pAO^;
         
    pAO:=pAO+1;
         
    buffer[22] := pAO^;
         
    pAO:=pAO+1;
         
    buffer[25] := pAO^;
         
    pAO:=pAO+1;
         
    buffer[24] := pAO^;

    send2_modbus(
           
    Enable:= enabl,            (* разрешение работы блока *)
        
    Mode:=MB_RTU ,        (*режим передачи*)
        
    DevAddr:=48 ,                 (*адрес*)
        
    FirstAddr:= 0,                 (*номер регистра*)
        
    Quantity:= 8,                   (*количество записываемых регистров*)
        
    ComHandle:=Settings.Port ,(*номер сом-порта*)
        
    TimeOut:=TimeOut ,        (*таймаут T#50ms*)
        
    Buffer:=Buffer ,            (* буфер данных *)
        
    Complete=>cmpl ,        (* скопировать признак завершения операции *)
        
    Exception=>err ,            (* скопировать регистр ошибок *)
        
    RegCnt=> DataSize);        (*кол-во считанных байтов *)
    (*
    если установлен признак завершения операциито *)
    IF 
    cmpl THEN
        master1
    :=2;(*переходим к выполнению следующего блока*)
    END_IF 
    Попробуйте поменять местами порядок байт получаемых данных с модуля 8АС, на такой:
    pAI := ADR(x1);
    pAI^:=Buffer[3];
    pAI:=pAI+1;
    pAI^:=Buffer[2];
    pAI:=pAI+1;
    pAI^:=Buffer[1];
    pAI:=pAI+1;
    pAI^:=Buffer[0];

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

Похожие темы

  1. Ответов: 2
    Последнее сообщение: 13.03.2015, 01:00
  2. ПЛК63 не получается опрос по ModBus
    от Кольцов Сергей в разделе ПЛК63/73
    Ответов: 2
    Последнее сообщение: 21.11.2012, 14:22
  3. Ответов: 5
    Последнее сообщение: 06.01.2012, 23:32
  4. Ответов: 9
    Последнее сообщение: 17.03.2011, 05:48
  5. Ответов: 16
    Последнее сообщение: 23.04.2010, 15:33

Ваши права

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