1) Áreas de memória (I, Q, M e DB)
No S7-1200, você organiza variáveis por “área”. Isso é fundamental para entender endereços e fazer manutenção.
| Área |
Significado |
Quando usar |
| I |
Entradas físicas (sensores/botoeiras) |
Leitura do campo (0/1 ou valores analógicos) |
| Q |
Saídas físicas (atuadores) |
Comando para o campo (liga/desliga / referência) |
| M |
Memórias internas (bits/words) |
Selagem, estados, flags, temporizações auxiliares |
| DB |
Data Block (dados estruturados) |
Setpoints, receitas, parâmetros, estados agrupados |
Regra prática: I e Q “conversam com o mundo”. M e DB “organizam o cérebro” do programa.
2) Como ler endereços (bit/byte/word)
Endereços podem apontar para um bit (BOOL), byte (8 bits), word (16 bits) ou dword (32 bits).
Exemplos típicos
Bit (BOOL):
I0.0 -> Entrada byte 0, bit 0
Q0.1 -> Saída byte 0, bit 1
M0.0 -> Memória byte 0, bit 0
Byte (8 bits):
IB0 -> Byte de entradas 0 (0..255)
QB0 -> Byte de saídas 0
MB10 -> Byte de memória 10
Word (16 bits):
IW64 -> Word de entradas 64 (0..65535)
QW64 -> Word de saídas 64
MW10 -> Word de memória 10 (2 bytes)
DWord (32 bits):
MD20 -> Double word memória 20 (4 bytes)
Macete: B byte (8b) • W word (16b) • D dword (32b).
Pegadinha: se você usar MW10 (2 bytes), ele ocupa MB10 e MB11. Evite “sobrepor” endereços.
3) Tipos de dados (BOOL, INT, DINT, REAL)
Tipo de dado define como o valor é interpretado. Escolher o tipo errado dá bugs “invisíveis”.
| Tipo |
Tamanho |
Faixa / Uso típico |
| BOOL |
1 bit |
Estado lógico (0/1): Start, Stop, Falha, Selagem |
| INT |
16 bits |
-32768..32767 — contagens pequenas, tempos, índices |
| DINT |
32 bits |
-2.147.483.648..2.147.483.647 — contagens grandes, totalizadores |
| REAL |
32 bits |
Números com decimais — engenharia: nível, pressão, vazão, temperatura |
Exemplo de escolha de tipo
- Botão Start: BOOL
- Contador de peças por minuto: INT (ou DINT se ficar grande)
- Nível em % com decimais: REAL
Boa prática: valores analógicos normalmente viram REAL após escala (ex.: 4–20 mA → 0..100%).
4) Data Blocks (DB) — por que usar
DB é onde você guarda dados “organizados”. Em vez de espalhar MW/MD por todo lado, você cria um DB com nomes claros.
Isso melhora manutenção e evita conflito de endereços.
Exemplo de DB para uma bomba
DB_Bomba (ex.: DB10)
StartCmd : BOOL
StopCmd : BOOL
MotorOn : BOOL
FalhaTermico : BOOL
Nivel_Pct : REAL
TempoPartida_s: INT
Memória M é ótima para flags rápidas. DB é melhor para dados de processo, parâmetros e estrutura.
Dica: se o projeto crescer (muitas áreas/máquinas), DB vira “obrigatório” para não virar bagunça.