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

Тема: Медианный фильтр, ФБ C#

  1. #1

    По умолчанию Медианный фильтр, ФБ C#

    Добрый день!

    Разработал медианный фильтр, проверил его алгоритм в Matlab,
    однако при переносе в ФБ C# возникает проблемы при работе - спустя несколько значений фильтр перестает работать.

    Вот пример:
    Код:
    using System;
    using MasterSCADA.Script.FB;
    using MasterSCADA.Hlp;
    using FB;
    using FB.FBAttributes;
    using System.Linq;
    
    [FBRetain]
    public partial class ФБ : ScriptBase
    {
      public static int count=0;//счетчик
      public static int order=15;//порядок-количество чисел в окне
      public static double data;
      public bool flag=false;
      public double temp=0;
     public double[] buffer=new double[15];// size = order
     public int index=8;
     public int num=0;
     
     	public override void Start()
     	{
    		for(int i=0;i<order;i++)
    			{
    				buffer[i]=0;
    			}
     	}
       public override void Execute()
        {
    	  if(flag==true) 
     	  {
     		for(int i=0;i<order-1;i++)//0 1
     		{		
    	 		buffer[i]=buffer[i+1];
     		}
    	 	if(u.HasValue)
    		{
    		 	buffer[order-1]=Convert.ToDouble(u);
    		}
     		sort();
     		data=buffer[index];// buffer median val
     	  }
    		
     	  if((count==order)&&(flag==false))
     	  {
       		 flag=true;
       		 sort();
       		 data=buffer[index];// buffer median val
     	  }
     	  
     	  if ((count<order)&&(flag==false))
     	  {
     	  		 if(u.HasValue)
    		 		{
    		 			buffer[count]=Convert.ToDouble(u);
    		 			count++;
    		 		}
     	  }
     	
     	
     	y=data;
     	num++;
     	Параметр1=num;
     	  
     	}// end of execute
     	
     	public void sort()
     	{
     	double temp=0;
     	 	for(int i=0;i<order-1;i++)//0 1
     		{		
    	 		if(buffer[i]>buffer[i+1])
    		 		{
    		 		temp=buffer[i+1];
    		 		buffer[i+1]=buffer[i];
    		 		buffer[i]=temp;
    		 		}
    	 		;
     		}
     	}
    } // end of FB
    Кто сталкивался с такой проблемой? Опрос ФБ настроен на изменение входов.

  2. #2

    По умолчанию

    Возможно происходит падение скрипта - посмотрите нет ли сообщений в окне, открываемом красной кнопкой в правом нижнем углу скады.
    Также вы можете поставить Visuyal Studio и подцепиться отладчиком:
    https://insat.ru/blog/fb-skript-c-i-...adka-skriptov/

    Ну а сортировка... Посмотрите коллекции List и сортировку методом Sort
    Спасибо.

  3. #3

    По умолчанию

    Цитата Сообщение от SCADAMaster Посмотреть сообщение
    Возможно происходит падение скрипта - посмотрите нет ли сообщений в окне, открываемом красной кнопкой в правом нижнем углу скады.
    Также вы можете поставить Visuyal Studio и подцепиться отладчиком:
    https://insat.ru/blog/fb-skript-c-i-...adka-skriptov/

    Ну а сортировка... Посмотрите коллекции List и сортировку методом Sort
    Проверил все что вы предложили, запускал в VS в отладчике, менял массив на List. Значения в листе не обновляются по неизвестной причине. Рабочего результата так и не получил, значения перестают передаваться на выход спустя какое то время после запуска.

    Каким образом еще можно реализовать фильтр от импульсных помех в MasterSCADA ? (фильтр 1-го порядка не подходит)

  4. #4

    По умолчанию

    Цитата Сообщение от Igor V Посмотреть сообщение
    значения перестают передаваться на выход спустя какое то время после запуска.
    Как они перестают передаваться? Вы пишите значение на выход, а на выходе их нет?
    Ну такого же не может быть. Пройдитесь по шагам в отладчике - посмотрите что происходит.

    Цитата Сообщение от Igor V Посмотреть сообщение
    Проверил все что вы предложили, запускал в VS в отладчике, менял массив на List. Значения в листе не обновляются по неизвестной причине. Рабочего результата так и не получил, значения перестают передаваться на выход спустя какое то время после запуска.
    Пришлите последнюю версию проекта.
    Спасибо.

  5. #5

    По умолчанию

    Цитата Сообщение от SCADAMaster Посмотреть сообщение
    Как они перестают передаваться? Вы пишите значение на выход, а на выходе их нет?
    Ну такого же не может быть. Пройдитесь по шагам в отладчике - посмотрите что происходит.


    Пришлите последнюю версию проекта.
    Приложил последнюю версию проекта.
    Вложения Вложения

  6. #6

    По умолчанию

    Вот здесь ошибка:
    for(int i=0;i<order-1;i++)
    {
    buffer[i]=buffer[i+1];
    }
    Посмотрите например эту тему
    http://www.cyberforum.ru/csharp-begi...ad1294539.html
    И смотрите под отладчиком что происходит. Остановилось выполнение - точку останова и смотрите. Ошибка находится у вас на раз.
    Спасибо.

  7. #7

    По умолчанию

    Цитата Сообщение от SCADAMaster Посмотреть сообщение
    Вот здесь ошибка:
    for(int i=0;i<order-1;i++)
    {
    buffer[i]=buffer[i+1];
    }
    Посмотрите например эту тему
    http://www.cyberforum.ru/csharp-begi...ad1294539.html
    И смотрите под отладчиком что происходит. Остановилось выполнение - точку останова и смотрите. Ошибка находится у вас на раз.
    Спасибо за ответ. Извиняюсь, но не могли бы вы объяснить в чем здесь ошибка? Выхода за предел массива нет. Предложенную тему посмотрел, там похожий принцип, только значения сдвигаются вправо.

  8. #8

    По умолчанию

    Когда значения доходят до максимума, у вас массив время заполняется последними максимальными значениями, а не новыми.
    Встаньте отладчиком, и когда значения перестанут обновляться поставьте точку останова - сами все увидите
    Спасибо.

Похожие темы

  1. Фильтр аналогового параметра
    от Igor V в разделе Master SCADA 3
    Ответов: 3
    Последнее сообщение: 04.12.2017, 13:06
  2. сетевой фильтр
    от Anton_V_A в разделе Подбор Оборудования
    Ответов: 12
    Последнее сообщение: 19.09.2016, 06:59
  3. Как настроить фильтр?
    от Navigation1 в разделе Master SCADA 3
    Ответов: 46
    Последнее сообщение: 06.07.2015, 13:45
  4. Цифровой фильтр.
    от Mikewolf в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 23.05.2008, 10:54
  5. Цифровой фильтр в ПЛК150
    от Юрий_1900 в разделе ПЛК1хх
    Ответов: 5
    Последнее сообщение: 27.12.2007, 08:22

Ваши права

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