INÍCIO > Fórum > Programação IEC 61131 (LogicLab) > Leve as temperaturas 3 das sondas 1-Wire
- Este tópico tem 34 respostas, 9 participantes e foi atualizado pela última vez 2 anos, 11 meses atrás da [email protegido].
-
autorPublique
-
Abril 1, 2011 no 12: 05 pm #34988Anônimoinativo
Usando a CPU SlimLine, Preciso obter os valores de temperatura do 3 Sensores 1-Wire conectado a uma das portas RS232 do módulo da CPU através do adaptador RS232 para OneWire.Peguei o exemplo referente ao OWRdTemperature Fb que gerencia apenas um sensor, como faço para adquirir os outros 2?
Abril 1, 2011 no 12: 19 pm #36688MassimoMediadorUsando o bloco de função OWRdTemperature você pode ler todas as sondas que deseja, basta instanciar um bloco de função para cada sonda que deseja adquirir. Para adquirir 3 sondas de temperatura, são necessários 3 blocos de função OWRdTemperature, cada bloco deve receber o ID de seu próprio sensor. Lembre-se de que cada sensor de 1 fio possui seu próprio código de 64 bits exclusivo.
Como os blocos de função de leitura de temperatura estão todos conectados ao bloco de função OWireMng que gerencia o conversor serial / 1-fio, é necessário certificar-se de que a qualquer momento apenas um dos FBs de aquisição de temperatura esteja ativo, portanto é necessário sequenciar sua execução.
A este respeito, criei um bloco de funções Sequencer, o bloco de funções é feito em linguagem ST e é fornecido com o código-fonte. O FB fornece até 8 saídas sequenciadas, se precisar de menos, basta atuar no parâmetro MaxSeqNr. Se você deseja aumentar o número de saídas, basta alterar o FB.
o FB prevê a passagem de uma sequência para a próxima, tanto quando a entrada relativa é definida SeqxOk, tanto para o tempo limite, este FB é usado em muitas áreas e, em seguida, é possível exportá-lo a partir do programa de exemplo e importá-lo para o seu próprio programa. Eu anexo o imprimir e código fonte de um exemplo de programa.
Março 19, 2014 em 3: 37 pm #38138Sergio BertanaAdministrador do fórumA partir da versão SFR059B000 da biblioteca ePLC1WireLib, o FB de aquisição de temperatura do sensor DS18B20 foi modificado agora o FB deve ser usado SLOWRdTemperature, One-Wire read temperature. Este FB é muito semelhante ao anterior, mas para permitir o gerenciamento da aquisição de vários sensores conectados a um único adaptador, é possível alinhar os FBs.
Como visto no imprimir, o programa do post anterior foi simplificado eliminando o sequenciador, a passagem da leitura de uma sonda para outra é gerenciada pela saída Pronto do FB. ativador permitir A aquisição do sensor é gerenciada, uma vez concluída (Mesmo que com erro) a saída Done é ativada, o que permite a aquisição do próximo sensor e assim por diante. O Feito do FB do último sensor desabilita o FB do primeiro e o ciclo é reiniciado.
Como você pode ver, cada sensor é caracterizado por seu próprio ID exclusivo, se o ID foi detectado através do programa OneWireViewer (Ver publicação) é necessário definir o ID na variável escrevendo-o da mesma forma exibida na janela do programa (Screenshot). Incluo programa fonte.
Março 19, 2014 em 4: 10 pm #38139Sergio BertanaAdministrador do fórumDesde janeiro do 2014, incluímos sensores Sensit na gama de produtos comercializados, no catálogo Sensit a sensor de temperatura baseado no DS18B20.
Pode 3, 2016 em 7: 02 pm #39560AnthonyparticipanteDado que em Ladder posso facilmente ler até 8 sondas (mas acho que ainda podemos aumentar o número), estava tentando sem sucesso transformá-lo em linguagem ST para maior compactação e flexibilidade do código.
Pode 9, 2016 em 3: 32 pm #39561Sergio BertanaAdministrador do fórumEu fiz um programa simples em ST (OWTemperature) que executa a leitura das sondas 2 em sequência aqui é o listagem do programa.
Como você pode ver na parte de gerenciamento de um fio, eu também incluí o FB OWID do tipo sOWRdIdentifier para adquirir o ID. Para adquiri-lo, o FB deve estar habilitado. Attenzione, per rilevare l’ID del sensore bisogna collegare un solo sensore di temperatura.
OWID(Enable:=TRUE); (* One wire identifier *)
Assim que o ID for adquirido, basta copiar o valor de IDCODE na definição do sensor. Como você pode ver em meu exemplo, defini dois sensores dos quais detectei a ID (Download do programa).
Outubro 17, 2017 em 4: 25 pm #39993MarcelloparticipanteOlá, se eu fosse adquirir 12 sondas no mesmo barramento, há uma maneira de “atualizar” o FB sOWRdTemperature com um novo ID sem ter que criar 12 blocos independentes?
Eu vi isso neste tópico diz-se que a CPU Cortex 7 agora tem a interface nativa de 1 fio de qual versão ela pode ser usada?
Outubro 18, 2017 em 9: 02 am #39994Sergio BertanaAdministrador do fórumSim, você certamente pode usar apenas uma instância do FB sOWRdTemperature, apenas defina antes de habilitá-lo oIDCode da sonda. Assim que a aquisição da temperatura estiver concluída, você pode desativar o FB, alterar o IDCode e repetir a aquisição da nova sonda, e assim por diante ...
Outubro 18, 2017 em 4: 34 pm #39995MarcelloparticipanteEu tentei desativar Enable com NOT (sOWRdTemperature.Ok) mas estranhamente, após a primeira aquisição, Done e Ok permaneceram em TRUE enquanto eu esperava que eles passassem, com Enable: = FALSE, ambos em FALSE. Eu tentei também com uma variável independente, mas nada, uma vez realizada a primeira leitura Ok e Done permanecem TRUE. Onde estou fazendo errado?
Outubro 19, 2017 em 6: 11 am #39996Sergio BertanaAdministrador do fórumNão é necessário usar Ok, mas Concluído para gerenciar a Habilitar, sOWRdTemperatura (Habilitar: = NÃO (sOWRdTemperatura.Done)). Se você vir o manual, ele diz:
Ok: Attivo per un loop se lettura temperatura eseguita correttamente
Done: Si attiva al termine della esecuzione lettura temperaturaEntão, se a leitura não for bem-sucedida, Ok não ativará, mas Fez sim. Mas ainda é estranho o que você diz porque Ok está ativo apenas um loop (então você não pode vê-lo depurado, muito rápido) e desativar Habilitar você deve reiniciar. Fechado. A minha impressão é que você, com Ok, ativo, não executa mais o FB.
Junho 15, 2018 em 8: 43 am #44305PauloparticipanteEstou usando um Slimline Cortex M7, que possui uma porta dedicada para o protocolo de fio 1 e eu gostaria de usá-lo para ler uma sonda de temperatura e uma sonda de umidade em sequência.
Gostaria de saber qual porta abrir com sysfopen para usar o conector P11 do SlimLine.
Novembro 26, 2019 em 9: 35 am #51366AndreaparticipanteGostaria de usar o adaptador DS9097U-S09 1-Wire para RS232 para adquirir sondas de fio 27 1 DS18B20 com uma CPU SlimLine MPS046B, eu queria saber se é possível adquirir tantas análises no caso do esquema de conexão.
Novembro 26, 2019 em 9: 48 am #51462Sergio BertanaAdministrador do fórumEncontro nas especificações da Internet que indicam o número máximo de sensores como o comprimento máximo dos medidores 1-WIRE 400 e 500. Cada sensor é equivalente a um encurtamento dos medidores 0,5 de comprimento e cada medidor de cabo 100 causa uma capacidade adicional de 5nF, aumentando a distorção do sinal. Na prática, o comprimento da rede e o número de sensores dependem de:
Tipo de cabos.
Qualidade das conexões.
Interferência de campos eletromagnéticos externos.Recomendamos cabos trançados para computadores UTP conectando cabos não utilizados e, se o cabo blindado também for a tela, à linha de aterramento. Todos os sensores são conectados em paralelo à linha, sensores de 2 fios podem ser usados mesmo que no caso de muitos sensores conectados ao barramento, para evitar sobrecarga de sinal é recomendado o uso de sensores de 3 fios trazendo a alimentação também.
Pessoalmente, conheço clientes que criaram redes com o DS9097U-S09 em que os fios 20 foram conectados a sensores 2 ao longo de um mtm de 100. Como os sensores 2 são fios para evitar o carregamento excessivo do barramento, um resistor foi colocado a partir do 100 Ohm em série com o sinal em cada sensor; como um cabo, sendo uma aplicação domótica, foi utilizada a passagem telefônica dupla normal através de um cabo ondulado, longe das linhas de energia para 220Vca.
Outubro 2, 2020 em 8: 27 am #57742Matthias Dal SantoparticipanteDevo ler 10 sondas de um fio conectadas à porta COM0 do módulo da CPU por meio do adaptador RS232 para OneWire e com a necessidade de ter a listagem em ST. Tomei como referência alguns programas postados no fórum, mas os exemplos talvez sejam datados (referem-se à função FB OWMng).
Você poderia ter a lista ST da leitura de duas ou mais sondas por meio da nova biblioteca eLLab1WireLib?
Outubro 2, 2020 em 8: 31 am #57748Sergio BertanaAdministrador do fórumAs bibliotecas estão em constante evolução, agora com o lançamento da versão XUnified sistemas operacionais todas as bibliotecas foram atualizadas para torná-los compatíveis com a nova arquitetura. Portanto, para usar as novas bibliotecas, você pode atualizar o sistema operacional do seu produto ou inserir a biblioteca no projeto eLLabXTargetAdjLib como mostrado aqui.
Chegando à sua pergunta na base de conhecimento, você encontrará os exemplos nos quais está interessado Neste artigo Descubra como usar o OWRdIdentifier FB para adquirir o identificador único de cada sensor.
In Neste artigo você encontrará exemplos para adquirir as sondas de temperatura, como você pode ver no programa em FBD, se você tiver mais sondas, terá que instanciar mais FB OWRdTemperatura conectando o Done do primeiro emEnable do próximo e assim por diante. Imaginando a leitura de 3 sondas teremos.
// Acquires the temperature. Temp[0].OwID:=OWire.OwID; //One-Wire management ID Temp[0].Enable:=NOT(Temp[2].Done); //Enable Temp[0](); //Read temperature Temp[1].OwID:=OWire.OwID; //One-Wire management ID Temp[1].Enable:=Temp[0].Done; //Enable Temp[1](); //Read temperature Temp[2].OwID:=OWire.OwID; //One-Wire management ID Temp[2].Enable:=Temp[1].Done; //Enable Temp[2](); //Read temperature
-
autorPublique
- Você deve estar logado para responder a este tópico.