1. Introdução
Certamente, todo mundo que começou ou está apenas começando a estudar microcontroladores STM32 possui uma placa de depuração de fabricação chinesa, apelidada apropriadamente de turistas estrangeiros da Blue Pill (tablete azul).
Essa placa é baseada no chip STM32F103C8T6, que é um processador de 32 bits baseado no núcleo Cortex - M3. A figura abaixo mostra a placa clássica e a atribuição de pinos.
A aparência do quadro clássico Como fazer PLC a partir de meios improvisados em 5 minutos?
Como costuma acontecer, as lições da Internet ensinaram como trabalhar com temporizadores, USART, alternar estados de saída e até mesmo trabalhar com DMA! E depois de todos os testes, a placa ocupa um lugar seguro na prateleira de peças de reposição - uma coisa boa, mas até agora nenhuma aplicação decente foi encontrada.
Se você estiver lendo este artigo, é hora de tirar a placa da prateleira e remover a poeira, porque agora faremos um controlador lógico programável baseado em conformidade com a norma internacional IEC61131-3.
Depois que o microprocessador piscar com o firmware conectado (infelizmente, até que a publicação dos códigos-fonte nos planos esteja disponível), ele poderá funcionar já como um PLC. E o mais interessante é que a placa pode ser programada usando o software GX Developer FX padrão projetado para a programação de controladores Mitsubishi FX2N. Eu fiz o download gratuito deste software (e do Russified) no site oficial da Mitsubishi após o registro.
Então, que novos recursos nossa pequena placa azul adquiriu após o firmware?
Primeiro, agora você pode conectá-lo a um computador usando o conector micro-USB. Para fornecer troca de dados entre o ambiente de programação e o controlador, você deve instalar os drivers da porta COM virtual. Eles podem ser baixados no link do documento bluepill_update.pdf no anexo. Após instalar o driver e conectar a placa ao USB, um novo dispositivo aparecerá nos dispositivos do computador pessoal, conforme mostrado na figura.
Tipo de configuração de hardware do controlador após a instalação de drivers Agora você pode executar o GX Developer FX que instalamos. Após iniciar o programa, você terá a seguinte janela:
Primeiro lançamento do GX Developer FX O próximo passo é criar um novo projeto. No menu Projeto - Novo projeto. Esta janela será aberta para você:
Novo projeto na GX Developer FX Você não pode alterar nada aqui e clique em OK. Então - nós temos um projeto vazio e agora precisamos configurar uma conexão online com o quadro.
Para fazer isso, selecione no menu Online - Configurações de transferência. Esta janela será aberta para você:
Configurando a conectividade no GX Developer FX Você não pode alterar nada aqui e clique em OK. Então - nós temos um projeto vazio e agora precisamos configurar uma conexão online com o quadro.
Para fazer isso, selecione no menu Online - Configurações de transferência. Esta janela será aberta para você:
Configurando a conectividade no GX Developer FX Na série de interfaces para PC, selecione Ordinal (aqui está traduzido incorretamente - deve ser
Serial) e você verá esta janela:
Configuração de porta serial Aqui, selecionamos o número da porta COM correspondente ao visível nos dispositivos de computador pessoal. É chamado de Porta COM Virtual STMicroelectronics (COM2) em nosso caso. Agora podemos verificar se há alguma conexão. Para fazer isso, clique no botão Testar conexão na caixa de diálogo anterior. Se tudo estiver em ordem, você receberá uma mensagem como na figura abaixo:
E agora podemos avançar com segurança para a coisa mais interessante - programar o controlador. Esta versão suporta três idiomas: IL - idioma da instrução, tipo de exibição de string. LAD - linguagem lógica da escada, tipo de exibição visual. SFC - idioma dos blocos consecutivos, tipo visual de exibição. E você sempre pode alternar entre exibir os idiomas IL e LAD e vice-versa. A seguir, é apresentado um programa LAD típico:
E aqui está o mesmo programa, mas na linguagem IL:
Claro, isso é bom, mas quero examinar a lógica do programa - para entender o que está acontecendo lá. Para fazer isso, pressione o botão F3 - e se o programa for gravado no controlador, o display será alternado para o modo de monitoramento online. Para gravar o programa, você precisa selecionar no menu Online - Gravar no controlador.
A seguinte janela será mostrada:
Seleção de elementos do projeto para gravação no controlador Na janela, selecione as opções para gravação (aqui estão selecionados todos os parâmetros do programa e do controlador) e clique no botão Executar. O programa notificará você que, para gravar o controlador, será alternado para o modo STOP (você verá isso com a extinção do LED conectado ao PC13), ele gravará e colocará o controlador no modo RUN.
E é assim que o código fonte do programa LAD será mostrado on-line:
Tipo de parte do programa no idioma LAD no modo de monitoramento online E a mesma parte de um programa online de IL:
Tipo de parte do programa em monitoramento on-line de IL E aqui está o código fonte do SFC:
SFC - a aparência do programa Para conveniência dos testes, utilizo desenvolvimentos de testes antigos do hardware do controlador, que por um motivo ou outro não foram utilizados. Uma dessas placas é mostrada na figura abaixo:
Placa de depuração - Controlador intermediário Esta placa fornece isolamento galvânico para o barramento UART1, UART2 e 1 fio. Entradas e saídas discretas também são isoladas galvanicamente. Os seguintes mnemônicos são aceitos para o programa: X1 é a entrada com endereço 1, Y2 é a saída com endereço 2, M104 é o operando bit com endereço 104, D1000 é o registro geral com o endereço 1000. A versão do firmware que está no anexo tem as seguintes restrições: O número de etapas do programa é 1000 (o máximo possível é 8000).
Número de registros - 2000 (faixa D0000-D1999) Número de variáveis de bit - 3072 (faixa M0-M3071) UART1 - suporte para mestre / escravo Modbus RTU, número de escravos no modo mestre -2 (máximo possível - 128) .UART2 - suporte para Modbus Mestre / escravo da RTU, o número de escravos no modo mestre -2 (máximo possível - 128).
Por padrão, os parâmetros de comunicação serial são 57600, 8N1. UART1 - no modo escravo com endereço 1, UART2 - também no modo escravo com endereço 2.
Para o barramento de um fio, no momento, o suporte é apenas para sensores como DS18B20, o número de escravos é -2 (o máximo possível é 128).
Também é possível descarregar o programa do controlador e convertê-lo em um formato legível por humanos (eu prefiro o LAD).
O programa é construído usando o sistema operacional em tempo real ChibiOS RT.
As configurações de comunicação nos modbus RTU e nos barramentos de 1 fio são configuradas usando o programa que você encontra no anexo. Por exemplo, agora consideramos configurar e procurar sensores com endereços desconhecidos. Após iniciar o programa, você terá esta janela:
Aparência do programa configurador após o início Vá para a guia 1-wire e selecione 1-wire master, e certifique-se de clicar no botão Write to PLC para gravar no controlador:
Configuração do assistente de 1 fio E agora, depois de clicar no botão Procurar escravo, uma janela é aberta, onde você pode selecionar um endereço na área D0000-D2000, a partir da qual os valores de temperatura registrados nos sensores serão registrados na forma de um número de ponto flutuante.
Janela de pesquisa de escravo de barramento de 1 fio E a janela abaixo é mostrada após uma pesquisa bem-sucedida de todos os sensores conectados ao barramento de troca de dados.
Janela de pesquisa de escravos - 3 sensores de temperatura conectados encontrados Aqui, podemos adicionar os sensores encontrados na configuração atual ou substituir completamente o atual por um novo. No nosso caso, os dados de temperatura serão transmitidos para a área de registro do controlador nos endereços D1500, D1502 e D1504 na forma de um número de ponto flutuante. Tudo o que resta é pressionar o botão Write to PLC e reiniciar a placa para ativar a nova configuração de hardware.
Fazendo Download de uma Nova Configuração para o Controlador O que mais pode ser adicionado sobre o programa de configuração? Há um ponto - esta é a representação dos números de ponto flutuante no controlador FX2N. Para simplificar a entrada de constantes nesse formato, tive que usar um registro constante com o modificador H. Assim que o interpretador do controlador encontrar esse modificador, ele entenderá que um número no formato de ponto flutuante será transmitido com ele, mas na forma de um registro IEE754 com precisão única. A janela do programa na guia Conversor é mostrada abaixo.
Converter formatos de número de ponto flutuante Conclusão - o que obtivemos:
Chegou a hora da pergunta - mas, de fato, qual é a velocidade de um controlador desse tipo? Tudo é simples aqui - ao pesquisar ambas as portas de comunicação via modbus RTU (controlador escravo - ambas as portas) a uma velocidade de 500 kbps e um comprimento de consulta de 122 registros, pesquisando 17 sensores de temperatura e executando o programa mais "pesado" (composto por operandos binários) da 7745 etapas, o ciclo de execução foi de 21 ms. E, é claro, também existem desvantagens em tal controlador. O primeiro é que as placas azuis diferem na baixa qualidade dos componentes e, portanto, recomendo aplicar energia externa à placa antes de conectar o mini-USB. O segundo é, obviamente, que não há memória não volátil (mais precisamente, existe - mas apenas 9 registros na área suportada pela bateria). E você mesmo entende que esse dispositivo é melhor não ser usado para aplicativos críticos ou em produção. Mas para casa ou para treinamento - este é o mais barato, acessível e compreensível.
Tentei fazer a revisão extensiva - e se você tiver algum problema, escreva. Ficarei especialmente feliz se você encontrar erros na implementação do programa. Espero que o artigo seja informativo e você não perdeu tempo lendo-o.
Os downloads deste artigo estão abaixo.