Marinas do Litoral Paulista

Prefixo Chamada Clube ou Marina Local Freqüencia
PYD 20 DELTA 20 I.C. São Vicente São Vicente VHF Canal 68/69
SSB 4431.8/8291.1
PYD 21 DELTA 21 I.C. Santos Guarujá VHF Canal 68/74
SSB 4431.8/8291.1
PYD 23 DELTA 23 I.C. Tamoios Ubatuba VHF Canal 68
PYD 24 DELTA 24 I.C. Ilhabela São Sebastião VHF Canal 68/69/70/74
SSB 4431.8/8291.1
PYD 25 DELTA 25 I.C. Cigarras São Sebastião VHF Canal 68
PYD 26 DELTA 26 I.C. Baía S.Vicente São Vicente VHF Canal 68/70
SSB 4431.8/8291.1
PYD 27 DELTA 27 I.C. Itanhaém Itanhaém VHF Canal 68
SSB 4431.8
PYD 28 DELTA 28 I.C. Barra do Una Alcatrazes VHF Canal 68
SSB 4431.8/8291.1
PYD 30 DELTA 30 Ubatuba I.C. Ubatuba VHF Canal 68
SSB 4431.8/8291.1
PYD 31 DELTA 31 Pico São Sebastião São Sebastião  
PYD 34 DELTA 34 C. Naut. Ilhabela Ilhabela VHF Canal 68
PYD 35 DELTA 35 Náutica Pontal São Sebastião VHF Canal 68
PYD 36 DELTA 36 Marina Porto Vitória Ubatuba VHF Canal 68/73
PYD 37 DELTA 37 Angel Marine Caraguatatuba VHF Canal 68
PYD 38 DELTA 38 Mar. Porto Ilhabela Ilhabela VHF Canal 68
PYD 39 DELTA 39 Marina Igararecê São Sebastião VHF Canal 68
PYD 40 DELTA 40 Marina S. Francisco São Sebastião VHF Canal 68
PYD 41 DELTA 41 Marina Timoneiro Ubatuba VHF Canal 68
PYD 42 DELTA 42 Marina Tropical Bertioga VHF Canal 68
PYD 44 DELTA 44 I.C. Tabatinga Caraguatatuba VHF Canal 68
PYD 45 DELTA 45 Marinas Nacionais Bertioga VHF Canal 68
PYD 49 DELTA 49 Marina Off Shore Caraguatatuba VHF Canal 71
PYD 56 DELTA 56 Pindá I.C. Ilhabela VHF Canal 68
2XD73 DELTA 73 Mar. Saco da Ribeira Ubatuba VHF Canal 68

Náutica – Tabela de Canais x Frequências

Canal Freqüência em MHz Tipo de Tráfego Função
TX RX (USA) RX (INTL)   Barco a barco Terra a Barco
1 156.050 156.050 160.650
2 156.100 156.100 160.700
3 156.150 156.150 160.750
4 150.200 156.200 160.800
5 156.250 156.250 160.850 Operações Portuárias Sim Sim
6 156.300 156.300 160.300 Barco a Barco Segurança Sim Não
7 156.350 156.350 160.950   Sim Sim
8 156.400 156.400 156.400   Sim Não
9 156.450 156.450 156.450 Chamada e Barco a Barco Sim Sim
10 156.500 156.500 156.500   Sim Sim
11 156.550 156.550 156.550   Sim Sim
12 156.600 156.600 156.600 Operações Portuárias Sim Sim
13 156.650 156.650 156.650   Sim Sim
14 156.700 156.700 156.700 Operações Portuárias Sim Sim
15 156.750 156.750  
16 156.800 156.800 156.800 Emergência e Chamada Sim Sim
17 156.850 156.850 156.850   Sim Sim
18 156.900 156.900 161.500   Sim Sim
19 156.950 156.950 161.550   Sim Sim
20 157.000 157.000 161.600 Operações Portuárias Sim Sim
21 157.050 157.050 161.650   Sim Sim
22 157.100 157.100 161.700   Sim Sim
23 157.150 157.150 161.750   Sim Sim
24 157.200 161.800 161.800 Embratel Não Sim
25 157.250 161.850 161.850 Embratel Não Sim
26 157.300 161.900 161.900 Embratel Não Sim
27 157.350 161.950 161.950 Embratel Não Sim
28 157.400 162.000 162.000 Embratel Não Sim
60 156.025 156.025 160.625  
61 156.075 156.075 160.675  
62 156.125 156.125 160.725  
63 156.175 156.175 160.775   Sim Sim
64 156.225 156.225 160.825  
65 156.275 156.275 160.875 Operações Portuárias Sim Sim
66 156.325 156.325 160.925 Operações Portuárias Sim Sim
67 156.375 156.375 156.375 Iate Clubes Sim Não
68 156.425 156.425 156.425 Iate Clubes Sim Sim
69 156.475 156.475 156.475   Sim Sim
70 156.525 156.525   Sim Sim
71 156.575 156.575 156.575   Sim Sim
72 156.625 156.625 156.625   Sim Não
73 156.675 156.675 156.675 Operações Portuárias Sim Sim
74 156.725 156.725 156.725 Operações Portuárias Sim Sim
75 156.775 156.775  
76 156.825 156.825  
77 156.875 156.875 156.875 Operações Portuárias Sim Não
78 156.925 156.925 161.525   Sim Sim
79 156.975 156.975 161.575   Sim Sim
80 157.025 157.025 161.625   Sim Sim
81 157.075 157.075 161.675   Sim Sim
82 157.125 157.125 161.725   Sim Sim
83 157.175 157.175 161.775   Sim Sim
84 157.225 161.825 161.825 Embratel Não Sim
85 157.275 161.875 161.875 Embratel Não Sim
86 157.325 161.925 161.925 Embratel Não Sim
87 157.375 161.975 161.975 Embratel Não Sim
88 157.425 157.425 162.025   Sim Não

Podcasts no HackerLab!

 feed logoÀ partir de hoje contamos com uma seção de Podcasts para a área de tecnologia. Os podcasts são retransmitidos à partir do site Hacker Public Radio , onde diariamente é publicado um novo podcast. Reproduziremos aqui os podcasts mais significativos para a Cultura Hacker.

Os podcasts são publicados de acordo com a licença Creative Commons Attribution-ShareAlike 3.0 Unported.

Hacker (Parte 3)

Status na Cultura Hacker

Como a maioria das culturas sem economia monetária, a do hacker se baseia em reputação. Você está tentando resolver problemas interessantes, mas quão interessantes eles são, e se suas soluções são realmente boas, é algo que somente seus iguais ou superiores tecnicamente são normalmente capazes de julgar.

Conseqüentemente, quando você joga o jogo do hacker, você aprende a marcar pontos principalmente pelo que outros hackers pensam da sua habilidade (por isso você não é hacker até que outros hackers lhe chamem assim). Esse fato é obscurecido pela imagem solitária que se faz do trabalho do hacker; e também por um tabu hacker-cultural que é contra admitir que o ego ou a aprovação externa estão envolvidas na motivação de alguém.

Especificamente, a cultura hacker é o que os antropologistas chamam de cultura de doação. Você ganha status e reputação não por dominar outras pessoas, nem por ser bonito, nem por ter coisas que as pessoas querem, mas sim por doar coisas. Especificamente, por doar seu tempo, sua criatividade, e os resultados de sua habilidade.

Há basicamente cinco tipos de coisas que você pode fazer para ser respeitado por hackers:

1. Escrever open-source software.

O primeiro (o mais central e mais tradicional) é escrever programas que outros hackers achem divertidos ou úteis, e dar o código-fonte para que toda a cultura hacker use.

(Nós costumávamos chamar isto de “free software”, mas isso confundia muitas pessoas que não sabiam ao certo o significado de “free”. Agora, muitos de nós preferem o termo “open-source” software).

[nota do tradutor: “free” significa tanto “livre” como “gratuito”, daí a confusão. O significado que se pretende é “livre”.] Os “semi-deuses” mais venerados da cultura hacker são pessoas que escreveram programas grandes, competentes, que encontraram uma grande demanda e os distribuíram para que todos pudessem usar.

2. Ajude a testar e depurar open-source software

Também estão servindo os que depuram open-source software. Neste mundo imperfeito, inevitavelmente passamos a maior parte do tempo de desenvolvimento na fase de depuração. Por isso, qualquer autor de open-source software que pense lhe dirá que bons beta-testers (que saibam descrever sintomas claramente, localizar problemas, tolerar bugs em um lançamento apressado, e estejam dispostos a aplicar algumas rotinas de diagnóstico) valem seu peso em ouro. Até mesmo um desses beta-testers pode fazer a diferença entre uma fase de depuração virar um longo e cansativo pesadelo, ou ser apenas um aborrecimento saudável. Se você é um novato, tente achar um programa sob desenvolvimento em que você esteja interessado e seja um bom beta-tester. Há um progressão natural de ajudar a testar programas para ajudar a depurar e depois ajudar a modificá-los. Você aprenderá muito assim, e criará um bom karma com pessoas que lhe ajudarão depois.

3. Publique informação útil.

Outra boa coisa a se fazer é coletar e filtrar informações úteis e interessantes em páginas da Web ou documentos como FAQs (“Frequently Asked Questions lists”, ou listas de perguntas freqüentes), e torne-os disponíveis ao público.

Mantenedores de grandes FAQs técnicos são quase tão respeitados quanto autores de open-source software.

4. Ajude a manter a infra-estrutura funcionando.

A cultura hacker (e o desenvolvimento da Internet, quanto a isso) é mantida por voluntários. Existe muito trabalho sem glamour que precisa ser feito para mantê-la viva — administrar listas de email, moderar grupos de discussão, manter grandes sites que armazenam software, desenvolver RFCs e outros padrões técnicos.

Pessoas que fazem bem esse tipo de coisa são muito respeitadas, porque todo mundo sabe que esses serviços tomam muito tempo e não são tão divertidos como mexer em código. Fazê-los mostra dedicação.

5. Sirva a cultura hacker em si.

Finalmente, você pode servir e propagar a cultura em si (por exemplo, escrevendo um apurado manual sobre como se tornar um hacker :-)). Você só terá condição de fazer isso depois de ter estado por aí por um certo tempo, e ter se tornado conhecido por uma das primeiras quatro coisas.

A cultura hacker não têm líderes, mas têm seus heróis culturais, “chefes tribais”, historiadores e porta-vozes. Depois de ter passado tempo suficiente nas trincheiras, você pode ser tornar um desses. Cuidado: hackers desconfiam de egos espalhafatosos em seus “chefes tribais”, então procurar visivelmente por esse tipo de fama é perigoso. Ao invés de se esforçar pela fama, você tem que de certo modo se posicionar de modo que ela “caia” em você, e então ser modesto e cortês sobre seu status.

Extraído de http://linux.ime.usp.br/~rcaetano/docs/hacker-howto-pt.html em 14/09/2013

Hacker (Parte 2)

Habilidades básicas do hacker

A atitude hacker é vital, mas habilidades são ainda mais vitais. Atitude não substitui competência, e há uma certo conjunto de habilidades que você precisa ter antes que um hacker sonhe em lhe chamar de um.
Esse conjunto muda lentamente com o tempo, de acordo com a criação de novas habilidades. Por exemplo, costumava incluir programação em linguagem de máquina, e até recentemente não incluía HTML. Mas agora é certo que inclui o seguinte:

1. Aprenda a programar.

Essa é, claro, a habilidade básica do hacker. Em 1997, a linguagem que você absolutamente precisa aprender é C (apesar de não ser a que você deve aprender primeiro). Mas você não é um hacker e nem mesmo um programador se você souber apenas uma linguagem — você tem que aprender a pensar sobre problemas de programação de um modo geral, independentemente de qualquer linguagem. Para ser um hacker de verdade, você precisa ter chegado ao ponto de conseguir aprender uma nova linguagem em questão de dias, relacionando o que está no manual ao que você já sabe. Isso significa que você deve aprender várias linguagens bem diferentes.
Além de C, você também deve aprender pelo menos LISP e Perl (e Java está tentando pegar um lugar nessa lista). Além de serem as linguagens mais importantes para hackear, cada uma delas representa abordagens à programaçaão bem diferentes, e todas o educarão em pontos importantes.

Eu nao posso lhe dar instruções completas sobre como aprender a programar aqui — é uma habilidade complexa. Mas eu posso lhe dizer que livros e cursos também não servirão (muitos, talvez a maioria dos melhores hacker são auto-didatas). O que servirá é (a) ler código e (b) escrever código.

Aprender a programar é como aprender a escrever bem em linguagem natural. A melhor maneira é ler um pouco dos mestres da forma, escrever algumas coisas, ler mais um monte, escrever mais um monte, ler mais um monte, escrever… e repetir até que seu estilo comece a desenvolver o tipo de força e economia que você vê em seus modelos.

Achar bom código para ler costumava ser difícil, porque havia poucos programas grandes disponíveis em código-fonte para que hackers novatos pudessem ler e mexer. Essa situação mudou dramaticamente; open-source software (software com código-fonte aberto), ferramentas de programação, e sistemas operacionais (todos feitos por hackers) estão amplamente disponíveis atualmente.

2. Pegue um dos Unixes livres e aprenda a mexer.

Estou assumindo que você tem um computador pessoal ou tem acesso a um (essas crianças de hoje em dia tem tão facilmente :-)). O passo mais importante que um novato deve dar para adquirir habilidades de hacker é pegar uma cópia do Linux ou de um dos BSD-Unixes, o instalar em um PC, e rodá-lo.
Sim, há outros sistemas operacionais no mundo além do Unix. Porém, eles são distribuídos em forma binária — você não consegue ler o código, e você não consegue modificá-lo. Tentar aprender a “hackear” em DOS, Windows ou MacOS é como tentar aprender a dançar com o corpo engessado.

Além disso, Unix é o sistema operacional da Internet. Embora você possa aprender a usar a Internet sem conhecer Unix, você não pode ser um hacker sem entendê-lo. Por isso, a cultura hacker, atualmente, é fortemente centralizada no Unix. (Não foi sempre assim, e alguns hackers da velha guarda não gostam da situação atual, mas a simbiose entre o Unix e a Internet se tornou tão forte que até mesmo o músculo da Microsoft não parece ser capaz de ameacá-la seriamente.)

Então, pegue um Unix — eu gosto do Linux, mas existem outros caminhos. Aprenda. Rode. Mexa. Acesse a Internet através dele. Leia o código. Modifique o código. Você terá ferramentas de programação (incluindo C, Lisp e Perl) melhores do qualquer sistema operacional da Microsoft pode sonhar em ter, você se divertirá, e irá absorver mais conhecimento do que perceber, até que você olhará para trás como um mestre hacker.

Para aprender mais sobre Unix, veja The Loginataka.

Para pegar o Linux, veja Where To Get Linux.

3. Aprenda a usar a World Wide Web e escrever em HTML.

A maioria das coisas que a cultura hacker tem construído funciona “invisivelmente”, ajudando no funcionamento de fábricas, escritórios e universidades sem nenhum óbvio na vida dos não-hackers. A Web é a grande exceção, o enorme e brilhante brinquedo dos hackers que até mesmo políticos admitem que está mudando o mundo. Por esse motivo (e vários outros também) você precisa a aprender como trabalhar na Web.
Isso não significa apenas aprender a mexer em um browser (qualquer um faz isso), mas aprender a programar em HTML, a linguagem de markup da Web. Se você não sabe programar, escrever em HTML lhe ensinará alguns hábitos mentais que o ajudarão. Então faça uma home page.

Mas apenas ter uma home page não chega nem perto de torná-lo um hacker. A Web está repleta de home pages. A maioria delas é inútil, porcaria sem conteúdo — porcaria muito bem apresentada, note bem, mas porcaria mesmo assim (mais sobre esse assunto em The HTML Hell Page).

Para valer a pena, sua página deve ter conteúdo — deve ser interessante e/ou útil para outros hackers. E isso nos leva ao próximo assunto…

Extraído de http://linux.ime.usp.br/~rcaetano/docs/hacker-howto-pt.html em 09/09/2013.

Hacker (Parte 1)

A Atitude Hacker

Hackers resolvem problemas e constróem coisas, e acreditam na liberdade e na ajuda mútua voluntária. Para ser aceito como um hacker, você tem que se comportar de acordo com essa atitude. E para se comportar de acordo com essa atitude, você tem que realmente acreditar nessa atitude.

Mas se você acha que cultivar a atitude hacker é somente um meio para ganhar aceitação na cultura, está enganado. Tornar-se o tipo de pessoa que acredita nessas coisas é importante para você — para ajudá-lo a aprender e manter-se motivado. Assim como em todas as artes criativas, o modo mais efetivo para se tornar um mestre é imitar a mentalidade dos mestres — não só intelectualmente como emocionalmente também.

Então, se você quer ser um hacker, repita as seguinte coisas até que você acredite nelas:

1. O mundo está repleto de problemas fascinantes esperando para serem resolvidos.

Ser hacker é muito divertido, mas é um tipo de diversão que necessita de muito esforço. Para haver esforço é necessário motivação. Atletas de sucesso retiram sua motivação de uma espécie de prazer físico em trabalhar seus corpos, em tentar ultrapassar seus próprios limites físicos. Analogamente, para ser um hacker você precisa ter uma emoção básica em resolver problemas, afiar suas habilidades e exercitar sua inteligência. <p>Se você não é o tipo de pessoa que se sente assim naturalmente, você precisará se tornar uma para ser um hacker. Senão, você verá sua energia para “hackear” sendo esvaída por distrações como sexo, dinheiro e aprovação social.

(Você também tem que desenvolver uma espécie de fé na sua própria capacidade de aprendizado — crer que, mesmo que você não saiba tudo o que precisa para resolver um problema, se souber uma parte e aprender a partir disso, conseguirá aprender o suficiente para resolver a próxima parte — e assim por diante, até que você termine.)

2. Não se deve resolver o mesmo problema duas vezes.

Mentes criativas são um recurso valioso e limitado. Não devem ser desperdiçadas reinventando a roda quando há tantos problemas novos e fascinantes por aí.

Para se comportar como um hacker, você tem que acreditar que o tempo de pensamento dos outros hackers é precioso — tanto que é quase um dever moral compartilhar informação, resolver problemas e depois dar as soluções, para que outros hackers possam resolver novos problemas ao invés de ter que se preocupar com os antigos indefinidamente. (Você não tem que acreditar que é obrigado a dar toda a sua produção criativa, ainda que hackers que o fazem sejam os mais respeitados pelos outros hackers. Não é inconsistente com os valores do hacker vender o suficiente da sua produção para mantê-lo alimentado e pagar o aluguel e computadores. Não é inconsistente usar suas habilidades de hacker para sustentar a família ou mesmo ficar rico, contanto que você não esqueça que é um hacker.)

3. Tédio e trabalho repetitivo são nocivos.

Hackers (e pessoas criativas em geral) não podem ficar entediadas ou ter que fazer trabalho repetitivo, porque quando isso acontece significa que eles não estão fazendo o que apenas eles podem fazer — resolver novos problemas. Esse desperdício prejudica a todos. Portanto, tédio e trabalho repetitivo não são apenas desagradáveis, mas nocivos também.

Para se comportar como um hacker, você tem que acreditar nisso de modo a automatizar as partes chatas tanto quanto possível, não apenas para você como para as outras pessoas (principalmente outros hackers).

(Há uma exceção aparente a isso. Às vezes, hackers fazem coisas que podem parecer repetitivas ou tediosas para um observador, como um exercício de “limpeza mental”, ou para adquirir uma habilidade ou ter uma espécie particular de experiência que não seria possível de outro modo. Mas isso é por opção — ninguém que consiga pensar deve ser forçado ao tédio.

4. Liberdade é uma coisa boa.

Hacker são naturalmente anti-autoritários. Qualquer pessoa que lhe dê ordens pode impedi-lo de resolver qualquer que seja o problema pelo qual você está fascinado — e, dado o modo em que a mente autoritária funciona, geralmente arranjará alguma desculpa espantosamente idiota isso. Então, a atitude autoritária deve ser combatida onde quer que você a encontre, para que não sufoque a você e a outros hackers.

(Isso não é a mesma coisa que combater toda e qualquer autoridade. Crianças precisam ser orientadas, e criminosos, detidos. Um hacker pode aceitar alguns tipos de autoridade a fim de obter algo que ele quer mais que o tempo que ele gasta seguindo ordens. Mas isso é uma barganha restrita e consciente; não é o tipo de sujeição pessoal que os autoritários querem.)

Pessoas autoritárias prosperam na censura e no segredo. E desconfiam de cooperação voluntária e compartilhamento de informação — só gostam de “cooperação” que eles possam controlar. Então, para se comportar como um hacker, você tem que desenvolver uma hostilidade instintiva à censura, ao segredo, e ao uso da força ou mentira para compelir adultos responsáveis. E você tem que estar disposto a agir de acordo com esta crença.

5. Atitude não substitui competência.

Para ser um hacker, você tem que desenvolver algumas dessas atitudes. Mas apenas ter uma atitude não fará de você um hacker, assim como não o fará um atleta campeão ou uma estrela de rock. Para se tornar um hacker é necessário inteligência, prática, dedicação, e trabalho duro.

Portanto, você tem que aprender a desconfiar de atitude e respeitar todo tipo de competência. Hackers não deixam posers gastar seu tempo, mas eles idolatram competência — especialmente competência em “hackear”, mas competência em qualquer coisa é boa. A competência em habilidades que poucos conseguem dominar é especialmente boa, e competência em habilidades que involvem agudeza mental, perícia e concentração é a melhor.

Se você reverenciar competência, gostará de desenvolvê-la em si mesmo — o trabalho duro e dedicação se tornará uma espécie de um intenso jogo, ao invés de trabalho repetitivo. E isso é vital para se tornar um hacker.

 

Extraído de http://linux.ime.usp.br/~rcaetano/docs/hacker-howto-pt.html em 20/08/2013

Lógica Ladder para microcontroladores PIC and AVR

Extraído de http://cq.cx/ladder-pt.html em 21/07/2-13

(translated from the English original; thanks to Daniel Corteletti)

Resumo: Escrevi um compilador que permite gerar código nativo para microcontroladores PIC16 e AVR a partir de um diagrama ladder. Suas características são:

  • Entradas e saídas digitais
  • Temporizadores (TON, TOF, RTO)
  • Contadores (CTU, CTD, ‘contadores circulares’ para usar como sequenciadores)
  • Entradas analógicas e saídas (PWM) analógicas
  • Variáveis inteiras e instruções aritméticas
  • Comunicação serial facilitada para conexão a PCs, LCDs e outros dispositivos
  • Registradores de deslocamento, tabelas “look-up”
  • Variáveis em EEPROM (que mantêm os dados quando falta energia elétrica)
  • Simulador, para testar seu programa antes de gerar o código PIC ou AVR.

Este programa é livre. O código fonte e executáveis estão disponíveis para download.

Introdução

PLCs (Circuitos Lógicos Programáveis) são geralmente programados em lógica ladder. Isso porquê os PLCs originalmente substituíram sistemas de controle baseados em lógica de relés, e quarenta anos depois, ainda permanecemos utilizando esta linguagem. Um PLC, assim como um microprocessador, executa uma lista de instruções em seqüência. Ferramentas ladder deixam isso transparente; você pode programar o PLC ligando os contatos de relés e bobinas na tela, e o interpretador PLC irá simular o circuito que você desenhou. Alguns contatos de relés podem ser ligados a sinais de entrada reais; Algumas das bobinas podem ser ligadas a saídas. Desta forma, você pode fazer a simulação de seu circuito e interagir com outros dispositivos, e até controlar coisas. Este é o objetivo.

Na verdade ele é mais amplo do que isso, porque você pode incorporar temporizadores e contadores e operações aritméticas que não poderiam ser (facilmente) executados somente com relês convencionais. O projeto do circuito ainda é útil não só porque ele é intuitivo, mas também porque abstrai facilmente a concorrência. Isso funciona assim:

         ||       Xa               Xb              Yout       ||
       1 ||-------] [------+-------] [------+-------( )-------||
         ||                |                |                 ||
         ||                |       Xc       |                 ||
         ||                +-------]/[------+                 ||

Isto é um simples trecho de uma lógica de combinações. Existem os termos de entrada , Xa, Xb e Xc. Existem termos de saída: Yout. A expressão é Yout := Xa e (Xb ou (não Xc)). Isso faz mais sentido se você pensar em Xa e Xb como relés de contato NA (normalmente aberto), Xc como um relé de contato NF (normalmente fechado) e Yout como uma bobina de um relé ou contactora. Claro que podemos encontrar circuitos mais complexos, como o que segue:

         ||                                                   ||
         ||                                      Asetpoint    ||
       1 ||-------------------------------------{READ ADC}----||
         ||                                                   ||
         ||                                    Atemperature   ||
         ||-------------------------------------{READ ADC}----||
         ||                                                   ||
         ||                                                   ||
         ||                                                   ||
         ||                                                   ||
         ||                        {SUB  min_temp  :=}        ||
       2 ||------------------------{ Asetpoint - 20  }--------||
         ||                                                   ||
         ||                        {ADD  max_temp  :=}        ||
         ||------------------------{ Asetpoint + 20  }--------||
         ||                                                   ||
         ||                                                   ||
         ||                                                   ||
         ||                                                   ||
         ||[Atemperature >]                       Yheater     ||
       3 ||[ max_temp     ]+------------------------(R)-------||
         ||                |                                  ||
         ||     Xenable    |                                  ||
         ||-------]/[------+                                  ||
         ||                                                   ||
         ||[Atemperature <]      Xenable          Yheater     ||
         ||[ min_temp     ]--------] [--------------(S)-------||
         ||                                                   ||
         ||                                                   ||
         ||                                                   ||
         ||                                                   ||
         ||                       {SUB  check_temp  :=}       ||
       4 ||-----------------------{ Asetpoint - 30    }-------||
         ||                                                   ||
         ||                                                   ||
         ||                                                   ||
         ||                                                   ||
         ||[Atemperature >]                       Yis_hot     ||
       5 ||[ check_temp   ]-------------------------( )-------||
         ||                                                   ||
         ||                                                   ||
         ||                                                   ||
         ||------[END]----------------------------------------||
         ||                                                   ||
         ||                                                   ||

Trata-se de um simples termostato. Há duas entradas analógicas; uma delas é para o set point, para que seja possível, por exemplo, ligar um potenciômetro para o usuário definir a temperatura desejada. A outra é usada para medições de temperatura, conectado a um sensor de temperatura baseado em semicondutores, ou um termopar com interface apropriada. Existe uma saída digital, Yheater. Isso pode ser usado para controlar um elemento de aquecimento, através de um comutador apropriado (um TRIAC, ou um relé, ou um relé de estado sólido, ou seja o que for).

O ciclo foi fechado com uma  simples histerese. Nos definimos mais ou menos 20 unidades do ADC para histerese. Isso significa que quando a temperatura cai abaixo (setpoint – 20), será ligado o aquecimento. e quando isso ultrapassar (setpoint + 20), o aquecimento será desligado.

Eu ainda acresci algumas coisinhas. Primeiramente, há uma entrada de ativação: o aquecedor é forçado a desligar quando Xenable está em nível baixo. Eu também adicionei uma lâmpada indicadora, Yis_hot, para indicar que a temperatura está na faixa pretendida. Isso é feito de modo a comparar continuamente com o limite imposto (setpoint-20) de forma que a luz não fique piscando nos ciclos normais do termostato.

Este é um exemplo trivial, mas deve ficar claro que a linguagem é bastante expressiva. Logica ladder não é uma linguagem de propósito geral, mas é uma linguagem “Turing-completa”, aceita na industria, e, para uma classe limitada de problemas (orientados a controle), surpreendentemente conveniente.

Um compilador de lógica ladder para PIC16 e AVR

Acredita-se que os microcontroladores modernos de baixo custo (abaixo de US$ 3,00) passaram a ter o poder computacional de um PLC a partir de 1975. Eles passaram a processar mais MIPS para rodar uma lógica ladder relativamente complexa com um ciclo de vida de alguns milisegundos. Eu penso que PLCs normalmente tem uma espécie de programa do tipo “interpretador” ou “máquina virtual”, mas se desejarmos realizar uma lógica simples em um processador sem muita memória então um compilador pode ser uma idéia melhor.

Então eu escrevi um compilador. Você começa com um degrau (linha) vazio. Você pode adicionar contatos (entrada) e bobinas (saídas) e estruturas mais complicadas para construir seus programas. Temporizadores (TON, TOF, RTO) também são suportados. As durações máximas e mínimas dependem do ciclo de tempo do ‘PLC’, o qual é configurável; Os temporizadores podem contar deste milisegundos até dezenas de minutos. Á contadores e operações aritméticas (adição, subtração, multiplicação, divisão).

Elementos de circuito podem ser adicionados em série ou em paralelo com outros elementos existentes. E uma lista de entradas e saídas é construída a partir do diagrama lógico traçado. Você tem relês internos (Rfoo), que usam posições de memória alocadas automaticamente, ou entradas (Xfoo) e saídas (Yfoo), para associar a pinos do microcontrolador. A seleção dos pinos disponíveis depende do microcontrolador. Tentamos manter suporte para a maioria dos mais populares microcontroladores PICs e AVRs (veja abaixo).

Você pode editar o programa na forma gráfica:

ladder-sample

Então você pode testar o programa simulando-o em tempo real. O programa aparecera na tela com os elementos ativados (ligados) representados por colchetes em uma cor mais intensa, o que torna fácil a depuração. O estado das variáveis é mostrado na parte de baixo da tela, na lista de entradas e saídas (I/O list).

ladder-sim

Depois do programa ter funcionado na simulação, você pode associar pinos para as entradas e saídas, gerar o código PIC ou AVR. A geração do código não é difícil.  Para o AVR, um bom alocador de registradores proverá uma maior velocidade. Se você quer ter uma otimização de código ainda mais apurada, poderá aplicar algumas regras de redução de algoritmos, e talvez redução de estados também. Isso seria muito mais difícil.

Mesmo ignorando isso, meu código gerador para os AVRs é muito pobre. O “back end” AVR ainda gera código PIC… por exemplo, ele não tira vantagem do fato do AVR ter mais de um registrador. Muitos dos códigos gerados ficam pouco otimizados. O “back end” para PIC é melhor, e não é muito grande. Mas nada disso importa muito se você estiver tentando rodar algumas dezenas de degraus de uma lógica ladder com tempo de ciclo rápido.

Há suporte para conversor A/D, unidade PWM e UART nos microcontroladores utilizados. Isso significa que você pode escrever lógica ladder que leia uma entrada analógica, e que possa enviar e receber caracteres pela serial (por exemplo, para um PC, se você adicionar um MAX232, ou um display LCD de caracteres). Isso é possível mandando seqüência de caracteres através da serial, assim como o valor de variáveis inteiras, como texto ASCII. E por último, fora adicionado suporte a variáveis em EEPROM; Você pode indicar que  uma variável específica irá ser salva automaticamente em uma área de memória não volátil, que será mantida ao se desconectar a energia.

Limitações e isenção de responsabilidades

Naturalmente um microcontrolador com este software não pode fazer tudo que um PLC faz. Muitos PLCs oferecem mais características e blocos predefinidos que minha ferramenta. O Hardware de um PLC é melhor também; usualmente as entradas e saídas são projetadas para suportar alterações elétricas. Você pode montar um PIC16F877 em uma protoboard por alguma dezena de dólares, mas você pagará mais caro por um PLC com as mesmas capacidades.

Até agora, tenho recebido muito poucos relatos de erros, em comparação com o número de pessoas com perguntas e dúvidas. Existe ainda uma grande possibilidade de defeitos, especialmente nos microcontroladores que não tenho fisicamente (e portanto, não podemos testar). Certamente, não use o LDmicro para alguma aplicação segura ou crítica, ou em algo que possa se torar caro se isso falhar.

Com citado anteriormente, o código gerado está longe do “otimo”. Também, nem toda a memória RAM nos dispositivos PIC16 está disponível para o programa na lógica ladder. Isso porque não implementei muito código para suporte a paginação. Eu fiz, no entanto, suporte para a memória de paginação do programa, para permitir acesso a memória ROM nos PIC16 acima de 2k.

Download (instalação)

O programa é testado sobre Windows XP. Relatos informais sugerem que ele pode trabalhar sobre windows 98, a sobre o Wine. O arquivo de download é um arquivo .exe; não há outro arquivo requerido, e não há arquivo de instalação. Salve-o em algum lugar no seu computer, e execute-o. O manual está incluído no arquivo .exe, mas você pode realizar download separadamente se você desejar.

O compilador irá gerar arquivos no formato Intel IHEX. Muitos dos softwares programadores que eu tenho usam este formato. Naturalmente você irá precisar de um programador para transferir o programa para a memória do microcontrolador. Para os AVRs, eu recomendo o tipo STK300, paralelo, como o Olimex. Para os PICs, eu recomendo o Microchip PICkit 2, como o disponível nesta loja virtual.

Agradecemos relatórios de erros. Os seguintes microcontroladores foram testados e são suportados:

  • PIC16F877
  • PIC16F876
  • PIC16F628
  • ATmega64
  • ATmega128

Os microcontroladores abaixo são suportados, mas não foram testados; eles devem funcionar, mas não há garantia. Se você testar, e isso funcionar adequadamente, entre em contato comunicando. Nós agradecemos.

  • PIC16F88
  • PIC16F819
  • ATmega162
  • ATmega32
  • ATmega16
  • ATmega8

O arquivo ladder também é possível se gerar código C. Isso é menos conveniente, mas você pode usar isso em algum processador se você possuir um compilador C.

LDmicro pode gerar um código interpretável. Se estiver escrevendo um interpretador você pode usa-lo para gerar o código ladder para outro tipo de dispositivo. Não há mita documentação sobre isso, mas eu construí um interpretador simples em linguagem C bastante portável.

 

As compilações são disponíveis em diversas línguas:

  • ldmicro.exe (English)
  • ldmicro-de.exe (Deutsch; thanks to Heinz Ullrich Noell)
  • ldmicro-fr.exe (Français; thanks to Marcel Vaufleury)
  • ldmicro-es.exe (Español; thanks to Jose Pascual)

E o código fonte, e vários outros arquivos, também estão disponíveis para download. Este programa pode ser distribuído sob os termos da GPL Version 3.

  • ldmicro-rel1.7.zip (fonte, release 1.7)
  • ldmicro.txt (manual)
  • características / histórico de erros
  • Exemplo: um semáforo simples
  • Exemplo: display de 7 segmentos
  • Exemplo: ‘hello, world;’ enviado pela porta serial

Versões antigas estão disponíveis:

  • ldmicro-rel1.6.zip (fonte, release 1.6)

(botão direito para salvar qualquer um destes arquivos.)

Por favor, relate qualquer defeito.  Este é um software livre, sem nenhum departamento responsável pelo controle de qualidade. Eu mesmo não tenho o hardware para testar a maioria dos dispositivos. Um erro não informado não poderá ser corrigido.

Tenho um tutorial, no qual eu descrevo como gerar um simples diagrama ladder, simulá-lo e então gerar o arquivo IHEX e programá-lo no PIC. Esta é provavelmente a maneira mais fácil de começar a usar este software.