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

Тема: Помогите с примером

  1. #1

    По умолчанию Помогите с примером

    Здравствуйте! Я нахожусь в затруднительной ситуации. Впервые сталкиваюсь с ПЛК, так же как и с языком ST. В кратчайшие сроки необходимо разработать проект по опросу плк около 30 модулей ввода МВ110-8ас и МВ110-16д Помогите с примером программы на ST для плк304 и пары модулей МВ110-8ас по 485, протокол ModBus RTU... Заранее благодарю!

  2. #2

    По умолчанию Примерно так

    Отдаю программу кусками... ну вообщем дальше сами разберетесь. Общий принцип именно такой.


    VAR
    ComHandle: SysCom.RTS_IEC_HANDLE;
    Settings: SysCom.COM_Settings;
    SettingsEx: SysCom.COM_SettingsEx;
    res: SysCom.RTS_IEC_RESULT;
    do_init:BOOL:=TRUE;
    get1_modbus: MB_RD_HOLD_REGS; (*функция 03 - чтение параметра типа INT*)
    set1_modbus: MB_WR_REGS; (*функция 03 - чтение параметра типа INT*)
    TimeOut: TIME:=T#50MS;(*таймаут*)
    Buffer: ARRAY[0..255] OF BYTE; (* байтовый буфер данных *)
    end_var



    IF do_init THEN
    Settings.sPort := 1;
    Settings.ulBaudrate := 115200;
    Settings.byParity := 0;
    Settings.ulTimeout := 0;
    Settings.byStopBits := 1;
    Settings.ulBufferSize := 0;

    SettingsEx.byByteSize := 8;
    SettingsEx.bBinary := TRUE;
    SettingsEx.bDtrControl := FALSE;
    SettingsEx.bRtsControl := FALSE;
    SettingsEx.bOutxCtsFlow := FALSE;
    SettingsEx.bOutxDsrFlow := FALSE;
    SettingsEx.bDsrSensitivity := FALSE;
    ComHandle := SysComOpen2(ADR(Settings), ADR(SettingsEx), ADR(res));

    do_init:=FALSE;

    END_IF

    IF NOT do_init THEN

    CASE rd_STATE OF
    1: // MVA_8
    get1_modbus(
    Enable:=enabl , (* разрешение работы блока *)
    Mode:=MB_RTU , (*режим передачи*)
    DevAddr:=32 , (*адрес*)
    FirstAddr:=MVA_adr[mva_iter] , (*номер регистра*)
    Quantity:=2, (*количество регистров*)
    ComHandle:=ComHandle ,(*номер COM-порта*)
    TimeOut:=TimeOut , (*Таймаут T#50ms*)
    Buffer:=Buffer , (* буфер данных *)
    Complete=>cmpl , (* скопировать признак завершения операции *)
    Exception=>err , (* скопировать регистр ошибок *)
    ByteCnt=>DataSize ); (*кол-во считанных байтов *)
    (*если установлен признак завершения операции, то *)
    IF cmpl THEN
    IF err=0 THEN (*Если нет ошибок, то получаем данные из буфера типа INT*)
    x1:=BYTE_TO_WORD(BUFFER[1]) OR SHL(BYTE_TO_WORD(BUFFER[0]),8);
    x2:=BYTE_TO_WORD(BUFFER[3]) OR SHL(BYTE_TO_WORD(BUFFER[2]),8);
    IF x2<>0 THEN
    temp_ch[mva_iter]:=-300.0-WORD_TO_REAL(x2-16#F000);
    ELSE
    temp_ch[mva_iter]:=WORD_TO_REAL(x1)/10.0;
    END_IF
    ELSE
    temp_ch[mva_iter]:=-300;
    END_IF
    mva_iter:=mva_iter+1;
    IF mva_iter=5 THEN
    mva_iter:=1;
    rd_state:=rd_state+1;
    END_IF
    END_IF
    2:
    get1_modbus(
    Enable:=enabl , (* разрешение работы блока *)
    Mode:=MB_RTU , (*режим передачи*)
    DevAddr:=8 , (*адрес*)
    FirstAddr:=16#33 , (*номер регистра*)
    Quantity:=16, (*количество регистров*)
    ComHandle:=ComHandle ,(*номер COM-порта*)
    TimeOut:=TimeOut , (*Таймаут T#50ms*)
    Buffer:=Buffer , (* буфер данных *)
    Complete=>cmpl , (* скопировать признак завершения операции *)
    Exception=>err , (* скопировать регистр ошибок *)
    ByteCnt=>DataSize ); (*кол-во считанных байтов *)
    Часто задаваемые вопросы по кодесис
    1) Почему программа не работает - Следует выполнить "Онлайн ->Старт"
    2) Где скачать CoDeSys, таргеты, прошивки, библиотеки - http://www.owen.ru/catalog/codesys_v3/opisanie

  3. #3

    По умолчанию

    Спасибо большое! Будем разбираться!

  4. #4

  5. #5

    По умолчанию

    Для опроса модулей есть библиотека http://kipshop.ru/CoDeSys3.0/bibl/ModulsOwenLib.zip,
    есть пример программы с уже реализованным кодом, который привел Олег, и описание как это все работает.
    http://kipshop.ru/CoDeSys3.0/Sample/...os_moduley.zip

  6. #6

    По умолчанию

    Спасибо большое всем, кто откликнулся!

Ваши права

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