quinta-feira, maio 20, 2021

Memórias dos Anos 90: O Sistema Spectrum One

 Uma das vantagens dos coletores da Symbol em relação à concorrência era o sistema Spectrum One de comunicação por rádio. Nos meus primeiros anos na Seal eu trabalhei muito com ele (posteriormente foi montado um time só para cuidar dos projetos com rádio frequência).

A base de rádio do Spectrum One. A antena era externa e existiam muitas opções

As primeiras soluções de RF para coletores operavam em narrow band (faixa estreita de frequência), o que exigia uma licença governamental para cada local (o governo estipulava a frequência de forma a não interferir com outros sistemas na mesma área) e taxa de comunicação baixas (9600bps no melhor dos casos). Tipicamente os sistemas usavam um protocolo do tipo "poll-select", onde um nó central interroga periodicamente os coletores ("terminais") para receber informações deles.

O Spectrum One operava na faixa de 900MHz, onde é dispensada a licença por local e é permitida uma potencia de 1W, desde que seja utilizada a técnica de "spread spectrum". Nesta técnica a transmissão é feita em várias frequências de forma a permitir a comunicação mesmo que exista interferência em alguma delas. Quando se fala em "spread spectrum" normalmente se pensa em frequence hopping, onde o rádio salta de frequência. O Spectrum One usava o "direct sequence" onde o sistema transmite em várias frequência ao mesmo tempo, este modo é mais simples de implementar fazendo um xor entre os dados e uma sequência pseudo-alateória de bits. Outro ponto importante foi que, enquanto outros sistemas usavam a faixa toda visando maximizar a taxa de comunicação, o Spectrum One usava uma taxa mais moderada de 60Kbps, o que permitia criar canais independentes dentro da faixa disponível. Por último, o Spectrum One usava um esquema de CSMA-CA, onde o transmissor detecta quando o meio está em uso e aguarda um tempo aleatório antes de retentar para evitar colisões. O resultado foi um sistema que, quando usado corretamente, suportava uma centena de coletores com bons tempos de resposta.

A topologia do sistema era um pouco estranha. Os coletores falavam com bases de rádio (transcievers). Estas bases eram interconectadas por cabo coaxial. Uma das bases se conectava via serial RS232 ou RS422 com uma controladora, responsável por interfacear com o computador onde rodava a aplicação. Aqui as coisas não eram tão perfeitas. Um documento, que só tivemos acesso depois de muito tempo, revelava que o desempenho da comunicação coaxial era bem abaixo do especificado, no que diz respeito ao número de bases e comprimento total. Mesmo assim o resultado era suficiente para sistemas bem grandes (comparados com o dos concorrentes).

As controladoras eram outro ponto delicado. A versão de baixo custo era a SAB (Serial Access Bridge) um PC desktop simplinho rodando (a partir de disquete!) uma aplicação DOS que de um lado falava com as base e do outro (através de comunicação serial) com um PC. Mais tarde teve a SAB-II que era um PC um pouco melhor em um gabinete mini-torre com o software aperfeiçoado. Uma adaptação não oficial era colocar um HD para não depender do disquete. Uma terceira opção foi a SAB-Lite, onde uma base com firmware especial era ligada direto a um PC. Exceto pelo fato de limitar a rede a uma única base, era uma solução interessante por reduzir o custo e aumentar a robustez.  Ao contrário dos demais protocolos do sistema, o protocolo serial com o PC era documentado. O protocolo usava pacotes que começavam por STX - não o caracter ASCII STX, mas as letras 'S', 'T' e 'X'. O resto não era muito melhor...

Existia uma biblioteca padrão da Symbol (chamada Enabler) para falar o protocolo da SAB e interagir com um software padrão para os coletores (o STEP), mas era para uso com C. Por muita insistência de clientes, a Seal desenvolveu um programa DOS que falava com a SAB e interagia com uma aplicação simulando digitação e interceptando escritas na impressora. Com isso era possível fazer uma aplicação RF em Clipper... se o programador entende-se das consequências de estar tratando múltiplos coletores (lembro de um único cliente que efetivamente fez isso).

A Symbol tinha desenvolvido algumas controladoras específicas para alguns sistemas, mas o que acabamos comercializando foi uma controladora de um parceiro deles, a Connect. A Connect criou uma estrutura eficiente, confiável e modular para integrar o sistema Spectrum One a diversos tipos de computadores. A controladora ("NCU") era um PC rodando Unix (inicialmente SCO Unix, mais adiante Linux), com uma placa multiserial para conexão de bases e placas de interface específicas. A primeira NCU que usamos foi para ligação a mainframe IBM (já conto um pouco mais), o mais popular foi a conexão a computadores diversos via TCP/IP com emulação Telnet.

Quando eu entrei na Seal ela tinha acabado de fechar um negócio para instalação do seu primeiro sistema Spectrum One em uma siderúrgica recém privatizada. O sistema era bastante grande, com algumas dezenas de coletores, bases espalhadas ao longo de  alguns quilômetros, em depósitos imensos, sob condições ambientais extremas. Realmente um batismo por fogo.

Inicialmente o nosso contato e suporte era através da Symbol, mas conseguimos participar de uma apresentação da Connect para os técnicos da Symbol e fizemos contato com o dono (e principal desenvolvedor) da Connect. Para nossa surpresa, ele se propôs a vir ao Brasil acompanhar a configuração e o início da operação. Foi o começo de uma boa parceria e uma grande amizade. Uma coisa impressionante foi ver o Chris operando o editor vi (graphical desktop? We don't need no stinking graphical desktop).

O sistema Spectrum One foi implantado com sucesso pela Seal em inúmeros clientes. Mas, numa época em que as empresas já tinham adotado rede local, a grande pergunta era porque era preciso ter uma rede coaxial independente para as bases. Uma base que liga-se diretamente a uma rede TCP/IP era a evolução óbvia e foi aí que a Symbol começou a se envolver no que se tornaria o WiFi que hoje todos conhecem. Mas isto fica para outro post.

Nenhum comentário: