Quantos Loops de PID podem ser configurados em um M580
Introdução
Quantos loops PID podem ser configurados em um sistema M580?
Qual será o tempo de varredura típico do controlador para 100 malhas fechadas?
Acima estão algumas perguntas típicas que muitos de nós podem ter ouvido durante nossas discussões técnicas com o usuário final. No entanto, essas perguntas são genuínas, não temos nenhuma evidência documental ou representação técnica conosco para responder.
Houve um debate entre o grupo de especialistas técnicos, no entanto, cada indivíduo tem suas próprias interpretações.
Alguns fornecedores dizem que não há limitação…
Alguém diz que meu sistema é capaz de lidar com saídas analógicas “2K”, portanto, posso configurar loops PID de 2K.
Mesmo que essas declarações pareçam convincentes, praticamente não é viável configurar 2K / loops ilimitados em um único sistema de controle dentro do tempo de varredura desejado. É bom conhecer os fatos e as capacidades do sistema antes de submeter a conformidade com as especificações da EU.
O fato é que, a capacidade PID pode ser derivada apenas com base na memória do controlador
Um POC foi realizado para resumir os recursos do Sistema M580 em relação ao manuseio do PID e seu impacto no tempo de varredura.
Arquitetura usada e pré-requisitos
- O controlador M580 HSBY (BMEH58 6040) foi considerado para POC com 1 X80 RIO drop
- O Unity V13 foi usado para criar aplicativos.
- Conhecimento M580 + Unity Pro
- Entender a estrutura de memória interna do M580
- Conhecimento em configuração do PID
Metodologia POC
> Work Flow
> Step 1 – Descubra o tempo de varredura ideal do M580
- Configure o controlador M580 HSBY (BMEH58 6040) com 1 X80 RIO drop conforme a arquitetura.
- Faça Download da aplicação sem qualquer código e capture o tempo de varredura do M580..
> Step 2 – Descubra os requisitos de memória para PIDFF (usando EF da biblioteca de unidade)
- Além da Step 1, configure um PIDFF com todas as funcionalidades em uma seção DFB, baixe o aplicativo e meça o tempo de varredura do M580, os requisitos de memória.
- Registre os requisitos de memória para 1 loop PID comparando a step 2 e a step 1
- Adicione mais blocos PIDFF (10,20,30….até 100) com todas as funcionalidades em uma seção DFB, baixe o aplicativo e meça o tempo de varredura do M580, os requisitos de memória.
- Registre a média de memória de dados consumida e verifique a consistência do tempo de varredura.
> Step 3 – Carregar o controlador M580 com lógica de aplicação + malhas PID (até 100 malhas com EF e 100 malhas com DFB)
- Além da Step 2, configure um PIDFF com todas as funcionalidades em uma seção DFB, baixe o aplicativo e meça o tempo de varredura do M580, os requisitos de memória.
- Repita o procedimento 2,3,4 acima mencionado no Step 2.
> Step 4 – Carregar o controlador M580 com lógica de aplicação + malhas PID (até 100 malhas com EF e 100 malhas com DFB)
- Em continuação ao step 3 … Carregar o controlador M580 com lógica de aplicação de preferência de um projeto real.
- Registre o tempo de varredura, disponibilidade de memória do controlador M580.
- Adicione 100 loops PID (EF) junto com o código do aplicativo e registre a variação do tempo de varredura e os requisitos de memória.
- Adicione 100 loops PID (DFB) junto com o código do aplicativo e registre a variação do tempo de varredura e os requisitos de memória.
> Step 5 – Conclusão
> Step 1 – Descubra o tempo de varredura ideal do M580 SCPU
- Configure o controlador M580 HSBY (BMEH58 6040) com 1 X80 RIO drop conforme a arquitetura.
- Faça download do aplicativo sem qualquer código e capture o tempo de varredura do M580.
M580 HSBY Tempo de varredura registrado como 1 ms , sem nenhum código de aplicativo.
Step 2 – Descubra os requisitos de memória para PIDFF (usando EF da biblioteca de unidade)
- Além da Etapa 1, configure um PIDFF com todas as funcionalidades em uma seção DFB, baixe o aplicativo e meça o tempo de varredura do M580, os requisitos de memória.
- Registre os requisitos de memória para 1 loop PID comparando a etapa 2 e a etapa 1
- Adicione mais blocos PIDFF (10,20,30….até 100) com todas as funcionalidades em uma seção DFB, baixe o aplicativo e meça o tempo de varredura do M580, os requisitos de memória.
- Registre a média de memória de dados consumida e verifique a consistência do tempo de varredura.
Para 1 Loop PID
M580 HSBY Tempo de varredura registrado como 1 ms , sem nenhum código de aplicativo.
A memória de dados consumida é de 2656 bytes e o código executável é de 8928 bytes;
Para 10 Loops PID
M580 HSBY Tempo de varredura registrado como 1 ms , sem nenhum código de aplicativo.
A memória de dados consumida é de 4928 bytes e o código executável é de 1064 bytes;
Para 20 Loops PID
M580 HSBY Tempo de varredura registrado como 2 ms , sem nenhum código de aplicativo.
A memória de dados consumida é de 7408 bytes e o código executável é de 13520 bytes;
Para 50 Loops PID
M580 HSBY Tempo de varredura registrado como 2 ms , sem nenhum código de aplicativo.
A memória de dados consumida é de 14864 bytes e o código executável é de 21744 bytes;
Para 100 Loops PID
M580 HSBY Tempo de varredura registrado como 3 ms , sem nenhum código de aplicativo.
A memória de dados consumida é de 27.280 bytes e o código executável é de 36.384 bytes;
- Além da Etapa 1, configure um PIDFF com todas as funcionalidades em uma seção DFB, baixe o aplicativo e meça o tempo de varredura do M580, os requisitos de memória.
- Registre os requisitos de memória para 1 loop PID comparando a etapa 2 e a etapa 1
- Adicione mais blocos PIDFF (10,20,30….até 100) com todas as funcionalidades em uma seção DFB, baixe o aplicativo e meça o tempo de varredura do M580, os requisitos de memória.
- Registre a média de memória de dados consumida e verifique a consistência do tempo de varredura.
Dados registrados
> Memory consumed for 10 PID loops is 4928 bytes
> Memory consumed for 20 PID loops is 7408 bytes. Hence for 1 PID loop 7408 – 4928 / 10 = 248 bytes
> Memory consumed for 50 PID loops is 14864 bytes. Hence for 1 PID loop 14864 – 7408 / 30 = 248 bytes
> Memory consumed for 100 PID loops is 27280 bytes.Hence for 1 PID loop 27280 -14864 / 50 = 248 bytes > Higher vale considered as 250 bytes
> Executable code for 10 PID loops is 10864 bytes.
> Executable code for 20 PID loops is 13520 bytes. Hence for 1 PID loop 13520 – 10864 / 10 = 265 bytes
> Executable code for 50 PID loops is 21744 bytes. Hence for 1 PID loop 21744 – 13520 / 30 = 274 bytes
> Executable code for 100 PID loops is 36384 bytes. Hence for 1 PID loop 36384 – 21744 / 50 = 292 bytes - Higher vale considered as 300 bytes
O tempo de varredura não tem muito impacto. Por isso não é levado em consideração.
Para fins de discussão, é anotado como 2-3 ms
> Step 3 – Descubra os requisitos de memória para PIDFF (usando DFB da biblioteca PES/hDCS)
- Além da Etapa 2, configure um PIDFF com todas as funcionalidades em uma seção DFB, baixe o aplicativo e meça o tempo de varredura do M580, os requisitos de memória.
- Repita o procedimento acima 2,3,4 mencionado na Etapa 2
> Dados registrados
> Memory consumed for 10 PID loops is 6352 bytes
– 1ms Scan Time
> Memory consumed for 20 PID loops is 10672 bytes. Hence for 1 PID loop 10672 – 6352 / 10 = 432 bytes
– 2ms Scan Time
> Memory consumed for 50 PID loops is 23632 bytes. Hence for 1 PID loop 23632 – 10672 / 30 = 432 bytes
– 3ms Scan Time
> Memory consumed for 100 PID loops is 45392 bytes.Hence for 1 PID loop 45392 - 23632 / 50 = 435 bytes
– 5ms Scan Time
> Higher vale considered as 435 bytes
> Executable code for 10 PID loops is 16848 bytes.
> Executable code for 20 PID loops is 20320 bytes. Hence for 1 PID loop 20320 – 16848 / 10 = 347 bytes
> Executable code for 50 PID loops is 33103 bytes. Hence for 1 PID loop 33103 – 20320 / 30 = 426 bytes
> Executable code for 100 PID loops is 54224 bytes. Hence for 1 PID loop 54224 – 33103 / 50 = 422 bytes > Higher vale considered as 426 bytes
O tempo de varredura não tem muito impacto. Por isso não é levado em consideração.
Para fins de discussão, é anotado como 3-5 ms
> Step 4 – Carregue o controlador M580 com lógica de aplicação + loops PID (até 100 loops com EF e 100 loops com DFB)
- Em continuação ao passo 3 … Carregue o controlador M580 com lógica de aplicação preferencialmente de um projeto real.
- Registre o tempo de varredura, disponibilidade de memória do controlador M580
- Adicione 100 loops PID (EF) junto com o código do aplicativo e registre a variação do tempo de varredura e os requisitos de memória.
- Adicione 100 loops PID (DFB) junto com o código do aplicativo e registre a variação do tempo de varredura e os requisitos de memória.
Dados registrados
> Memory consumed for application code without PID loops is 354512 bytes.
> Memory consumed for 20 PID loops is 359552 bytes. Hence for 1 PID loop 359552 – 354512 / 10 = 252 bytes
> Memory consumed for 50 PID loops is 367136 bytes. Hence for 1 PID loop 367136 – 359552 / 30 = 252 bytes
> Memory consumed for 100 PID loops is 379712 bytes.Hence for 1 PID loop 379712 – 367136 / 50 = 252 bytes
> Memory consumed for 200 PID loops(EF+DFB) is 423120 bytes. Hence for 1 PID loop 423120 – 379712 / 100 = 434 bytes > Higher vale considered as 252 bytes , 435 bytes for EF&DFB respectively.
> Executable code loaded is 3234976 bytes without PID loops
> Executable code for 20 PID loops is 3239984 bytes. Hence for 1 PID loop 3239984 – 3234976 / 10 = 250 bytes
> Executable code for 50 PID loops is 3248496 bytes. Hence for 1 PID loop 3248496 – 3239984 / 30 = 283 bytes > Executable code for 100 PID loops is 3263888 bytes. Hence for 1 PID loop 3263888 – 3248496 / 50 = 307 bytes > Higher valve considered as 307 bytes.
Tempo de varredura 36 ms apenas com o código do aplicativo
41 ms com 100 loops
49 ms com 200 loops. 49-36 = 13 ms
Maior valor considerado como 20 ms para 200 loops.
> Step 5 – Conslusão
EF | DFB | Remarks | |
For 1 PID Loop | |||
Data Memory | 252 Bytes | 435 Bytes | |
Executable Code | 307 Bytes | 426 Bytes | |
Scan Time | 20 ms | 20 ms | For 200 loops + add 20 ms system overheads to compensate site conditions and real project environment. |
- Ex: Estime o desempenho da CPU autônoma M580 Nível 2 (P2040)
- Suponha que 40% da memória de dados usada para lógica do aplicativo e 40% sejam deixados livres para uso futuro.
- Significa praticamente que ficamos de fora com 20% de memória, ou seja, 150 Kbytes disponíveis.
- Suponha projeto implantado usando hDCS..
Cálculo:
- 153600 bytes / 435 = 350 Loops podem ser configurados
- 534 * 426 = 222 KB de código executável serão consumidos.
- Tempo de varredura: 8 gotas RIO precisam de min 12 ms + código executável 60 ms (aprox para 10K IO) + PID 40 ms + overheads 20 ms
- Total: 132ms
Nota:
Os parâmetros capturados são para o sistema HSBY e usados para a configuração do controlador autônomo para atingir os valores ideais.
20 ms Overhead é para compensar as condições reais do processo em relação à bancada de teste.
A ideia é derivar aprox. valores, os valores reais podem ser ligeiramente diferentes.
Responses