Dotinho Posted May 7, 2009 at 03:08 PM Report #262143 Posted May 7, 2009 at 03:08 PM como sabemos e libnodave é uma lib para varias linguas de programação que nos liga aos automatos siemens, mas nao é muito clara (pelo menos para mim) entao gostaria que todos colaborasse-mos para descobrir-mos realmente o que a biblioteca é capaz, inclusivamente postar-mos algumas partes de codigo.. eu proprio ja a tentei usar e da-me erro na connectPLC, é o erro -1025.. cmps Luis Lourenço
nokPT Posted May 7, 2009 at 03:25 PM Report #262148 Posted May 7, 2009 at 03:25 PM Esse erro é de TimeOut aumenta o tempo: Na rotina: Private Sub Comms() Dim localMPI As Integer = 0, plcMPI As Integer = 2 Dim fds As libnodave.daveOSserialType Dim di As libnodave.daveInterface Dim dc As libnodave.daveConnection Dim res As Integer Dim buf(1000) As Byte Dim inputsres As Integer Dim InputBuffer(1000) As Byte Dim Inputs(6 * 8) As Integer Dim outputsres As Integer Dim OutputBuffer(1000) As Byte Dim Outputs(6 * 8) As Integer Dim MemoryBuffer(1000) As Byte Dim Memory(15 * 8) As Integer fds.rfd = libnodave.setPort("com1", "19200", AscW("E")) ' step 1, open a connection fds.wfd = fds.rfd If fds.rfd > 0 Then ' if step 1 is ok di = New libnodave.daveInterface(fds, "My Interface 1", localMPI, libnodave.daveProtoPPI, libnodave.daveSpeed19k) di.setTimeout(100000) ' Make this longer if you have a very long response time res = di.initAdapter ' If res = 0 Then ' init Adapter is ok dc = New libnodave.daveConnection(di, plcMPI, 0, 2) ' rack amd slot don't matter in case of MPI res = dc.connectPLC() If res = 0 Then inputsres = dc.readBytes(libnodave.daveInputs, 0, 0, 6, InputBuffer) outputsres = dc.readBytes(libnodave.daveOutputs, 0, 0, 6, OutputBuffer) If inputsres = 0 And outputsres = 0 Then Dim h As Integer = 0 For i As Integer = 0 To 5 For j As Integer = i * 8 To (i * 8 + 7) Inputs(j) = InputBuffer(i) And (2 ^ h) Outputs(j) = OutputBuffer(i) And (2 ^ h) Memory(j) = MemoryBuffer(i) And (2 ^ h) If Inputs(j) > 1 Then Inputs(j) = 1 If Outputs(j) > 1 Then Outputs(j) = 1 If Memory(j) > 1 Then Memory(j) = 1 h += 1 Next h = 0 Next ' Já temos os bytes em bits agora é só usar ' por exemplo: TR1_Manual = Inputs(0) TR1_Automático = Inputs(1) Else frmComunicação.txbLog.AppendText("Error {0:d}={1:s} in readBytes.res = " & res & vbCrLf) End If dc.disconnectPLC() Else frmComunicação.txbLog.AppendText("Error {0:d}={1:s} in connectPLC.res = " & res & vbCrLf) End If di.disconnectAdapter() ' End connection to adapter Else frmComunicação.txbLog.AppendText("Error {0:d}={1:s} in initAdapter.res = " & res & vbCrLf) End If libnodave.closePort(fds.rfd) ' Clean up Else frmComunicação.txbLog.AppendText("Couldn't open serial port!" & vbCrLf) End If 'fds.rfd >0 End Sub aumenta o valor de: di.setTimeout(100000) ' Make this longer if you have a very long response time Ricardo Timóteo
jpaulino Posted May 7, 2009 at 03:31 PM Report #262150 Posted May 7, 2009 at 03:31 PM Olá, Eu nunca usei, mas tenho em mente testar em breve, mas já tentaste fazer o download da ultima versão ? http://sourceforge.net/project/showfiles.php?group_id=61026&package_id=57328&release_id=574729 Tem lá vários exemplos e manuais como o nokPT apresentou.
nokPT Posted May 7, 2009 at 04:16 PM Report #262164 Posted May 7, 2009 at 04:16 PM Só para contextualizar: O exemplo que dei está noutro tópico (neste quadro), mas resumidamente é assim: O último programa que fiz em: http://rapidshare.com/files/228316732/Scada.7z.html Não está optimizado, foi desenvolvido apenas para ajudar a fazer debug do autómato mais rapidamente e mostrar ao cliente o funcionamento (teórico). Estou a usar um cabo RS232-PPI. Um CPU224XP Com a porta configurada para 19200 (limite máximo do meu PC) Ricardo Timóteo
Dotinho Posted May 11, 2009 at 11:17 AM Author Report #262975 Posted May 11, 2009 at 11:17 AM já consegui ligar ao cpu222 com o libnodave, alem do tempo ser curto, tabem tinha o interface mal configurado para o libnodave.. Funciona bem e ja entendi os imputs e ou outputs.. Obrigado pelas sugestões e ideias.. ==Modificado== Nao sei como ler as VW ou VD do 200, pois aparece tudo a zero.. Luis Lourenço
nokPT Posted May 11, 2009 at 07:24 PM Report #263116 Posted May 11, 2009 at 07:24 PM Pois, a minha opinião é a mesma, não é fácil de arrancar, mas depois da 1ª vez é sempre há andar. Nao sei como ler as VW ou VD do 200, pois aparece tudo a zero.. res = dc.readBytes(libnodave.daveDB, 1, 200, 16, RCVbuf) ' Lê 16 bytes a partir de VB200 Ricardo Timóteo
Dotinho Posted May 12, 2009 at 08:37 AM Author Report #263250 Posted May 12, 2009 at 08:37 AM ya, é esse o mey stress loool Luis Lourenço
robertofonte Posted October 29, 2009 at 10:18 PM Report #293949 Posted October 29, 2009 at 10:18 PM Viva amigos. Parece me mto interessante esta libraria 😄
nokPT Posted October 30, 2009 at 10:47 AM Report #293993 Posted October 30, 2009 at 10:47 AM E é muito interessante e útil. Permite fazer 1 software de visualização a custo Zero (muito positivo), VB.NET em C, no Excel (muito positivo para pequenas aplicações). Funciona em Windows e em Linux (muito positivo, mais uma vez). Só não sei, nem encontrei informação, se é compatível com o S7-1200. Ricardo Timóteo
gjsduarte Posted September 14, 2010 at 05:21 PM Report #346666 Posted September 14, 2010 at 05:21 PM É compatível com 1200 sim. Já testei e funciona muito bem! Tens apenas de te certificar que colocas o Slot 2 em vez de 1; Cumprimentos
bubulindo Posted September 16, 2010 at 09:42 AM Report #346935 Posted September 16, 2010 at 09:42 AM Viva, eu em tempos usei a libnodave com um cabo RS232 e aquilo funcionava bem. Na altura fiz um programa de interface com um autómato S5 sem problemas de maior. Na altura lembro-me que a libraria para aceder aos autómatos por Ethernet não estava ainda muito desenvolvida ou tinha alguns parêntesis, alguém sabe se isso já está mais avancado hoje em dia e se funciona tão bem como MPI ou PPI? Cumprimentos. include <ai se te avio> Mãe () { }
nokPT Posted September 17, 2010 at 08:36 AM Report #347078 Posted September 17, 2010 at 08:36 AM Com PPI funciona bem com o cabo Série, (acho que ainda não dá com o cabo USB). MPI (não experimentei, mas teoricamente) funciona bem com cabo MPI série (mais uma vez não permite USB) e algumas CPs (CP5611...) Em Ethernet com S7-200 também funciona bem, nota-se que não é um protocolo Siemens, por isso o comportamento do autómato (a nível de comunicações) não é o mesmo, mas consegue-se actualizar variáveis a 500ms (normalmente) Ricardo Timóteo
bubulindo Posted September 17, 2010 at 12:17 PM Report #347112 Posted September 17, 2010 at 12:17 PM Em Ethernet com S7-200 também funciona bem, nota-se que não é um protocolo Siemens, por isso o comportamento do autómato (a nível de comunicações) não é o mesmo, mas consegue-se actualizar variáveis a 500ms (normalmente) Hmmm, serve perfeitamente para supervisão... 🙂 Obrigado pela resposta. include <ai se te avio> Mãe () { }
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now