05-14-2013 12:14 PM
Olá!
Estou fazendo um projeto que precisa ler alguns endereços de um CLP via Modbus, e tenho 2 dúvidas:
- Estou usando como base para construir meu programa a VI modbus fundamentals. Para acessar os dados, em um certo ponto é usado uma array constant, que dentro dela tem diversos shared variable refnum in, que eu não consegui construir. Como eu consigo fazer este bloco?
- Estou utilizando um CLP da Atos (MPC4004), e o software deste equipamento me deu como endereços ModBus do 30001 a 30011, que são endereços que não existem na livraria do exemplo citado acima. Nesta situação, qual a forma mais adequada para conseguir acessar esses endereços: é necessário trocar a livraria? Preciso de alguma informação específica do CLP?
Obrigado
05-20-2013 10:00 AM
Olá, Ricardo.
Respondendo sua primeira pergunta, você pode clicar com o botão direito na entrada shared variable refnum in, por exemplo, do VI Open Variable Connection ou Write Variable, e escolher Create>>Constante. Nesse caso será criada apenas uma constante e não um array, no entanto você pode pegar na paleta Array uma constante de array (Array constant) e colocar a constante de shared variable dentro.
Quanto a segunda dúvida, primeiramente você deve criar a sua biblioteca com suas variáveis e para isso você pode seguir o tutorial abaixo.
http://www.ni.com/white-paper/13911/en
A partir da seção "Writing to Modbus Addresses in LabVIEW', o tutorial ensinará como acessar as variáveis usando diretamente uma Shared Variable e não como acessá-la programaticamente como você está tentando fazer. Para isso, bastará continuar seguindo o exemplo anexo, nesse estágio você já encontrará a variável clicando na shared variable refnum em Browse..>>Current project (no combo box Browse). Mas caso você não tenha muitas variáveis e achei o processo no tutorial mais simples, você pode escolher fazer como ele ensina sem prejuizo algum.
Espero ter respondido tudo, mas caso algo não tenha ficado claro, por favor, sinta-se à vontade em perguntar novamente.
Cordialmente,
05-23-2013 10:07 AM
Obrigado pela resposta, que foi muito boa.
Agora, tive uma dúvida: gerei uma biblioteca específica e para escrever endereços Modbus via lab view, criei a VI write (em anexo). Joguei no meu arquivo principal, mas percebi que da forma que fiz terei problemas: é possível criar uma subVI para atender as minhas necessidades?
Obrigado
05-24-2013 07:15 AM
Ricardo, tem como você me explicar melhor o que você deseja fazer? Eu dei uma olhada no seu VI Write, no entanto não entendi o que você fez. Você havia dito que deseja ler endereços específicos, porém no seu Vi write todas as shared variable são do tipo escrita.
Cordialmente,
05-24-2013 09:31 AM
Bom dia Plinio!
O meu objetivo é ler num determinado momento estes endereços e em outro momento escrever nos mesmos endereços (analisar que os endereços que estão no diagrama de blocos do Projeto), os endereços do novo-vm (escrita) e progr-vm (leitura) são iguais, bem como novo-am e progr-am, além de novo-vd e progr-vd.
Isto é possível?
06-12-2013 08:34 AM
Olá, Ricardo.
Desculpa pela demora na resposta, eu estive a última semana fora do escritório.
Sim, é possível. Desde que o endereço que você está usando é Read/Write, você pode ler e escrever normalmente nele.
http://zone.ni.com/reference/en-XX/help/371618D-01/lvmve/dsc_modbus_using/
Para ter a mesma variável no LV tanto como escrita como leitura basta fazer uma cópia dela e clicando com o botão direito trocar o modo de acesso.
>>Botão direito>>Access mode>>Read
Cordialmente,