Calculando a média móvel Este VI calcula e exibe a média móvel, usando um número pré-selecionado. Primeiro, o VI inicializa dois registros de deslocamento. O registro de deslocamento superior é inicializado com um elemento e, continuamente, adiciona o valor anterior com o novo valor. Este registro de deslocamento mantém o total das últimas x medições. Depois de dividir os resultados da função de adicionar com o valor pré-selecionado, o VI calcula o valor médio móvel. O registro de deslocamento inferior contém uma matriz com a dimensão Média. Este registro de deslocamento mantém todos os valores da medida. A função de substituição substitui o novo valor após cada loop. Este VI é muito eficiente e rápido porque usa a função de elemento de substituição dentro do loop while e ele inicializa a matriz antes de entrar no loop. Este VI foi criado no LabVIEW 6.1. Bookmark amp ShareMGI Library A MGI possui uma biblioteca de VIs que reutilizamos no desenvolvimento de projetos de clientes. A biblioteca é armazenada como um pacote VIPM, então você precisará do VI Package Manager para instalá-lo. Alguns dos MGI VIs dependem de outros pacotes OpenG. Os conteúdos da biblioteca MGI são revistos através da expansão dos itens abaixo dos VIs de função de matriz, todos executam operações de matriz comuns em dados numéricos. MGI Average Este é um VI polimórfico. Este VI calcula e retorna o valor médio da matriz dada de duplas. Média de movimento ponderada centralizada MGI Executa uma média móvel ponderada centrada em uma matriz de acordo com os parâmetros de tamanho e ponderação. MGI Running Average PolyVI: Mantenha as médias correntes de cada um dos valores de entrada. Resposta de Impulso Infinito requer menos processamento, mas é preciso tempo infinito para chegar a um valor de estado estacionário. Finite Impulse Reponse mantém uma matriz do tamanho especificado, mas é capaz de produzir significa. Este VI é um funcionário funcional reentrante. MGI Running Maximum Mantenha o máximo de execução eficientemente. MGI Running Minimum Mantenha um mínimo de execução eficientemente. MGI Interpolate 1D Array Extended Extended versão da Interpolate 1D Array que pode extrapolar fora dos limites da matriz. A extensão linear baseada nos primeiro ou dois últimos elementos da matriz é usada para valores fora de alcance. MGI Threshold 1D Array Extended Extended versão do limite que pode produzir índices fracionários fora dos limites da matriz. A extensão linear baseada nos primeiro ou dois últimos elementos da matriz é usada para valores fora de alcance. MGI Calcule Momentos Máximos Calcule os momentos de pico para um sinal amostrado uniformemente. 0º momento é a área sob o pico, isto é, a soma dos sinais 1 ° momento é a localização do centro de concentração de massa máxima. Calculado pela soma (iyi) soma (yi), it8217s em unidades do espaçamento entre os sinais, com 0 correspondentes ao primeiro elemento da matriz. O segundo momento é a largura do pico RMS, também em unidades de índice. MGI Linear Fit Encontra os parâmetros de ajuste linear de mínimos quadrados para os dados fornecidos. Se a gama de valores x não for maior do que a gama de valores y, então o ajuste é executado com os valores x e y invertidos, com as saídas convertidas de volta para a orientação original. Se a entrada de pesos opcional estiver vazia ou desaconselhada, os pesos utilizados no ajuste estão definidos para 1 (igual ponderação). Histograma estatístico MGI Crie um histograma com base em -3 desvios padrão e valores esporádicos. MGI Calcula diferenças de matrizes Este é um VI polimórfico. Calcule as diferenças entre elementos de matrizes consecutivos. O 0º elemento de saída é igual a x (0) - x (-1), onde x (-1) é uma entrada escalar opcional que padrão é zero. MGI Calcula somas de matriz Este é um VI polimórfico. Calcule somas de elementos de matriz consecutivos. O 0º elemento de saída é igual a x (0) x (-1), onde x (-1) é uma entrada escalar opcional que padrão é zero. MGI Shift Array Muda uma matriz 1-D por uma quantidade especificada para cima ou para baixo, preenchendo com NaN. MGI Decimate Array with Offset Este é um VI polimórfico. Decimata a matriz especificada pelo valor especificado. Um erro é emitido se o comprimento da matriz não for um múltiplo inteiro da decimação. 8220Offset8221 especifica qual decografia é emitida. Um erro é emitido se o Offset for maior ou igual à Decimation. MGI Get Slope at Point Obtém a inclinação do comprimento da unidade da curva definida pelas matrizes de entrada no índice especificado. 2D Array VIs operam em dados bidimensionais (como o que é enviado para um gráfico de intensidade). MGI Edge Enhance 2D Array Execute uma operação de aprimoramento de borda em uma matriz 2D com base no valor absoluto das diferenças entre os vizinhos de um ponto em direções opostas. Não afila bordas, mas afoga as regiões constantes. MGI Gaussian Smooth Aplicar uma função gaussiana de suavização em uma direção em uma matriz de dados 2D. A escala lisa é o comprimento de e-fold em unidades de índice de matriz. O fator de precisão é a proporção do menor termo incluído para o maior termo. Os dados são efetivamente cercados por zero8217s no limite. MGI Smooth 2D Array Execute uma operação de suavização em uma matriz 2D usando um kernel como: 0 1 0 1 1 1 0 1 0 As somas de elementos são normalizadas pelo número de elementos de origem válidos, portanto uma matriz constante permanecerá inalterada. Tamanho MGI XY Determine as dimensões da matriz e coloque o resultado em um cluster XY. Os VIs de Controle de Aplicação utilizam o Servidor LabVIEW VI ou executam tarefas relacionadas a executáveis ou interface de usuário. Referência MGI VI Esta é a versão polimórfica das referências do chamador, atual e de nível superior. O VI também possui uma versão de nível que permite especificar a referência de nível desejada. MGI Change Detector Report se a entrada tiver mudado desde a chamada anterior. Este VI é polimórfico, e a primeira chamada para este VI retornará True ou False com base na instância selecionada. MGI Gray se este VI polimórfico foi projetado para alimentar a propriedade 8220Disabled8221 dos controles. Dependendo da condição, ele emitirá 8220Enabled8221 ou 8220Disabled e Grayed Out.8221 MGI Origin na parte superior esquerda Coloca a origem do painel frontal VI8217s referenciada no canto superior esquerdo do painel. MGI Save 038 Restore Settings Salva ou Restaura as configurações associadas a um VI, incluindo limites de painel, larguras de coluna de lista e gráficos de gráficos. As configurações são salvas em um arquivo ini no caminho especificado. Para controles de estilo de tabela, apenas as colunas com cabeçalhos são salvas. MGI Sair se Runtime Este VI foi projetado para ser usado no final de um aplicativo que será executado como um executável. Ele fecha o painel frontal do executável antes de sair do LabVIEW, eliminando a cintilação irritante à medida que o painel frontal se move para o estado não executado. No código-fonte, este VI não tem efeito. MGI Get Executable Version Se este VI for incorporado em um executável, ele retornará a versão do arquivo (diferente da versão do produto) do executável. Quando executado no ambiente de desenvolvimento, ele simplesmente retorna 8220Development8221. Os executáveis criados com versões do LabVIEW anteriores a 8.0 não incluem as informações necessárias no executável para este VI para retornar a versão. MGI For Loop Progress Bar Este VI é uma barra de progresso para For Loops. Se o 8220Wait Time8221 tiver decorrido e o loop estiver a menos de metade do seu total de iterações, este VI será aberto e mostrará uma barra de progresso para For Loop. Se 8220Show Time8221 for True, este VI exibirá uma aproximação do tempo restante. Uma média móvel é usada para suavizar a aproximação para compensar não-linearidades na execução de código. MGI é tempo de execução O VI retorna um booleano indicando se ele está sendo executado em um executável ou no ambiente de desenvolvimento. MGI Obter valor Este é um VI polimórfico. Obtém o valor do controle especificado por referência. Ele atua como um pequeno nó de propriedade 8220Value8221. MGI Button Dialog Versão aprimorada do diálogo de três botões embutidos para ajuda original, clique no link abaixo). Adicionou uma saída booleana útil para substituição drop-in de diálogos de um ou dois botões, que, como no original you8217ll, obtem conectando cadeias vazias para o texto do botão. Adicionou uma opção para tornar esta uma caixa de diálogo não-modal, mas ocultar o VI de chamada, o que é útil quando você deseja bloquear uma janela, mas não todas as janelas. Este VI é reentrante para suportar essa situação. MGI Demora Atualizações de Painel Defers ou Restaura Atualizações de Painel para o VI especificado. Este VI rastreia o número de vezes que um deferrestore é feito para cada VI, de modo que vários desfavadores devem ser combinados com várias restaurações. Um adiamento ou restauração será tentado mesmo que exista um erro na entrada. MGI Dirty Dot Define, limpa ou lê um ponto sujo no Título do Painel Frontal do VI referenciado. MGI Get VI Control Ref Retorna refnums de todos os controles em um painel frontal. Se os controles de página Incluir tabulação forem verdadeiros, todos os controles nas páginas de tabulação serão incluídos de forma recursiva. O tipo de cada refnum retornado também é exibido no Tipo de Controle. O controle Labeli contém o rótulo de cada controle. MGI Center Callee em Caller Este VI foi projetado para centrar a janela de um streete VI8217s em uma janela do chamador VI8217s. MGI Fade In 038 Out Este VI define iterativamente a transparência do VI referenciado de totalmente transparente para totalmente opaco e vice-versa, fornecendo um visual 8220Fade In8221 ou 8220Fade Out8221. O padrão 8220Speed8221 é definido como arbitrário 821638217. Um número maior causará um desvanecimento mais rápido. MGI Coerce Painel Bounds para área visível Coerce os limites do painel especificado para caber na tela. Se pelo menos um quadrado de 50 pixels do retângulo superior esquerdo ou superior direito aparecer em um dos monitores, os limites do painel original são emitidos. Caso contrário, os limites do painel são alterados para aparecer no monitor primário. MGI Set Front Panel Color Define a cor do painel frontal do VI referenciado. MGI Set Front Panel Title Define o título do painel frontal do VI referenciado. MGI Set Scrollbar Este VI Polymorphic mostra ou oculta a (s) barra (s) de rolagem para a referência de controle especificada. Consulte a ajuda da Instância VI para obter mais informações. MGI Save Front Panel Data Salva os dados do controle e do indicador no arquivo especificado em um arquivo MGI ReadWrite Anything na seção especificada. Os nomes de Controle e Indicador devem ser exclusivos. MGI Restore Front Panel Data Restaura os dados de controle e indicador do arquivo MGI ReadWrite Anything especificado. Os nomes de Controle e Indicador devem ser exclusivos. MGI Disable Enum Merge VI Este é um VI de mesclagem para o controle de enum de desativação. MGI VI Property Node Este VI contém um Nó de Propriedade que está vinculado ao Painel Frontal: Abrir propriedade da Classe VI. Este VI serve como uma mesclagem para soltar um nó de propriedade que já foi vinculado como um tipo de Classe VI. MGI Disable Enum Grayed Merge VI O Disable Enum. vi é menor do que o Enum 8220Disabled e Greyed out8221 e pode ser descartado em diagramas de blocos para economizar espaço. MGI Disable Enum (Small) Este VI polimórfico contém uma instância para cada estado desativado de um controle (Ativado, Desativado, Desativado 038 Grayed). Ele ocupa menos espaço do que uma constante de enumeração no diagrama de blocos. Os Bezier VIs realizam cálculos baseados nas curvas de Bezier, que são semelhantes aos splines cúbicos, mas com algumas diferenças importantes. MGI Bezier Encontre k Procure na matriz de Bezier Control Points para o bloco contendo y. Y é testado contra y (primeiro k 3 4n), onde n 0, 1, 8230. O valor de retorno é (primeiro k 4n), adequado para entrada para Bezier Inverse. MGI Bezier Find k Backwards Pesquise a matriz Bezier Control Points para o bloco contendo y. Y é testado contra y (primeiro k 8211 4n), onde n 0, 1, 8230. O valor de retorno é (primeiro k 8211 4n), adequado para entrada para Bezier Inverse. MGI Bezier Soluções múltiplas inversas Calcule os parâmetros do bezier 0..1 de y, um resultado da função bezier. Todas as soluções no intervalo 0..1 são retornadas, em ordem crescente. MGI Bezier Inverse Time Calcule um tempo a partir de um índice de bloco e um parâmetro 0..1. Na verdade, executa uma função Bezier inversa em vez de uma frente, então você é primeiro mapeado linearmente para o intervalo de tempo, então um Bezier inverso é calculado e, em seguida, o resultado é remapeado no intervalo de tempo. MGI Bezier Inverse Calcule um bezier 0..1 parâmetro de y, um resultado de função bezier. MGI Bezier Scalar Calcule um ponto Bezier dado uma série de pontos de controle, o índice do início do bloco de 4 pontos a ser usado eo valor 0-1 desejado. MGI Bezier Slope Vector Calcula um vetor N-Dimensional Bezier com conjuntos de 4 pontos de controle em cada N dimensões e o valor 0-1 desejado. MGI Bezier Slope Weights Calcula uma matriz de quatro pesos, (1-u) 3, u (1-u) 2, u2 (1-u) e u3 dado. Você deve estar entre 0 e 1. MGI Bezier Time Calcule um parâmetro bezier 0..1 de t. Na verdade, usa um bezier direto em vez de um inverso, então os tempos dos pontos de extremidade são usados primeiro para mapear t para um parâmetro 0..1, então o bezier é calculado, então os pontos finais são usados para mapear o resultado de volta para 0..1. MGI Bezier Vector Este é um VI polimórfico que calcula um vetor N-Dimensional Bezier dado conjuntos de 4 pontos de controle em cada uma das N dimensões e o valor 0-1 desejado. MGI Bezier Weights Este é um VI polimórfico que calcula uma matriz de quatro pesos, (1-u) 3, 3u (1-u) 2, 3u2 (1-u) e u3 dado. Você deve estar entre 0 e 1. MGI Bezier Otimizador Modificação de Downhill Simplex nD para realizar cálculos de modelagem e fornecer uma exibição interativa. Os VIs booleanos operam em dados booleanos. MGI Boolean Debounce Output é verdadeiro somente se a entrada for verdadeira para as chamadas de comprimento de filtro anteriores. Reentrante. GaI Resettable Trigger (Reentrant) Este VI define a saída 8220Trigger8221 alta apenas uma vez em uma margem ascendente da entrada 8220State8221. A saída 8220Triggered8221 é alta depois da primeira vez que há uma vantagem ascendente na entrada 8220State8221. O gatilho é reinicializado através da entrada 8220Reset (F) 8221. Este VI é uma funcionalidade reentrante global, então cada instância deste VI se refere a um gatilho diferente. Os VIs de cluster executam operações em Clusters como substituir um elemento em um cluster ou obter o índice de um elemento. MGI Get Cluster Elements Este VI foi criado para uso com o ReadWrite Anything VIs. Ele quebra um cluster em seus elementos individuais e passa os elementos em uma série de variantes. MGI Get Cluster Index Este VI retorna o índice de ordem de tabulação do elemento ou subelemento no Cluster In named Name. A -1 é retornado se o elemento não for encontrado. O que o Índice significa depende do Modo: Inclua todos os elementos e subelementos: recorre todos os clusters e subgrupos e incrementos para cada cluster ou qualquer outro tipo de dados. O índice retorna a ordem do elemento8217 entre todos os elementos, independentemente do nível. Primeiro nível apenas: apenas olha os elementos do Cluster In. Não irá recuperar em qualquer subgrupo de Cluster In. Nesse caso, Index refere-se à ordem de tabulação do Cluster In. Índice no nível mais baixo: uma vez que um elemento com Nome é encontrado, seu índice de ordens de tabulação em seu cluster de propriedade é retornado no Índice. MGI Get Cluster Value Este VI foi projetado para retornar o valor de um elemento em um cluster (como uma variante) com base no nome fornecido. Se houver vários campos com o mesmo nome, somente o primeiro será retornado. Definir Flat to True evita pesquisar em sub-agrupamentos. MGI Replace Cluster Element Este VI procura por um elemento ou subelemento no Cluster In named Name e substitui-lo por Data. Se Data for o tamanho errado ou se um elemento com Nome não puder ser encontrado, o Cluster In será retornado para Cluster Out. Esses VIs são distribuídos pela National Instruments, mas não são colocados em nenhuma paleta. Eles são úteis para inspecionar o tipo de dados de uma variante. Eles não retornam os dados no fio, mas apenas o tipo de fio. GetArrayInfo Obter informações sobre o tipo de dados Array armazenados em Variant. Se o tipo de dados do Variant8217s não for uma matriz, um código de erro de 1 é retornado. NDims é a dimensionalidade da matriz. Para cada dimensão, Array Lengths contém um elemento que descreve como a memória da matriz é alocada. ArrayElement retorna o tipo de dados do elemento da matriz (em uma variante). GetClusterInfo Obter informações sobre o tipo de dados do cluster armazenado em Variant. Se o tipo de dados do Variant8217s não for um cluster, um código de erro de 1 é retornado. Elementos de cluster contém um tipo de dados para cada elemento de cluster. GetNumericInfo Retorna informações numéricas sobre o tipo de dados numérico armazenado em Variant. Se o tipo de dados do Variant8217s for não-numérico, um erro será emitido. Se o tipo de dados for um Enum, EnumNames contém os itens. As unidades descrevem qualquer informação da unidade. GetPolyVIInfo Obter informações sobre o tipo de dados PolyVI armazenado em Variant. Se o tipo de dados do Variant8217 não descrever um PolyVI, um código de erro de 1 é retornado. O carimbo de data / hora é um valor numérico que representa quando o PolyVI foi editado pela última vez. GetRefnumInfo Obter informações sobre o tipo de dados Refnum armazenado em Variant. Se o tipo de dados do Variant8217s não for um refnum, um código de erro de 1 é retornado. ReferenceType descreve o tipo de Refnum StrictType descreve todos os dados associados ao refnum. Para referências VI estritas, é um tipo de dados VI que descreve o VI. Para Datalogs, é o tipo de dados salvo. O tipo genérico do servidor VI indica o tipo específico da classe do servidor VI, se ReferenceType for 8220LVObjUnknown8221. GetStringInfo Obter informações sobre o tipo de dados String armazenado em Variant. Se o tipo de dados do Variant8217s não é uma string, um código de erro de 1 é retornado. MemoryType descreve a memória usada para armazenar a string, não o comprimento da string. GetTagInfo Obter informações sobre o tipo de dados Tag armazenado em Variant. Se o tipo de dados do Variant8217s não for uma etiqueta, um código de erro de 1 será retornado. MemoryInfo descreve a memória usada para armazenar a etiqueta, não o comprimento da etiqueta. GetTypeInfo Retorna informações sobre o tipo de dados armazenado em Variant. Tipo Enum é o tipo de dados O nome é o nome dos dados Se o dado é definido por uma Definição de Tipo, HasTypedef é verdadeiro e o Typedef contém informações sobre a Definição de Tipo. GetVIInfo Obter informações sobre o tipo de dados VI armazenado em Variant. Se o tipo de dados do Variant8217s não for um VI, um código de erro de 1 será retornado. VI Info retorna as características presumidas do VI. VI Tipos de terminais contém uma entrada para cada terminal no painel do conector VIs. Os terminais não conectados possuem um tipo de dados Void. GetWaveformInfo Obter informações sobre o tipo de dados Waveform armazenado em Variant. Se o tipo de dados Variant8217s não for uma forma de onda, um erro será exibido. YArrayType retorna o tipo de dados do elemento YArray waveform8217s como Variant. SetArrayInfo Define os atributos de um descritor de tipo de matriz. Variant In é o descritor de tipo de matriz cujos atributos serão definidos. Se algum atributo já existe, então eles serão excluídos antes que os novos atributos sejam adicionados. Array Element é o descritor do tipo de elemento que será definido no descritor do tipo de matriz. Array Lengths é uma matriz de comprimentos de dimensão. Haverá uma entrada de comprimento da matriz para cada dimensão na matriz. Variant Out retorna o descritor de tipo de matriz depois que o Elemento de Array e os Comprimentos de Array foram adicionados a Variant In SetClusterInfo Define os atributos de um descritor de tipo de cluster. Variant In é o descritor do tipo de cluster cujos elementos serão definidos. Se algum elemento já existir, então será excluído antes que os novos elementos sejam adicionados. Elementos de cluster é uma matriz de descritores de tipo de elemento que serão definidos no descritor do tipo de cluster. Variant Out retorna o descritor do tipo de cluster depois que os elementos de cluster foram adicionados a Variant In SetNumericInfo Define os atributos de um descritor de tipo numérico. Variant In é o descritor do tipo numérico cujos elementos serão definidos. Se algum atributo já existe, então será excluído antes que os novos atributos sejam adicionados. Enum Names é uma matriz de nomes que serão usados para criar uma enumeração para o numérico. Esta entrada é opcional e só pode ser usada com tipos numéricos inteiros. As unidades são uma matriz de unidade base, pares de expoentes que serão usados para criar unidades para o numérico. Esta entrada é opcional e só pode ser usada com tipos numéricos de ponto flutuante. Variant Out retorna o descritor do tipo numérico depois que nomes e unidades Enum foram adicionados ao Variant In SetRefnumContainedType Define os atributos de um descritor de tipo de matriz. Variant In é o descritor de tipo de matriz cujos atributos serão definidos. Se algum atributo já existe, então eles serão excluídos antes que os novos atributos sejam adicionados. Array Element é o descritor do tipo de elemento que será definido no descritor do tipo de matriz. Array Lengths é uma matriz de comprimentos de dimensão. Haverá uma entrada de comprimento da matriz para cada dimensão na matriz. Variant Out retorna o descritor de tipo de matriz depois que o Elemento de Array e os Comprimentos de Array foram adicionados a Variant In SetRefnumInfo Define os atributos de um descritor de tipo de matriz. Variant In é o descritor de tipo de matriz cujos atributos serão definidos. Se algum atributo já existe, então eles serão excluídos antes que os novos atributos sejam adicionados. Array Element é o descritor do tipo de elemento que será definido no descritor do tipo de matriz. Array Lengths é uma matriz de comprimentos de dimensão. Haverá uma entrada de comprimento da matriz para cada dimensão na matriz. Variant Out retorna o descritor de tipo de matriz depois que o Elemento de Array e os Comprimentos de Array foram adicionados a Variant In SetTypeInfo Define os atributos name e typedef de um descritor de tipo. Variant In é o descritor de tipo cujo nome e atributos typedef serão definidos. Se algum atributo já existe, então será excluído antes que os novos atributos sejam adicionados. O nome é uma string que será usada para criar um nome para o descritor de tipo. Typedef Info é um cluster de um nome VI e timestamp que será usado para criar um typedef para o numérico. Variant Out retorna o descritor de tipo depois que Name e Typedef Info foram adicionados a Variant In SetVIInfo Obter informações sobre o tipo de dados VI armazenado em Variant. Se o tipo de dados do Variant8217s não for um VI, um código de erro de 1 será retornado. VI Info retorna as características presumidas do VI. VI Tipos de terminais contém uma entrada para cada terminal no painel do conector VIs. Os terminais não conectados possuem um tipo de dados Void. O código MGI usa clusters de erro LabVIEW padrão para que ele se integre sem problemas com as funções do LabVIEW embutidas. MGI Insert Reserved Error Wire 8220Reserved Error Code8221 com uma constante de anel de erro a ser inserida, a menos que there8217s um erro upstream ou 8220Error8221 seja falso. A cadeia de origem é criada a partir da cadeia de chamada, começando com este chamador vi8217s e pré-adicionada com a entrada 8220Error Description8221. MGI Acrescentar Cadeia para Origem de Erro Adicionar ou Preencher a mensagem especificada para a string de origem de erro de entrada se houver erro. MGI Suppress Error Code Este VI polimórfico toma um código de erro ou uma série de códigos de erro. Se o código de erro que está sendo passado através de Error In é o escalar ou na matriz de códigos de erro, ele não será passado para Error Out. Qualquer outro código de erro será passado para Error Out. MGI Error Reporter O MGI Error Reporter permite que os erros sejam exibidos para o usuário em um loop separado, permitindo o loop onde o erro ocorreu para continuar executando. O Reporter de erros é criado usando o LabVIEW Classes para que o comportamento possa ser personalizado criando uma classe filho. MGI Create Inicia um daemon do Reporter de Erros usando o Report Report de erro opcional. Se o Gerenciador de Erros não for ligado, a caixa de diálogo MGI Error Reporter será usada. Se um daemon do Reporter de Erros já estiver sendo executado a partir de um VI de nível superior, não faça nada e saia True for 8220Java Running8221. Consulte 8220VI Tree. vi8221 para obter mais detalhes. Se este VI for usado na RT, a classe de diálogo será carregada na RT. Isso pode causar problemas de ligação e salvação. MGI Create Logger Inicia um daemon do Reporter de Erros usando o Report Reporter de Erro opcionalmente com fio. Se o Gerenciador de Erros não for ligado, a caixa de diálogo MGI Error Reporter será usada. Se um daemon do Reporter de Erros já estiver sendo executado a partir de um VI de nível superior, não faça nada e saia True for 8220Java Running8221. Consulte 8220VI Tree. vi8221 para obter mais detalhes. MGI Report Error Este reentrante VI enviará um erro com fio ou aviso para o daemon do repórter de erro. Se nenhum daemon do repórter de erro estiver sendo executado ou se a fila de processamento estiver cheia, o erro ou aviso será descartado. MGI Destrua Parem de executar o daemon do Reporter de erros se nenhum outro VI estiver usando-o. A paleta avançada MGI Error Reporter Advanced contém VIs que afetam o comportamento do Reporter de erros. MGI Obter códigos de erro personalizados Emita os códigos de erro personalizados definidos para o Reporter de erros. MGI Set Custom Error Codes Defina os códigos de erro personalizados que serão usados pelo Reporter de erros. A matriz Nome personalizado deve conter descrições de uma única linha simples de cada código. MGI Show UI Mostra qualquer janela de interface de usuário (UI) associada ao Reporter de Erros enviando uma Mensagem de UI de Exibição para o daemon. O daemon da classe base MGI Error Reporter ignora esta mensagem. MGI Get Error Description Obtém o nome do código de erro especificado, exibindo a descrição padrão se o código de erro não for encontrado. Este VI exibirá o nome personalizado se um código de erro personalizado for especificado. MGI Set Logging Parameters Define o comportamento do registrador de erros. O comportamento padrão é registrar um máximo de 5000 erros por arquivo e manter um máximo de 100 arquivos. Max Errors to Log é o número de erros registrados em um arquivo onde os erros subseqüentes não são registrados. Conecte um -2 para deixar esse número inalterado. Conecte um -1 para registrar todos os erros no arquivo. Conecte um 0 para desativar o log de erros. Max Log Files é o número de registros de erros no diretório de erros. Os arquivos de registro mais antigos são excluídos para abrir espaço para novos arquivos. Wire -2 para deixar esse número inalterado. Conecte um -1 para desativar a exclusão de arquivos mais antigos. Conecte um 0 para desativar o log de erros. MGI Get Logging Parameters emite os erros máximos para registrar e o máximo de arquivos de log. -1 indica que todos os erros serão armazenados. O Diretório de log de erros é o caminho onde os arquivos de log serão armazenados. MGI Enviar mensagem personalizada Enviar uma mensagem personalizada com os dados especificados (como uma variante) para o daemon do Reporter de erros. Este VI é útil para enviar mensagens para uma classe secundária da classe base do MGI Error Reporter, que não manipula nenhuma mensagem personalizada. A paleta de documentação do MGI Error Reporter contém árvores VI para as duas classes do Reporter do erro. É útil para entender como o repórter do erro funciona e quais VIs devem ser substituídos nas classes secundárias para obter um comportamento personalizado. MGI VI Tree Este VI documenta a Classe Base do Relator de Erros MGI. Consulte o Diagrama de blocos para obter documentação. Os arquivos VIs operam em diretórios e arquivos. MGI anexa texto para arquivo anexa 8220Text8221 para o arquivo em 8220Path8221. Nota: Este VI abre e fecha o arquivo especificado sempre que é chamado. MGI Create Directory Chain Este VI cria quaisquer pastas inexistentes no 8220Path8221. A configuração 8220Auto Detect8221 de 8220File Presence8221 procura um 8216.8217 no nome. Neste modo, uma pasta de nível superior com um 8216.8217 won8217t é criada e um arquivo sem uma extensão será criado como uma pasta. MGI Default Ini Path Este VI constrói um caminho de arquivo de configuração padronizado em MyDocuments ou All UsersDocuments dependendo de 8220All Users8221. MGI Replace File Extension Este VI cria substitui a extensão de arquivo no 8220Path In8221 com 8220New Extension.8221 MGI File Dialog Merge VI Merge VI para descartar uma primitiva Dialog do Arquivo (que não aparece na paleta no LabVIEW 8.0 e posterior quando é apenas Disponível através de um VI expresso.) MGI Windows Folder Path Retorna o caminho da pasta Windows especificada. Chama a rotina SHGetFolderPathA no shell32.dll para determinar a resposta. Os VIs Checksum são úteis para calcular e verificar um valor de soma de verificação em um arquivo ou diretório de arquivos. MGI CheckValue Directory Calcule Output uma matriz de todos os arquivos contidos no diretório especificado, juntamente com um CheckValue para cada arquivo. A Entrada da Barra de Progresso Opcional é atualizada se conectado, caso contrário, é exibida uma caixa de diálogo da barra de progresso com aborto. MGI CheckValue Directory Compare Compare os arquivos esperados especificados e os valores de verificação para o diretório especificado. Os arquivos extra no diretório são ignorados. Se todos os arquivos esperados coincidirem, então a saída seja verdadeira, caso contrário, será falso. Se uma referência a um controle deslizante estiver conectada, o controle deslizante é atualizado para mostrar o progresso da comparação. Caso contrário, mostre uma caixa de diálogo de barra de progresso com o botão abortar opcional. MGI Executable Checksum Calcule a soma de verificação do arquivo. exe se um executável estiver sendo executado. FFFFFFFF é retornado quando é executado a partir do sistema de desenvolvimento. MGI File CheckValue Calcule o valor de verificação para o arquivo especificado. Os VIs de configuração são úteis quando se usa o formato de arquivo NI Configuration. Eles adicionam suporte para ler e escrever arrays de valores numéricos para um arquivo de configuração. MGI Read Key Este é um VI polimórfico. Leia uma chave de matriz (na verdade, uma seção) escrita pelo VI de gravação correspondente. MGI Remove Array Sections Remova as seções de um arquivo ini quando uma matriz está diminuindo. Se Old Count for desactualizado, a contagem será lida, a seção pai será removida e a contagem será substituída. Se Old Count for ligado, it8217s assumiu que o tratamento de seção parcial já era executado. Seções infantis que são removidas têm nomes, onde varia de contagem nova para contagem anterior-1. MGI Write Key Este é um VI polimórfico. Escreva um tipo de dados de matriz em um formato legível para humanos. O 8220key8221 é realmente colocado em uma seção separada. Os VIs de planilha suportam arquivos de texto delineados de leitura e gravação que possuem cabeçalhos de texto. MGI Read Spreadsheet File Lê um arquivo de planilha retornando as primeiras linhas não vazias, não numéricas, como um cabeçalho, e depois as seguintes linhas numéricas. A leitura começa no Start Offset. End Offset é o deslocamento do arquivo para a próxima seção HeaderValues. Este VI é semelhante ao arquivo vi. lib 8220Leira do Folha de Cálculo File. vi8221, mas ele suporta cabeçalhos. MGI Write Spreadsheet File Cria ou abre o arquivo de planilha especificada e grava os dados especificados no final do arquivo. Este VI é semelhante ao vi. libWrite Spreadsheet File. vi, mas inclui cabeçalhos. Por padrão, os cabeçalhos somente são escritos se o arquivo for criado novo. Transforme o fio em 8220Append Headers para arquivos existentes8221 para adicioná-los aos arquivos existentes também. A Sharp Zip Library fornece suporte para criar arquivos zip que são maiores do que 2Gigabytes. A Sharp Zip Library depende da tecnologia. net da Microsoft. MGI SZL Adicionar arquivo Adiciona o arquivo especificado pelo caminho do arquivo de origem para o arquivo zip. O caminho de destino no zip deve ser o caminho relativo no arquivo zip, incluindo o nome do próprio arquivo, mas não incluindo o nome do arquivo zip. A entrada updateMode seleciona entre Safe e Direct. O modo de segurança criará um arquivo temporário para que os erros no add não corromperão todo o arquivo. O Direct simplesmente adiciona ao arquivo, por isso é mais perigoso, mas pode ser significativamente mais rápido, especialmente para arquivos grandes. Este VI depende da Sharp Zip Library, que é uma montagem. NET escrita em C por Mike Krueger. É licenciado sob a GPL com uma exceção especial permitindo que módulos independentes se liguem à biblioteca independentemente dos termos da licença do módulo independente. Mais informações sobre a biblioteca e sua licença estão disponíveis em: icsharpcode. netopensourcesharpziplib MGI SZL Fechar arquivo Zip Fecha o arquivo zip. Este VI depende da Sharp Zip Library, que é uma montagem. NET escrita em C por Mike Krueger. É licenciado sob a GPL com uma exceção especial permitindo que módulos independentes se liguem à biblioteca independentemente dos termos da licença do módulo independente. Mais informações sobre a biblioteca e sua licença estão disponíveis em: icsharpcode. netopensourcesharpziplib MGI SZL Extrair arquivo Extrai a entrada especificada pelo caminho de entrada no zip do arquivo zip para o caminho de destino. O caminho de entrada no zip deve ser o caminho relativo dentro do arquivo zip. Se o caminho de destino já existe, você pode exibir uma caixa de diálogo para confirmar a substituição pela fiação TRUE para confirmar a substituição. Este VI depende da Sharp Zip Library, que é uma montagem. NET escrita em C por Mike Krueger. É licenciado sob a GPL com uma exceção especial permitindo que módulos independentes se liguem à biblioteca independentemente dos termos da licença do módulo independente. More information about the library and its license is available from: icsharpcode. netopensourcesharpziplib MGI SZL List Zip Contents Lists the file names of all the files in the zip file and if file info is true, outputs a large cluster of info about each file. This VI relies on the Sharp Zip Library which is a. NET assembly written in C by Mike Krueger. It is licenced under the GPL with a special exception permitting independent modules to link to the library regardless of the license terms of the independent module. More information about the library and its license is available from: icsharpcode. netopensourcesharpziplib MGI SZL New Zip File Creates a new empty zip file in the path specified by target path. The new file overwrties an existing file or produces an overwrite confirmation dialog based on the value of confirm overwrite. This VI relies on the Sharp Zip Library which is a. NET assembly written in C by Mike Krueger. It is licenced under the GPL with a special exception permitting independent modules to link to the library regardless of the license terms of the independent module. More information about the library and its license is available from: icsharpcode. netopensourcesharpziplib MGI SZL Open Zip File Opens an existing zip file. This VI relies on the Sharp Zip Library which is a. NET assembly written in C by Mike Krueger. It is licenced under the GPL with a special exception permitting independent modules to link to the library regardless of the license terms of the independent module. More information about the library and its license is available from: icsharpcode. netopensourcesharpziplib MGI SZL UnZip To Directory Unzips the contents of zip file to the target directory. If Preview only is true, this VI doesn8217t unzip the contents and just returns a preview of the list of files. This VI relies on the Sharp Zip Library which is a. NET assembly written in C by Mike Krueger. It is licenced under the GPL with a special exception permitting independent modules to link to the library regardless of the license terms of the independent module. More information about the library and its license is available from: icsharpcode. netopensourcesharpziplib MGI SZL Zip Directory Compresses everything in root directory into a zip file. If include subdirectories is TRUE, this VI recursively includes any subdirectories. Open Options can be set to create the zip file new, or open an existing one and append on to it. This VI relies on the Sharp Zip Library which is a. NET assembly written in C by Mike Krueger. It is licenced under the GPL with a special exception permitting independent modules to link to the library regardless of the license terms of the independent module. More information about the library and its license is available from: icsharpcode. netopensourcesharpziplib SZL Zip Directory Compresses everything in root directory into a zip file. If include subdirectories is TRUE, this VI recursively includes any subdirectories. Open Options can be set to create the zip file new, or open an existing one and append on to it. MGI Open Explorer Window Open a Windows Explorer window to the specified file8217s directory and select the file. If the path specifies a directory, then the explorer window is opened to that directory, unless 8220Select Directory8221 is true, in which case the explorer window is opened to the parent directory and the specified directory is selected. Graph VIs are useful for setting properties of Chart and Graph controls MGI Autoscaling Enum Merge VI This is a merge VI. It exists to allow easy dropping of the enumeration from the palettes. MGI Graph Tools Enum Merge VI This is a merge VI. It exists to allow easy dropping of the enumeration from the palettes. MGI Non Repeating Plot Color Generate colors that are good for a white background and distinguishable from each other. MGI Set Plot Names This is a polymorphic VI. Sets the plot names as specified, optionally growing the Plot Legend to fit the number of names. If Plot Name is empty, then the Plot Legend is hidden, otherwise it is shown. MGI Set Z Scale Colors Updates the specified color scale using a distribution of colors specified by 8220Scheme8221. Min and Max describe the range of data that is to be displayed using the color scale. If 8220Z Scale Ref8221 is not wired, the scale will not be updated but 8220ValueScale8221 will still contain data for the specified scheme. The output 8220ValueScale8221 will have 256 colordata pairs. Matrix and Vector VIs operate on 1D (for Vector) and 2D (for Matrix) arrays of numeric data. These include Cross Product, which is not included in LabVIEW. MGI Vectors Approximately Equal Check that two vectors are within a given distance of each other. The default tolerance (distance between vectors) is 1E-5. MGI Cross Product Calculate the cross product of two 3-dimensional vectors in cartesian coordinates. MGI Dot Product Computes the dot product of X Vector and Y Vector. MGI Calculate Vector Length Calculate the length of a cartesian vector. MGI Identity Matrix 42154 Simply provides a 42154 SGL identity matrix. The Menu Building palette provides an extensible API for creating Application Menus, Windows Tray item Menus, and Control shortcut menus. It is useful for dynamic menu creation and for simplifing common Menu behavior such as toggling checkboxes and forcing radio button behavior among a set of Menu items. MenuConstructor Polymorphic VI to choose the type of menu you want to create. MenuItemConstructor Use this to create a new MenuItem. Most of the menu items you create can be left as generic menu items. Only use a specialized menu item when you need to use an additional field of that menu item. For example a shortcut in a VI MenuItem, or an icon in a MenuStrip MenuItem SelectionConstructor Polymorphic VI to select the built in selection types. Destroy Destroys the MenuItem. This ensures that all references contained by the menu item are also destroyed. Do not use the 8220Delete Data Value Reference8221 on a MenuItem Reference as this will lead to memory leaks. Use this vi instead. Init Inistializes the menu. This vi will delete any menu8217s that are currently in place. This also creates the Menuitem Clicked event. Do not use this VI to rebuild the menu. There is a separate Rebuild Menu VI. Menu Building Initialization Merge VI This Merge VI is a good starting place for most MenuBuilding menus. It has all of the vi8217s needed to initialize a new menu RebuildMenu Rebuilds the menu after a menu item array is changed. This will not destroy old MenuItem references, so make sure to destroy any MenuItems no longer being used. BasicInfo Retreives basic information about the last menu click. This VI returns the data of the menu item after the menu click. If you need to view more detailed data or the data before the menu click, use a property node. Cleanup Destroys the Menu and all MenuItems inside it. MenuClicked Simulates the menu click. This will perform an identical action as the user actually clicking the MenuItem. SetToDefault Searches the menu for any item with 8220Clicked by Default8221 set to true and then fakes a click on this item. This is useful for initializeing radio selections or checkmark selections to default values. MenuItem Clicked Events will be generates for these default clicks. If you want to process these events, make sure this VI is run after the Register for User Events node on the MenuItem Clicked Event. The Tray Icon palette contains VIs that work with Windows Tray menus. ShowBalloon Shows the notification balloon from the tray item. Balloon Text is required to be a non-empty string. Default timeout is set by the OS, and typically approx 10 sec. For more info see msdn. microsoften-uslibraryms160065.aspx MinimizeToTray Minimizes the referenced to tray. If VI Refnum is unwired the caller is assumed. RestoreFromTaskbar Restores a VI what has previously been Minimized to Tray. If VI Refnum is unwires, the calling VI will be used. Set Show on Taskbar to false to keep the VI from showing in the taskbar. FindMenuItemByTag Searches the menu structure recursively for a menu item with the full tag specified. The Menu Examples palette contains example VIs that use the MGI Menu Building VIs. VI Menu Example Demonstrates the Menu Strip type. Run the VI to see it8217s Runtime Menu replaced by the specified menu. Notice the shorcut key on the Exit Menu item. Click summarys show up in the history array. Click the 8220Add Item8221 to add a dummy item to the VI8217s menu. Tray Icon Example Demonstrates the Tray Icon menu type. Run the VI to see the menu and icon appear in the system tray. Right click the icon to see the menu appear. Double click the Icon to signal a 8220Default8221 menu item click. Fill in the Balloon Info values and click 8220Show Balloon8221 to see the balloon pop-up in the system tray. The 8220tipText8221 is the only field required in the balloon info and an error will be thrown if you try to show a balloon with no tipText. the minimum timeout is controlled by the OS and any value less than the OS value will be coerced up Click summarys show up in the history array. Click the 8220Add Item8221 to add a dummy item to the TrayIcon8217s menu. Control Example Demonstrates the Control Menu type. Right click on the 8220Listbox8221 to see the menu generated. Click summarys show up in the history array. Click the 8220Add Item8221 to add a dummy item to the control8217s menu. MenuStrip Example Demonstrates the Menu Strip type. Run the VI to see the menu appear in the MenuStrip. NET control. Notice the 8220File - Default8221menu item that contains an icon as well as the 8220File-Exit8221 menu item contains a shortcut. Click summarys show up in the history array. Click the 8220Add Item8221 to add a dummy item to the MenuStrip8217s menu. SelectionTypeExample Run the VI and look under the 8220Selection Types8221 menu item for a demo of the built in selection types. Coordinate VIs are useful for performing rotations on 2D or 3D datasets. MGI Apply Transform Polymorphic VI: Apply a cartesian coordinate translation and rotation. MGI Center from 3 Points Polymorphic VI: Calculate the center of a circle based on three points on the circle. MGI Find 2D Intersection of 2 Lines Finds the intersection of 2 lines. If the lines are parallel, then an argument error (code 1) is output. The lines are specified using 2 points for each line. The points are specified as rows in a 2D array where the first column is x and the second is y. MGI Rotate Vector Polymorphic VI: Perform a 3D vector rotation about a coordinate axis. MGI Cylindrical to Cartesian Convert R, Th, Z to X, Y,Z. MGI Find Closest Line Segment Finds the line segment closest to the given x and y coordinates. The Graph Data is intepreted as a sequence of points which are connected by line segments. The points in the graph are assumed to be connected in the order provided. The output index is the index of the first point in the data that is an endpoint of the closest line segment. MGI Find Closest Point Finds the index of the point in the input data that is closest to the given x and y coordinates. The optional input allows the user to use the city block metric (i. e. the sum of the distances in the x and y directions) instead of the standard distance measurement. MGI Generate Orthonormal Basis Generate a set of orthonormal basis vectors from three points given in cartesian coordinates. The basis vectors are found by normalizing: w1p1-p2 w2w1 x (p2-p3) w3w1 x w2 MGI Generate Rotation Matrix Generate a 32153 rotation matrix with specified diagonal elements, - the off diagonal element, and specified axis unrotated. Numeric VIs operate DBL or SGL precision floating point numbers and on integers. They include the coercion, comparison, and rounding subpalettes. For easy access and use with quickdrop, the compound arithmetic nodes are also included. MGI Get Real Quadratic Roots Gets the real roots of the quadratic equation Ax2 Bx C 0. If there are no real roots, then both outputs are NaN. If there is a double root that is real, then both outputs are equal to the double root. If the coefficients correspond to a linear equation (i. e. A is zero) then Root1 is the solution to the linear equation and Root2 is NaN. This VI is configured to run as a subroutine. MGI Nth Root Take the nth root of x. Handles x Ends with Contains Begins with MGI Determine Time Format String Determines a Time Format String for a given string in a common date format. For example Thu, January 1, 2011 3:00 PM would be a, B, d, Y I:M p. The Day Before Month input specifies whether the day or month is first when in a 12111 type format. The Leading Zeros input determines if the day, month number, and hour will have a leading zero if they are only 1 digit. MGI Parse Format String Parses the string at the specified position for a format code. The portion of the string before the format code is output as 8220Delim8221. If an error occurs, then an error is output and the Offset out is -1. MGI Scan From String This PolyVI handles scan from string for special datatypes. Timing VIs are usefull for measuring the execution duration of some code and for providing a delay that uses explicit dataflow using an error cluster. MGI Wait This is the polymorphic version that contains both millisecond and second versions of MGI Wait. Useful to create data dependency on the error lines and to have a smaller icon. If 8220Error In8221 has an error, then this VI won8217t perform the wait. MGI Milliseconds Since Last Call This VI stores the tick count on a shift register and provides as an output the number of milliseconds since the last time this VI was called. MGI Milliseconds Since Last Reset Returns the amount of time in milliseconds since the last time the VI was reset. This VI is non-reentrant. Tree VIs are usefull for populating the LabVIEW Tree control. MGI Get Tree Tag Children Get all child tags of the specified tag for the specified tree control. MGI Populate Tree with Delimited Strings Populates the specified Tree Control with the specified items. The items are delimited strings where the text of each parent is in the string seperated by delimiters. For example, the string 8220CProjectFoo8221 with the delimiter 82208221 would be shown as C Project Foo Each Row in the 2D Items array is a child item. The first column contains the Tags. Subsequent columns contain Text for the Tree control columns. If 8220Use Child Only Items8221 is true, then items in the 2D array that are not followed by a descendent item are inserted as 8220Child Only8221. Otherwise, all items are inserted as Child OnlyFalse. NOTE: If Use Child Only Items is true, then the 2D array must have all parent tags followed immediately by one child item. MGI Tree Rows from Delimited String Array Convert the array of delimited strings stored in the first column of the specified array to Tree Rows. The remaining columns are used as text for each tree row. Post navigationLabVIEW Programming Special Topic Guides FIRST LabVIEW TroubleshootingLabVIEW Troubleshooting Special note on the library vis: Starting in 2013 the cRIO simulator was added. Isso introduziu duas versões diferentes de muitos do WPILib vis, uma para execução autônoma em um PC e outra para operação padrão no robô cRIO. A versão correta do código da biblioteca é carregada dependendo do destino atual (PC vs. cRIO). Um efeito secundário estranho é que, se você soltar uma biblioteca vi em um vazio vi apenas para detalhar para estudar os internos, então você provavelmente obterá a versão para PC e você estará estudando como funciona o simulador de cRIO, e não como a versão do robô Do código funciona. 2011 Árvore de menu LabVIEW Aqui está uma ajuda para localizar a biblioteca vis (clique com o botão direito do mouse em qualquer janela do Diagrama de blocos para obter essas paletas). Menus gerais (2010) WPIlib Menu Tree (2011) 2013 Framework Os frameworks que a NI desenvolve e entrega anualmente com a última edição do FRC LabVIEW simplesmente estabelecem um estilo de programa. A estrutura é apenas um modelo e estilo de programa básico que muda e melhora um pouco a cada ano. Você pode desenvolver seu próprio programa usando o seu próprio estilo completamente a partir do zero. Os elementos essenciais que cada programa do robô FRC requer são: Comunicações com a Estação Driver Reconhecendo e processando os diferentes modos de competição que chegam nos pacotes DS Operações autônomas Controles do driver Teleop A pasta Team Code contém todo o código que você normalmente deve modificar para se adequar ao seu robô e jogo plano. Se você adicionar o seu próprio aspecto, eles também devem ser mantidos aqui. Nada de fora deve ser tocado até bater as encostas Avançadas. Abra todos os seus dispositivos aqui e crie nomes de refnum para identificar de maneira exclusiva cada um deles. Isso é chamado apenas uma vez no início. O Framework está configurado aqui em Begin. vi para chamar automaticamente o Independent Autônomo. No início do Modo Autônomo e para matá-lo automaticamente quando o Modo Autônomo termina. Autônomo Independent. vi NÃO adicione uma chamada explictada a este vi no seu código. É configurado para ser chamado automaticamente e adicionar suas próprias chamadas irá interromper esse processo em segundo plano e pode fazer com que seu robô seja inoperável durante o teleop. Isso é chamado apenas uma vez, então coloque tudo o que quiser feito durante o Modo Autônomo aqui. Você não deixa isso, então espera e os atrasos podem ser usados conforme desejado aqui. Controles típicos do driver. Isso é chamado de 50 vezes por segundo à medida que os pacotes de controle da Driver Station chegam. NÃO insira o código aqui que aguarda ou leva mais de alguns milissegundos para executar. Se este vi demorar muito para ser executado, os controles do seu driver responderão lenta, esporadicamente ou não. Isso significa que não há loops, sem temporizadores de espera, sem atraso de alimentação Watchdog. O código operacional normal do driver geralmente será dividido entre Teleop. vi e Periodic Tasks. vi Teleop. vi obtém as ações de fluxo contínuo, como a condução através dos joysticks, que não exigem atrasos para fornecer um mecanismo de tempo mecanismo para completar a operação. O periódico Tasks. vi obtém as ações complexas demoradas que precisam de muito tempo para serem concluídas, como uma catapulta que precisa ser liberada e ajustada novamente como parte de um único botão de joystick. Em comparação com a velocidade do computador, leva muito tempo para puxar fisicamente um mecanismo, trancá-lo e liberá-lo novamente. Qualquer coisa que faça você querer adicionar uma demora ou esperar um sensor para lhe dizer que está pronto pode ser feito mais facilmente em Tarefas Periódicas. vi do que em qualquer outro lugar. Periodic Tasks. vi Isso é chamado apenas uma vez, mas espera-se que as tarefas aqui sejam executadas dentro de um loop Never ending While ou uma estrutura Flat Sequence. Normalmente, você terá vários loops completamente separados executados aqui para fazer coisas independentemente mutuamente. Isso pode ser usado para sequências cronometradas, por exemplo, se você possui um mecanismo que opera em vários passos discretos. Digamos que um motor gatilha uma catapulta, uma trava mecânica o retém, o pneumático solta o trinco, o atraso de tempo enquanto aguarda a catapulta para completar o lançamento e repita o ciclo de carga. Você pode ter um loop completamente separado, apenas prestando atenção a um dos Seus botões de joystick e pulando para fazer o que quiser sempre que esse botão é pressionado. Isso simplesmente encerra todos os dispositivos que você abriu em Begin. vi para limpar quando o programa sair. Curiosamente devido à forma como desligamos, ou seja, nós não energizamos o robô, este Finish. vi nunca será executado. Sua presença aqui é ensinar uma boa forma que será importante na maioria das aplicações normais do LabVIEW, que os alunos irão encontrar ao usá-lo na faculdade e no trabalho. Operações comuns de robôs Estes exemplos pré-FRC 2015 ainda se aplicam, porém algumas pequenas mudanças foram feitas na Biblioteca FRC WPI. Exemplos atualizados podem ser encontrados nos exemplos LabVIEW 2015 Aqui estão exemplos de maneiras de fazer algumas das funções de robôs mais comuns. Como a estrutura expande os elementos necessários em vários arquivos, esses exemplos estão em forma de imagem para reunir todas as partes, onde você pode ver tudo de uma só vez. Cada exemplo inclui os caminhos do menu para onde todos os ícones usados nessa imagem são encontrados. O LabVIEW também fornece exemplos autênticos para a execução da Janela de Introdução que incluem diagramas de fiação para conectar dispositivos adequadamente. Esses projetos de amostra são excelentes para testar se um dispositivo está funcionando e conectado corretamente. Uma vez que eles são programas autônomos, é preciso uma compreensão intermediária da estrutura padrão para descobrir como integrar adequadamente os conceitos no seu projeto LabVIEW. JoystickExample (2010) WPI Robotics Library-DriverStation-Joystick Kinect Exemplo de Joystick (2012) WPI Robotics Library-DriverStation-Joystick Exemplo de Entrada Digital. por exemplo. Interruptores de limite (2010) WPI Robotics Library-IO-DigitalInput Exemplo de Entrada Analógica (2010) WPI Robotics Library-IO-AnalogChannel Compressor Exemplo (2012) WPI Robotics Library-Atuators-Compressor Nota: 2012 também exige que o Compressor loop vi seja colocado no Frequency Tasks. vi Driver Station DigitalAnalog Input Example WPI Robotics Library-DriverStation-Compatibilidade IO Programming-Boolean Relay Example (2010) WPI Robotics Library-Atuadores-Relé WPI Robotics Library-DriverStation-Joystick Programação-Comparação Servo Example (2010) WPI Robotics Library - Actuadores-Servo WPI Robotics Library-DriverStation-Joystick Programação-Comparação Single Motor Example (2010) WPI Robotics Library-Atuators-MotorControl WPI Robotics Library-DriverStation-Joystick Botão Controle de Motor Exemplo (2013) WPI Robotics Library-Atuators-MotorControl WPI Robotics Library-DriverStation-Joystick Programação-Comparação Quer mais botões Adicione uma seleção para cada um assim: Não quer ter que manter pressionando o botão Em seguida, adicione um Nó de Feedback para lembrar: Exemplo de Solenóide Único (2010) WPI Robotics Library-Atuadores-Solenóide WPI Robotics Library-DriverStation-Joystick Exemplo de solenóide duplo (2011) WPI Robotics Library-Atuators-Solenoid Programming-Boolean WPI Robotics Library-DriverStation - Joystick Double Solenoid Example (2010) - implementação alternativa WPI Robotics Library-Atuators-Solenoid Programming-Boolean WPI Robotics Library-DriverStation-Joystick Relé Solenóide Exemplo (2011) - para solenóide duplo, 2 vermelhos com fio para MM-, 2 negros com fio para (WPI Robotics Library-Actuators-Relay Programming-Boolean Programming-Structures Relay Spinking Examples (2011) - 3 variações WPI Robotics Library-Atuators-Relay Programming-Boolean Programming-Structures Relay Current Settings (2012) - como recuperar as Configurações de Relé atuais WPI Robotics Library-Atuators-Relay Programming-Boolean Programming-Array Cascade Relay Exemplo (2012) - quando você quer trabalhar com vários botões WPI Robotics Biblioteca-Atuadores-Programação Relé-Programação Booleana-Estruturas Comece a Comunicação da Estação Driver (2010). Se o Framework padrão for usado, isso já é tratado no Robot Main. vi (2010). Apenas esteja ciente de que se você estiver escrevendo seu código do zero, isso é necessário para começar a se comunicar com o Driver Station, caso contrário o cRIO permanecerá em um estado Desativado. WPI Robotics Library-DriverStation Arcade Drive Exemplo (2010) WPI Robotics Library-RobotDrive WPI Robotics Library-DriverStation-Joystick Tank Drive Exemplo (2010) WPI Robotics Library-RobotDrive WPI Robotics Library-DriverStation-Joystick Holony ou Mecanum Drive Exemplo (2014) WPI Robotics Library-RobotDrive WPI Robotics Library-DriverStation-Joystick CAN Tank Drive Exemplo (2010) - Observe que as bibliotecas LabVIEW CAN devem ser baixadas do FRC SourceForge CAN Project. E copiado para c: Arquivos de Programas Instrumentos NacionaisLabVIEW 8.6usr. lib As novas bibliotecas aparecerão no menu Funções depois que o LabVIEW for reiniciado. Bibliotecas de usuários - CANJaguar para LabVIEW WPI Robotics Library-DriverStation-Joystick Safety vis (2011) - isso é totalmente opcional, mas é ativado por padrão no Open2Motor e Open4Motor vis. Você deve codificar em um determinado estilo para usá-lo, essencialmente, você deve projetar o seu código para chamar um dos jogadores de base (ArcadeTankHolonomic) mais rápido do que todos os .1 segundos (toda vez que você recebe um pacote de dados do DS funciona bem). Se você não sabe como aproveitar e achar o robô mantém bloqueado, então você deve Desativá-lo para que seu robô não esteja morto durante uma competição. WPI Robotics Library-RobotDrive Drive Abrir 2 Motor. vi Drive Open 4 Motor. vi Watchdog (2010) - este User Watchdog não é mais usado e é totalmente opcional. Se você não sabe como tirar proveito disso e você se encontra apenas atirando em Feeds em todo lugar até o robô parar de bloquear, então você deve Desativá-lo ou removê-lo completamente. O User Watchdog deve SOMENTE ser usado nos caminhos críticos de Autonomous Independent. vi Teleop. vi e somente em fluxos de dados que seriam perigosos se os motores do robô fossem executados de forma incontrolável. NUNCA use Watchdog em Tarefas Periódicas. vi, a menos que não seja absolutamente usado em qualquer outro lugar. WPI Robotics Library-Utilities-Watchdog Valor inicial (2010) - Esta é apenas uma maneira de alimentar um valor inicial em um vi. Isso só será verdadeiro na primeira vez que se chama. Ele pode alimentar uma declaração de caso booleano ou qualquer outra estrutura booleana que você gosta. Programação - Programação de sincronização - comparação Recorde o valor máximo (2010) - É assim que você pode observar e salvar o valor máximo (ou mínimo) recebido de um fluxo de entrada. Programming-Structures Programming-Comparison Button Action Once Only on Press (2010) - este e os seguintes exemplos de botão podem ser usados com sensores internos como o gatilho não apenas com joysticks. WPI Robotics Library-RobotDrive WPI Robotics Library-DriverStation-Joystick Programação-Estruturas Programação-Comparação Programação-Cluster, Classe, Variante Botão Ação Uma vez em versão (2010) WPI Robotics Library-DriverStation-Joystick Programação-Estruturas Programação-Comparação Programação-Cluster , Classe, botão Variant Ação Uma vez somente em Pressione e em versão (2010) Biblioteca WPI Robotics-DriverStation-Joystick Programação-Estruturas Programação-Comparação Programação-Cluster, Class, Variant Button Toggle Action (2014) - um exemplo usa um caso para separar ações. Um exemplo de uso aproveita o fato de que o botão será 0 ou 1 e usará um exclusivo Exclusivo ou para executar a alternância cada vez que o botão for pressionado. WPI Robotics Library-DriverStation-Joystick Programação-Estruturas Programação-Comparação Programação-Cluster, Classe, botão Variante Início da ação temporizada (2010) - os atrasos cronometrados usados aqui como exemplo podem ser substituídos por sensores que contam positivamente quando o mecanismo é Inclinado ou acabou de disparar. WPI Robotics Library-DriverStation-Joystick Programação-Estruturas Programação-Comparação Programação-Cluster, Classe, Variante Qual botão foi empurrado (2011) - Útil para decidir qual dos vários botões joystick ou Driver Station personalizados foi pressionado. Isso age com base em qual de uma série de botões foi pressionada. O botão de número mais baixo ganha se vários forem pressionados de uma só vez. WPI Robotics Library-DriverStation-Enhanced IO Programming-Structures Programming-Arrays Programming-Numeric Programming-Boolean Two or More Button On-Off (2013) - Isso lembra o último valor definido por um botão. Adicione tantos botões quanto quiser para várias configurações de energia. A implementação alternativa usando instruções de caso é mostrada no final. Pode ser usado com ponto flutuante, enum (por exemplo, Solenóides de Relé) ou qualquer outro tipo de dados exigido pelo tipo de dispositivo que está sendo configurado. Programação-Estruturas Programação-Botão de comparação Incremento de energia (2014) - Isso aumenta ou diminui a energia para um motor sempre que um dos botões é pressionado, de modo que aumenta o poder de um passo com cada pressão. Programação-Estruturas Programação-Comparação Último botão Pushed (2011) - Isso lembra o último botão pressionado. Pode ser usado com menos botões, mas este exemplo mostra o uso do número máximo de botões provenientes da Estação Driver. Isso também pode ser usado com a Compatibilidade de Estação de Driver IO. WPI Robotics Library-DriverStation-Enhanced IO Programming-Structures Programming-Numeric Programming-Boolean Limit Switch (2010) WPI Robotics Library-DriverStation-Joystick WPI Robotics Library-IO-DigitalInput Programação-Estruturas Programação-Comparação de programação-Boolean Limit Throttle (2010) - este exemplo funciona SOMENTE no Teleop. vi porque depende da taxa regular de 50 Hz na qual o Teleop. vi é chamado. O mesmo pode ser feito em outros lugares, mas você precisa adicionar um atraso regular de 20ms. WPI Robotics Library-DriverStation-Joystick WPI Robotics Library-Atuadores-MotorControl Programação-Curva de resposta do Joystick numérico (2010) - o exemplo é uma curva de resposta em cubo simples WPI Robotics Library-DriverStation-Joystick WPI Robotics Library-Atuators-MotorControl Programação-Comparação de programação - Numeric Joystick Deadband (2014) - Como lidar com um joystick desleixado que não retorna exatamente a zero quando lançado. No primeiro exemplo, o joystick é ignorado dentro da faixa morta (.1 a -.1 neste exemplo) e fora dessa banda entrega energia do motor de 0 a 1. O segundo exemplo tem a mesma faixa morta, mas trunca a saída do motor entre. 1 e 1 (ou -.1 e -1), então nenhuma potência de 0,05 já aparece. Isso é bom para dispositivos, como drivetrains, que não se moverão com menos de .3 de qualquer maneira. Ele dá ao joystick um pouco mais de alcance. WPI Robotics Library-DriverStation-Joystick WPI Robotics Library-Atuadores-MotorControl Programação-Comparação Programação-Numérico Tensão Corrigido Tank Drive Exemplo (2012) - esta é uma maneira simples de tornar a sua unidade controla a resposta um pouco mais consistente WPI Robotics Library-RobotDrive WPI Robotics Library-DriverStation-Joystick Switch de 3 posições (2010) WPI Robotics Library-IO-DigitalInput Programação-Comparação Programação-Numérico Digital 0-9 BCD Switch (2010) WPI Robotics Library-IO-DigitalInput Programming-Boolean Programming-Array Analog Switch (2010) - exemplo de usar entradas analógicas como um interruptor de posição múltipla WPI Robotics Library-IO-AnalogChannel Programação-Comparação de programação-Booleana Escrever Mensagem para o Driver Station (2010) WPI Robotics Library-DriverStation Programação-String Programming-String-StringNumber Conversão Escrever dados em disco (2010) Programação-Arquivo IO Programação-Arquivo Constantes de Arquivo IO Escrever Imagem em Disco (2010) Programação-Arquivo IO Programação-Arquivo Arquivo IO Constantes PRIMER Vision-Image Management Tachometer (2010) - assume um sensor digital, como um sensor de luz retro-reflexivo, é usado para detectar um objeto giratório. Um cuidado sobre o Counter - pode produzir valores revoltos ou falsos na inicialização, então seja cuidadoso e examine os resultados quando você o usa pela primeira vez. WPI Robotics Library-Sensors-Counter Encoder (2010) Só permite que quatro codificadores sejam amostrados em 4x, mas muitos em 2X. WPI Robotics Library-Sensors-Encoder WPI Robotics Library-IO-Digital Input Gyroscope (2010) WPI Robotics Library-Sensors-Gyro Accelerometer (2010) WPI Robotics Biblioteca-Sensores-Acelerômetro Sensor ultra-sônico - MaxBotix EZ1 Sonar (2012) WPI Robotics Library-IO - Sensor Ultrassônico AnalogChannel - Somente para o sensor emissor pareado Vex-style (2010) WPI Robotics Library-Sensors-Ultrasonic I2C Sensor (2010) - isso usa um Hitech I2C Compass para o exemplo WPI Robotics Library-Communications-I2C Programming-Array Programming-Numeric - Data Manipulation Counting Things (2012) WPI Robotics Library-IO-DigitalInput Programação-Estruturas Programação-Comparação de programação-Boolean Moving Average (2010) - Você chama este subvi para adicionar um novo valor com cada chamada e produz a média em uma janela Das últimas n amostras. Diga-lhe o número de valores (n) em média apenas com a primeira chamada, depois disso, essa entrada é ignorada. Ele também permite que você saiba quando você alcançou um conjunto completo de valores. Este exemplo ilustra a inicialização, o seqüenciamento para evitar valores de clausulação à medida que os usa, salvaguardando a alteração de entradas que não podem ser alteradas, manipulação de matriz e criação de um índice de ciclagem. O LabVIEW tem alguns filtros internos que fazem o trabalho para você localizado na paleta Funções sob Processos de processamento de sinal. Programação-Programação de matrizes - Estruturas Programação-Programação de comparação-Programação numérica-Programação de conversão numérica-Programação booleana - Sincronização de máquina de estado (2010) - a idéia aqui é que você deseja fazer coisas diferentes com base em um estado particular que seu programa está rastreando. Neste exemplo, você adicionou algum tipo de atividades para cada estado, como ativar solenóides ou motores. Os estados podem mudar de acordo com o feedback do sensor, como um sensor de bola. WPI Robotics Library-DriverStation-Joystick Programming-Structures Programming-Comparison Programming-Numeric Delayed Event (2010) - isso é para uso em vis iterativo, como o Teleop, e simplesmente pode iniciar uma ação, então pare n segundos depois. Esse tipo de ação também pode ser executado para você pelo tempo transcorrido vi. WPI Robotics Library-DriverStation-Joystick Programação-Estruturas Programação-Comparação Programação-Programação de temporização-Programação numérica-Conversão numérica P (ID) Exemplo (2010) - Este código escapa uma panela no robô para o eixo dos x de um joystick via Feedback proporcional. Não são usados os termos I ou D. A maior parte do trabalho aqui é apenas a parte que mapeia a gama completa do movimento do joystick para o sensor do potenciômetro do motor de direção (pote). A parte PID é bastante simples. A parte mais difícil é ajustar o coeficiente P, experimentando com o robô real. WPI Robotics Library-DriverStation-Joystick WPI Robotics Library-IO-AnalogChannel WPI Robotics Biblioteca-Atuadores-MotorControl Programação PID-Exemplo de câmera numérica (estilo de 2009 que funcionaria, como é, em 2010s Periodic Tasks. vi) O Framework 2010 já possui A câmera embutida, WPI Robotics Library-Camera FIRST Visão-Gerenciamento de imagem Programação-Estruturas Interrupção (2010) O uso disso será raro, mas isso pode ser usado com uma entrada digital ou um disparador analógico. WPI Robotics Library-Utilities-Interruptions WPI Robotics Library-IO-DigitalInput Equations (2010) Programação-Matemática numérica-Elementar Funções especiais-Funções trigonométricas Programação-Estruturas O nó de fórmula permite a inserção de um subconjunto muito bom de C. Não só Você também pode escrever equações, mas loops e código condicional. Calhando o código C (2014) Para chamar funções C do LabVIEW, você pode criar uma biblioteca de fontes C e, em seguida, chamar essa biblioteca usando uma função de biblioteca de chamadas. Variações simples em autônomo autônomo independente. vi podem ser múltiplas tarefas paralelas. Por exemplo, as duas amostras seguintes podem coexistir bastante confortavelmente no mesmo vi. Duas seqüências independentes que operam ao mesmo tempo, uma que dirige o robô enquanto a outra pisca uma luz de estado do solenóide. Este caso é bastante simples, no entanto, ele ilustra que tarefas mais paralelas independentes e complicadas, como esta é possível. Talvez um robô malabarista enquanto navega por um labirinto. Sequência plana - Provavelmente o método mais simples de programação de uma seqüência fixa de movimentos autônomos. Tudo dentro de um quadro deve ser concluído antes do próximo quadro começar. Tem a aparência do filme. (2012): Loop - Se houver uma ação ou conjunto de ações, você só quer continuar repetindo, desde que o Modo Autônomo dure, você pode fazer algo assim. Este exemplo apenas funciona com um solenóide, abrindo-o e fechando-o repetidamente. Se nenhum solenóide estiver realmente ligado, então você ainda terá uma luz piscando no módulo solenóide. Isso pressupõe que o User Watchdog não seja usado ou seja tratado em outro lugar (2010): Copyright copy 2005 - 2017 Hauppauge Robotics. Todos os direitos reservados. Sobre este site.
Комментарии
Отправить комментарий