Страница 111 из 111 ПерваяПервая ... 1161101109110111
Показано с 1,101 по 1,109 из 1109

Тема: Modbus Universal MasterOPC Server новый OPC сервер от компании ИнСАТ

  1. #1101

    По умолчанию

    Цитата Сообщение от mkv Посмотреть сообщение
    Добрый день. Помогите пожалуйста разобраться, что не так написал...
    Вы же словами логику описали - теперь просто напишите это в программе.

    err - это просто признак удачного/неудачного чтения тега. Чтобы определить, что отсутствуют битовые аварии в прочитанном слове, проверьте это значение (w[1]) на равенство нулю

  2. #1102

    По умолчанию

    SCADAMaster
    Поменял строку S = S.."Нет в списке аварий " на S ="Нет в списке аварий ".
    Теперь при наличии битовой аварии скрипт её (битовую аварию) не записывает, хотя она присутствует. А записывает только "Нет в списке аварий ".
    Мне кажется надо как то объединить биты аварий двух адресов...


    Спасибо...

  3. #1103

    По умолчанию

    Цитата Сообщение от 1exan Посмотреть сообщение
    Вы же словами логику описали - теперь просто напишите это в программе.

    err - это просто признак удачного/неудачного чтения тега. Чтобы определить, что отсутствуют битовые аварии в прочитанном слове, проверьте это значение (w[1]) на равенство нулю
    Спасибо.
    Попробую так. Потом отпишусь.


    Спасибо...

  4. #1104

    По умолчанию

    Цитата Сообщение от 1exan Посмотреть сообщение
    Вы же словами логику описали - теперь просто напишите это в программе.

    err - это просто признак удачного/неудачного чтения тега. Чтобы определить, что отсутствуют битовые аварии в прочитанном слове, проверьте это значение (w[1]) на равенство нулю
    Нет, не получается. Если в каждом адресе проверяю биты, то в конце скрипта пишет "Нет в списке аварий" дважды. Если убираю точки после S, в конце скрипта пишет нормально, но при битовой аварии вписывает"Нет в списке аварий" из другого адреса, в котором нет битовой аварии. Я не умею писать скрипты, но понимаю, что надо как то объединить биты двух адресов. Подскажите, как правильно написать строку...

    Если биты одного адреса (1900) равны нулю и биты второго адреса (1902) равны нулю, то S = "Нет в списке аварий"


    Спасибо...

  5. #1105

    По умолчанию

    Можно так сделать:
    if s=="" and alarm == true and err == false then
    S = S.."Нет в списке аварий "
    end
    Спасибо.

  6. #1106

    По умолчанию

    Цитата Сообщение от mkv Посмотреть сообщение
    Нет, не получается. Если в каждом адресе проверяю биты, то в конце скрипта пишет "Нет в списке аварий" дважды. Если убираю точки после S, в конце скрипта пишет нормально, но при битовой аварии вписывает"Нет в списке аварий" из другого адреса, в котором нет битовой аварии. Я не умею писать скрипты, но понимаю, что надо как то объединить биты двух адресов. Подскажите, как правильно написать строку...

    Если биты одного адреса (1900) равны нулю и биты второго адреса (1902) равны нулю, то S = "Нет в списке аварий"
    Примерно так

    Код:
    function OnRead()
    alarm, _, _ = server.ReadTag( "$(N).$(D).ОБЩАЯ АВАРИЯ" )
    
    
    if alarm == true then
        S = ""
        
        err, w = modbus.ReadInputRegistersAsInt16( 1900, 1, true, "10325476" )
        if err == false then
            if bit.BitFromData( w[1], 0 ) == true then S = S.."/Авария " end
            if bit.BitFromData( w[1], 3 ) == true then S = S.."/Авария насоса " end
            if bit.BitFromData( w[1], 13 ) == true then S = S.."/Низкая Т.обратки " end
            if bit.BitFromData( w[1], 14 ) == true then S = S.."/Низкая Т.притока " end
            if bit.BitFromData( w[1], 15 ) == true then S = S.."/Сработал термостат " end
        end
    
    
        err, w = modbus.ReadInputRegistersAsInt16( 1902, 1, true, "10325476" )
        if err == false then
            if bit.BitFromData( w[1], 8 ) == true then S = S.."/Авария вентилятора №1 " end
            if bit.BitFromData( w[1], 14 ) == true then S = S.."/Авария приточки "end
        end
    
    
        if S=="" then S = "Нет в списке аварий" end
        
        server.WriteCurrentTag( S, OPC_QUALITY_GOOD) 
    else
        S = "0"
        server.WriteCurrentTag( S, OPC_QUALITY_GOOD)
    end

  7. #1107

    По умолчанию

    Цитата Сообщение от SCADAMaster Посмотреть сообщение
    Можно так сделать:
    if s=="" and alarm == true and err == false then
    S = S.."Нет в списке аварий "
    end
    Ох блин, вроде так работает!!! Уже домой пора. Завтра с утра ещё хорошенько погоняю, проверю все варианты аварий и тогда отпишусь.
    СПАСИБО!!!


    Спасибо...

  8. #1108

    По умолчанию

    Цитата Сообщение от 1exan Посмотреть сообщение
    Примерно так

    Код:
    function OnRead()
    alarm, _, _ = server.ReadTag( "$(N).$(D).ОБЩАЯ АВАРИЯ" )
    
    
    if alarm == true then
        S = ""
        
        err, w = modbus.ReadInputRegistersAsInt16( 1900, 1, true, "10325476" )
        if err == false then
            if bit.BitFromData( w[1], 0 ) == true then S = S.."/Авария " end
            if bit.BitFromData( w[1], 3 ) == true then S = S.."/Авария насоса " end
            if bit.BitFromData( w[1], 13 ) == true then S = S.."/Низкая Т.обратки " end
            if bit.BitFromData( w[1], 14 ) == true then S = S.."/Низкая Т.притока " end
            if bit.BitFromData( w[1], 15 ) == true then S = S.."/Сработал термостат " end
        end
    
    
        err, w = modbus.ReadInputRegistersAsInt16( 1902, 1, true, "10325476" )
        if err == false then
            if bit.BitFromData( w[1], 8 ) == true then S = S.."/Авария вентилятора №1 " end
            if bit.BitFromData( w[1], 14 ) == true then S = S.."/Авария приточки "end
        end
    
    
        if S=="" then S = "Нет в списке аварий" end
        
        server.WriteCurrentTag( S, OPC_QUALITY_GOOD) 
    else
        S = "0"
        server.WriteCurrentTag( S, OPC_QUALITY_GOOD)
    end
    СПАСИБО ОГРОМНОЕ!!! Завтра и Ваш вариант испробую!!!


    Спасибо...

  9. #1109

    По умолчанию

    SCADAMaster , 1exan
    Сразу с утра проверил!!! Это для контроллера Danfoss MCX08 и MCX15B2.
    Большое Вам спасибо!!! Работают оба варианта!


    Спасибо...

Страница 111 из 111 ПерваяПервая ... 1161101109110111

Ваши права

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