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

Тема: МСД-100 + ПЛК63(мастер)/OwenPoolMaster

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Пользователь
    Регистрация
    01.12.2007
    Адрес
    Воронеж
    Сообщений
    201

    По умолчанию МСД-100 + ПЛК63(мастер)/OwenPoolMaster

    Ну штож поднимем вопрос( оставленный без ответа) еще раз.
    1) почему OwenPoolMaster на скорости 115200 глючит круто( обновляет выходные переменные сразу во всех каналах, и ошибок связи примерно 50%, из них 39х примерно половина, остальные таймаут. Модбас на этих же проводах и скорости летает без вопросов, да еще и со сканом = 30 мс.)

    2)Как МСД заставить в лог писать числа в целочисленном формате без запятой и степени( ставил тип регистра int, ULong)

    3) как мсд заставить в режиме спая "опрашивать" 4 канала, но писать их(
    все 4 канала) на карту только по событию( изменение) в первом канале.

    4) Посылаю в МСД во таким вот "кодом"
    Код:
    	ScanParams: ARRAY[0..8] OF OwenPool :=
          ( every := T#500ms, IsRead := TRUE, EncodeType := OW_FL24, Addr := 40, AddrLen := A8BIT, Name := 'SP', Index := 0, TimeOut := T#100ms),       (*MB110: PIPE*)
          ( every := T#5s, IsRead := TRUE, EncodeType := OW_FL24, Addr := 30, AddrLen := A8BIT, Name := 'PV', Index := 16#FFFF, TimeOut := T#100ms),  (*TRM: TANK2*)
          ( every := T#5s, IsRead := TRUE, EncodeType := OW_FL24, Addr := 31, AddrLen := A8BIT, Name := 'PV', Index := 16#FFFF, TimeOut := T#100ms),  (*TRM: TANK3*)
          ( every := T#5s, IsRead := TRUE, EncodeType := OW_FL24, Addr := 30, AddrLen := A8BIT, Name := 'SP', Index := 0, TimeOut := T#100ms),                (*TRM: TANK2*)
          ( every := T#5s, IsRead := TRUE, EncodeType := OW_FL24, Addr := 31, AddrLen := A8BIT, Name := 'SP', Index := 0, TimeOut := T#100ms),                (*TRM: TANK3*)
    
          ( every := T#500ms, IsRead := FALSE, EncodeType := OW_SINT2, Addr := 99, AddrLen := A8BIT, Name := 'T2', Index := 0, TimeOut := T#50ms),        (*MSD-100: T2 = 0x436C*)
          ( every := T#500ms, IsRead := FALSE, EncodeType := OW_SINT2, Addr := 99, AddrLen := A8BIT, Name := 'T3', Index := 0, TimeOut := T#50ms),        (*MSD-100: T3 = 0x679B*)
          ( every := T#500ms, IsRead := FALSE, EncodeType := OW_SINT2, Addr := 99, AddrLen := A8BIT, Name := 'C', Index := 0, TimeOut := T#50ms),          (*MSD-100: C = 0xE4EE*)
          ( every := T#100ms, IsRead := FALSE, EncodeType := OW_SINT2, Addr := 99, AddrLen := A8BIT, Name := 'Type', Index := 0, TimeOut := T#50ms);    (*MSD-100: Type = 0xC777*) 
    
    IF( EVENT <> EVENT_NONE)THEN
      ScanParams[ 5].ValDInt := tank2.Temperature.val.val;       (*MSD-100: T2 = 0x436C*)
      ScanParams[ 6].ValDInt := tank3.Temperature.val.val;       (*MSD-100: T3 = 0x679B*)
      ScanParams[ 7].ValDInt := 111;                                               (*MSD-100: C = 0xE4EE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*)
      ScanParams[ 8].ValDInt := EVENT;                                         (*MSD-100: Type = 0xC777*)
      PoolType := 8;
      EVENT := EVENT_NONE;
      RETURN;
    END_IF
    
    (*Если COM-порт открыт, то переходим к приему и передачи данных *)
    IF( NOT COM_SERVICE1.ready)THEN
    (*Устанавливаем настройки COM-порта*)
    		Settings.Port:= 0;               (*COM0 – RS485, COM1 – RS232, COM2 – ?? ???., COM3 - ?? ???., COM4 – RS232-Debug*)
    		Settings.dwBaudRate:=9600;    (*скорость*)
    		Settings.byParity:=0;
    		Settings.dwTimeout:=0;
    		Settings.byStopBits:=0;
    		Settings.dwBufferSize:=0;
    		Settings.dwScan:=0;
    
           COM_SERVICE1( Enable:= TRUE, Settings:=Settings , Task:=OPEN_TSK );
           RETURN;
    END_IF
    (**********************************************************************************************************************************************)
    CASE( PoolType)OF
      0:
        OWPool(
          ENABLE := TRUE,
          Count :=  5,(*( SIZEOF( ScanParams)/SIZEOF( ScanParams[ 0])),*)
          Pool := ADR( ScanParams[ 0]),
          IsListen := FALSE,
          ComHandle := Settings.Port);
    
      8..14:
        OWPool(
          ENABLE := TRUE,
          Count :=  3,
          Pool := ADR( ScanParams[ 5]),
          IsListen := FALSE,
          ComHandle := Settings.Port);
        IF( ScanParams[ 5].Complete)THEN PoolType := PoolType OR 1;END_IF
        IF( ScanParams[ 6].Complete)THEN PoolType := PoolType OR 2;END_IF
        IF( ScanParams[ 7].Complete)THEN PoolType := PoolType OR 4;END_IF
        RETURN;
    
      15:
        OWPool(
          ENABLE := TRUE,
          Count :=  1,
          Pool := ADR( ScanParams[ 8]),
          IsListen := FALSE,
          ComHandle := Settings.Port);
        IF( ScanParams[ 8].Complete)THEN PoolType := 0;END_IF
        RETURN;
    
    ELSE
        task_Main_ERROR( info := 'упс...task_Comm_RS_485_1');
        RETURN;
    
    END_CASE;
    Почему частично нормальным( запятая никчему) принимается только ScanParams[ 8]. А 5,6,7 - какаято галиматья( раз принимается , значит и передается )

    5) И какого конфигуратор МСД-100 вечно орет( когда на горячую работаешь) что не удалось записать регистр, но настройку вроде применяет, а вроде и нет.
    Если конфигуриш в оффлайнее, а потом подключаешся, много раз орет что не удалось записать регистр.


    6) Если я передаю тип OW_SINT2, какой должен стоять в МСД-100
    недурственно былобы вообщето табличку соответствия
    Последний раз редактировалось pt200; 24.09.2010 в 14:29.

Ваши права

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