<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=12&amp;t=9358&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-11-21T20:04:24+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=12&amp;t=9358&amp;mode</id>
<entry>
<author><name><![CDATA[mjc]]></name></author>
<updated>2014-11-21T20:04:24+01:00</updated>
<published>2014-11-21T20:04:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9358&amp;p=105352#p105352</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9358&amp;p=105352#p105352"/>
<title type="html"><![CDATA[Re: RS485 odpowiada tylko jeden slave]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9358&amp;p=105352#p105352"><![CDATA[
Witam<br /><br />Problem rozwiązany. Między innymi chodziło o instrukcję Config Print0 ale głównym powodem błędów była stara wersja bascoma która miała błędy w funkcji Printbin przy RS485<br /><br />Dziękuję wszystkim za pomoc<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2891">mjc</a> — 21 lis 2014, o 20:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pimowo]]></name></author>
<updated>2014-11-21T15:58:47+01:00</updated>
<published>2014-11-21T15:58:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9358&amp;p=105314#p105314</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9358&amp;p=105314#p105314"/>
<title type="html"><![CDATA[Re: RS485 odpowiada tylko jeden slave]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9358&amp;p=105314#p105314"><![CDATA[
Ja używam takiego &quot;stwora&quot; do sterowania przekaźnikami:<br />[syntax=basic4gl]$regfile = &quot;m32def.dat&quot;<br />$crystal = 11059200<br />$baud = 9600<br /><br />On Urxc Przerwanie_od_rxd<br /><br />Config Portb.0 = Output<br />Config Portd.3 = Output<br />Config Print0 = Portd.3 , Mode = Set<br /><br />Out1 Alias Portb.0<br /><br />Dim Bufor(10) As Byte , Dana As Byte , B As Byte , C As Byte , G As Byte<br />Dim Adres As Byte , Karta As Byte , Urzadzenie As Byte , Stan As Byte<br /><br />Adres = 01<br />G = 1<br /><br />Print<br />Print &quot;Karta nr: &quot; ; Adres<br />Wait 1<br /><br />Enable Interrupts<br />Enable Urxc<br /><br />Do<br /><br />Loop<br />End<br /><br />Przerwanie_od_rxd:<br /><br />  Inputbin Dana<br />    Bufor(g) = Dana<br />      Incr G<br /><br />    If G = 6 Then<br />      If Bufor(1) = 83 Then<br /><br />        Karta = Bufor(2) - 48<br />        Karta = Karta * 10<br />        Karta = Karta + Bufor(3)<br />        Karta = Karta - 48<br />        Urzadzenie = Bufor(4) - 48<br />        Stan = Bufor(5) - 48<br /><br />      If Karta = Adres Then<br /><br />        If Stan = 0 Then<br />          Select Case Urzadzenie<br />            Case 1 : Reset Out1<br />          End Select<br />        End If<br /><br /><br />        If Stan = 1 Then<br />          Select Case Urzadzenie<br />            Case 1 : Set Out1<br />          End Select<br />        End If<br /><br />        If Stan = 2 Then<br />          Print<br />            Select Case Urzadzenie<br />              Case 1 : If Out1 = 0 Then Print &quot;off&quot; Else Print &quot;on&quot;<br />            End Select<br />          End If<br /><br />        G = 1<br />      Else<br />        G = 5<br />          For B = 1 To 4<br />          C = B<br />          Incr C<br />          Bufor(b) = Bufor(c)<br />          Next<br />        End If<br />      Else<br />        G = 5<br />          For B = 1 To 4<br />          C = B<br />          Incr C<br />          Bufor(b) = Bufor(c)<br />          Next<br />        End If<br /><br />    End If<br /><br />Return[/syntax]<br />Wysyłam komendy:<br />S0111-włącz przekaźnik nr1<br />S0110-wyłącz przekaźnik nr1<br />S0110-stan przekaźnika nr1 (zwraca on/off)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5834">pimowo</a> — 21 lis 2014, o 15:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[OdeOn]]></name></author>
<updated>2014-11-21T09:25:10+01:00</updated>
<published>2014-11-21T09:25:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9358&amp;p=105263#p105263</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9358&amp;p=105263#p105263"/>
<title type="html"><![CDATA[Re: RS485 odpowiada tylko jeden slave]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9358&amp;p=105263#p105263"><![CDATA[
RS485 jest oparty o magistrale, czyli przewód 2 żyłowy (skrętka) zakończony rezystorami dopasowującymi o wartości impedancji magistrali (np 120ohm). To powoduje że od strony elektrycznej magistrala wydaje się nieskończona i nie powstają odbicia sygnałów. <br /><img src="http://forum.atnel.pl/_obrazki/o/1407/28bf9a60fc6735bd300f8f1d395d0292.jpg" alt="Obrazek" /><br />Rezystory podciągające do vcc i gnd to tryb awaryjny (FAILSAFE), do normalnej pracy nie stosuje się ich.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1407">OdeOn</a> — 21 lis 2014, o 09:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mjc]]></name></author>
<updated>2014-11-21T04:39:27+01:00</updated>
<published>2014-11-21T04:39:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9358&amp;p=105255#p105255</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9358&amp;p=105255#p105255"/>
<title type="html"><![CDATA[RS485 odpowiada tylko jeden slave]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9358&amp;p=105255#p105255"><![CDATA[
Witam<br /><br />Mam pewien problem: zaczynam swoją przygodę z magistralą RS485, chcę uruchomić dwa slave'y na magistrali (są to twa zestawy uruchomieniowe) oraz przejściówka USB-RS485 <!-- m --><a class="postlink" href="http://electropark.pl/moduly-komunikacji/4923-konwerter-usb-rs485.html" >http://electropark.pl/moduly-komunikacj ... rs485.html</a><!-- m --> <br /><br />Wszystko działa pięknie z jednym slave'm jednak gdy podłącze drugi to odpowiada na zapytania tylko jeden, ten później podłączony. Można to zmienić wciskając reset na płytce - wtedy działać będzie tylko ten na którym później został wciśnięty reset.<br />Oczywiście adresy slave'ów są różne.<br /><br />Walczę z tym już kilka godzin i nic - kod jest dość prosty. Po stronie przejściówki RS485-USB testuję pod linuxem na własnym programie oraz pod windowsem przez RealTerm - efekt ten sam, działa tylko jeden slave. Przy konwerterze USB-RS485 linie A i B są podciągnięte odpowiednio do zasilania i masy przez rezystory 2.2k, nigdzie indziej w projekcie nie były podciągane linie A i B. Wyczytałem gdzieś, ze linie A i B powinny być podciągnięte do +5V i GND przez rezystor 450-680 ale czy we wszystkich slave'ach ? Jednak przy krótkich kablach (wszystko leży na biurku) nie powinno być problemu...<br /><br />Może ktoś z kolegów by pomógł?<br /> <br />Poniżej kod slave'a:<br /><br />[syntax=basic4gl]$regfile = &quot;m32def.dat&quot;<br />$crystal = 16000000<br />$hwstack = 64                                               ' default use 32 for the hardware stack<br />$swstack = 50                                               ' default use 10 for the SW stack<br />$framesize = 50                                             ' default use 40 for the frame space<br /><br />$baud = 115200<br /><br />'max485 DE pin -&gt;  1 - włączenie nadajnika, 0 - wyłączenie nadajnika<br />Config Pind.7 = Output<br />_de Alias Portd.7<br />_de = 0<br />'*** przerwanie odbioru danych via UART<br />Enable Urxc<br />On Urxc Odbieraj<br /><br />Enable Interrupts                                           'globalne włączenie przerwań<br />'*************************************<br />Dim Bufor_odbioru(16) As Byte<br />Dim Urxc_ilosc_bajtow As Byte<br />Urxc_ilosc_bajtow = 0<br />Dim Odebrano As Byte<br />Odebrano = 0<br />Dim Adres As Byte<br />Adres = 6<br /><br />'***main()<br />Do<br />         If Odebrano = 1 Then<br />            Disable Urxc<br />            If Bufor_odbioru(1) = &amp;HAB Then                 'poczatek ramki<br />               If Bufor_odbioru(2) = Adres Then             'mamy zgodny adres<br />                  If Bufor_odbioru(4) = &amp;H51 Then           'pytanie czy mamy karte<br />                        _de = 1<br />                        Waitms 2<br />                        Printbin &amp;HAB ; &amp;H80 ; Adres ; &amp;H5A ; &amp;HAA ; &amp;HAC<br />                        Waitms 2<br />                        _de = 0<br />                  End If<br />               End If<br />            End If<br />            Odebrano = 0<br />            Urxc_ilosc_bajtow = 0<br />            Enable Urxc<br />         End If<br />Loop<br />'///////////////////////////////////////////////////////////////////////////////<br />Odbieraj:<br />If Urxc_ilosc_bajtow &lt; 6 Then<br />     Incr Urxc_ilosc_bajtow<br />     Bufor_odbioru(urxc_ilosc_bajtow) = Udr<br /><br />   If Urxc_ilosc_bajtow = 6 Then<br />      Odebrano = 1<br />   End If<br />End If<br />Return[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2891">mjc</a> — 21 lis 2014, o 04:39</p><hr />
]]></content>
</entry>
</feed>