Показано с 1 по 10 из 76

Тема: Вопрос по библиотеке Modbus.lib

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    Цитата Сообщение от Спорягин Кирилл Посмотреть сообщение
    Подход не правильный. Правильно так:
    1. Сформировали буфер на шаге Х. Перешли на шаг Х+1.
    2. На шаге Х+1 вызвали нужный ФБ из библиотеки Modbus.lib.
    Код:
    28:  Buffer[0]:=0;
          Buffer[1]:=DOByteAdr67;
          master1:=29; 
    29:IF OldDOByteAdr67=DOByteAdr67 THEN master1:=30;
                           ELSE
                                   ModbusAdrDO67(
    	                                                Enable:= enabl,
    	                                                Mode:= MB_RTU,
    	                                                DevAddr:= 67,
    	                                                FirstAddr:= 50,
    	                                                Quantity:= 1,
    	                                                ComHandle:= Settings.Port,
    	                                                TimeOut:= TimeOut,
    	                                                Buffer:= Buffer,
    	                                                Complete=> cmpl,
    	                                                Exception=> ErrorDO67,
    	                                                RegCnt=> DataSize);
                               
                               IF cmpl
                                  THEN
                                            OldDOByteAdr67:=DOByteAdr67;
                                            master1:=30; 
                               END_IF
                               END_IF
    30: ......
    правильно???

  2. #2
    Пользователь
    Регистрация
    10.11.2014
    Адрес
    Санкт-Петербург
    Сообщений
    1,063

    По умолчанию

    Цитата Сообщение от a_gricaj Посмотреть сообщение
    правильно???
    С точки зрения того, что теперь буфер не изменяется в процессе вызова ФБ modbus правильно.

    Но обращаю Ваше внимание, что есть потенциальная ошибка.
    Если DOByteAdr67 <> OldDOByteAdr67 мы вызвали блок. Блок послал запрос в линию. Теперь предположим, что пока блок ждет ответ у Вас DOByteAdr67 стало равно OldDOByteAdr67. То Ваш код перейдет на шаг 30 не дождавшись ответа. Что явно не хорошо.

  3. #3

    По умолчанию

    Цитата Сообщение от Спорягин Кирилл Посмотреть сообщение
    С точки зрения того, что теперь буфер не изменяется в процессе вызова ФБ modbus правильно.

    Но обращаю Ваше внимание, что есть потенциальная ошибка.
    Если DOByteAdr67 <> OldDOByteAdr67 мы вызвали блок. Блок послал запрос в линию. Теперь предположим, что пока блок ждет ответ у Вас DOByteAdr67 стало равно OldDOByteAdr67. То Ваш код перейдет на шаг 30 не дождавшись ответа. Что явно не хорошо.
    Значит наверное так?
    Код:
     
    28: IF OldDOByteAdr67=DOByteAdr67 
            THEN master1:=31;
            ELSE      
                  Buffer[0]:=0;
                  Buffer[1]:=DOByteAdr67;
                  master1:=29; 
           END_IF
    29: ModbusAdrDO67(
    	                    Enable:= enabl,
    	                    Mode:= MB_RTU,
    	                    DevAddr:= 67,
    	                    FirstAddr:= 50,
    	                    Quantity:= 1,
    	                    ComHandle:= Settings.Port,
    	                    TimeOut:= TimeOut,
    	                    Buffer:= Buffer,
    	                    Complete=> cmpl,
    	                    Exception=> ErrorDO67,
    	                    RegCnt=> DataSize);
                               
                               IF cmpl
                                  THEN
                                            OldDOByteAdr67:=DOByteAdr67;
                                            master1:=31; 
                               END_IF
                              
    31: ......

Похожие темы

  1. Еще раз о библиотеке SysLibSockets
    от dudanov в разделе ПЛК1хх
    Ответов: 52
    Последнее сообщение: 28.01.2015, 15:41
  2. По библиотеке UNM
    от Сергей Мих в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 25.04.2012, 22:06
  3. Вопрос по библиотеке UNM
    от askpify в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 31.10.2009, 23:50
  4. По Овеновской библиотеке PID ?
    от mar154 в разделе ПЛК1хх
    Ответов: 5
    Последнее сообщение: 28.10.2008, 12:32

Ваши права

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