Witam - czy da się opanować w bascom protokół komunikacji uss do falowników micromaster firmy siemens aby "gadała" z nim xmega128 i jakie ewentualnie należy użyć rozwiązania hardware.
pozdrawiam Jacek.
Protokół USS Siemens komunikacja xmegi z falownikiem
- Jacek
- Posty: 384
- Rejestracja: 25 kwie 2016, 19:14
- Pikczu
- Posty: 390
- Rejestracja: 17 sie 2015, 13:46
- Lokalizacja: Dublin, Ireland
- Kontakt:
Re: Protokół USS Siemens komunikacja xmegi z falownikiem
Jacek hardware to raczej rs485 może też być profibus czyli dodatkowe rezystory pull up i pull down bardzo podobny do rs485 ale ciut wyższe napięcia na liniach.
Najwięcej pracy będzie z protokołem transmisji.
Są przykłady modbusa w bascomie ale dalekie od perfekcji.
Najwięcej pracy będzie z protokołem transmisji.
Są przykłady modbusa w bascomie ale dalekie od perfekcji.
- niveasoft
- Posty: 1216
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: Protokół USS Siemens komunikacja xmegi z falownikiem
Jako hardware do Xmegi wystarczy chyba ośmiopinowa kosteczka Max3485. To Max485, ale na 3V3 dlatego z przodu ma 3485
Co do protokołu to swoje trzeba chyba nad nim odsiedzieć.
Są jakieś biblioteki (znaczy się cały projekt w VisualBasic uzywający biblioteki/klasy) do tego, ale nie w Bascom https://github.com/Soghandi/USS
To nie powinno być trudne
Co do protokołu to swoje trzeba chyba nad nim odsiedzieć.
Są jakieś biblioteki (znaczy się cały projekt w VisualBasic uzywający biblioteki/klasy) do tego, ale nie w Bascom https://github.com/Soghandi/USS
To nie powinno być trudne
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- Imports System.IO.Ports
- 'Author: Mostafa Soghandi
- 'Email: Mostafa.soghandi@gmail.com
- Public Class USSCLASS
- Public Event RData(ByVal sender As Object, ByVal e As EventArgs)
- Dim MSComm1 As New SerialPort("COM1", 19200, Parity.Even, 8, StopBits.One)
- Public Sub PortOpen()
- MSComm1.ReadBufferSize = 512
- MSComm1.WriteBufferSize = 512
- MSComm1.ReceivedBytesThreshold = 15
- MSComm1.DtrEnable = True
- MSComm1.RtsEnable = True
- AddHandler MSComm1.DataReceived, AddressOf RecieveData
- MSComm1.Open()
- End Sub
- Public RcvStr As String = ""
- Public Function RecieveData() As Boolean
- Dim i%, buf
- Dim hexdisp As String = Nothing
- Dim inByte(127) As Byte
- buf = ""
- MSComm1.Read(inByte, 0, 127)
- Dim jm As Integer = inByte(1).ToString()
- For i = 0 To jm - 1
- buf = buf + IIf(inByte(i) > 15, Hex(inByte(i)), "0" + Hex(inByte(i))) + Chr(32)
- Next i
- hexdisp = hexdisp + buf
- RcvStr = jm.ToString + ":" + hexdisp.ToString
- RaiseEvent RData(Me, New System.EventArgs)
- End Function
- Public Sub PortClose()
- MSComm1.Close()
- End Sub
- Public Function RunMMS(ByVal Freq As Integer, ByVal Address As Integer) As Boolean
- Dim i(15) As Byte
- Dim j As Integer
- Dim Pin As Single
- Dim PinH As String = ""
- Dim PinL As String = ""
- Pin = Freq * 16384 / 50
- If Len(Hex(Pin)) = 4 Then
- PinH = Mid(Hex(Pin), 1, 2)
- PinL = Mid(Hex(Pin), 3, 2)
- End If
- If Len(Hex(Pin)) < 4 Then
- PinH = Mid(Hex(Pin), 1, 1)
- PinL = Mid(Hex(Pin), 2, 2)
- End If
- i(0) = &H2
- i(1) = &HE
- i(2) = "&H" & Hex(Address).ToString
- MsgBox(i(2))
- i(3) = &H0
- i(4) = &H0
- i(5) = &H0
- i(6) = &H0
- i(7) = &H0
- i(8) = &H0
- i(9) = &H0
- i(10) = &H0
- i(11) = &H4
- i(12) = &H7F
- i(13) = "&H" & PinH.ToString
- i(14) = "&H" & PinL.ToString
- For j = 0 To 14
- i(15) = i(15) Xor i(j)
- Next j
- MSComm1.Write(i, 0, i.Length)
- End Function
- Public Function StopRunning(ByVal Address As Integer) As Boolean
- Dim i(15) As Byte
- Dim j As Integer
- i(0) = &H2
- i(1) = &HE
- i(2) = "&H" & Hex(Address).ToString
- i(3) = &H0
- i(4) = &H0
- i(5) = &H0
- i(6) = &H0
- i(7) = &H0
- i(8) = &H0
- i(9) = &H0
- i(10) = &H0
- i(11) = &H4
- i(12) = &H7E
- i(13) = &H0
- i(14) = &H0
- For j = 0 To 14
- i(15) = i(15) Xor i(j)
- Next j
- MSComm1.Write(i, 0, i.Length)
- End Function
- Public Function ReverseRun(ByVal Freq As Integer, ByVal Address As Integer) As Boolean
- Dim i(15) As Byte
- Dim j As Integer
- Dim Pin As Single
- Dim PinH As String = ""
- Dim PinL As String = ""
- Pin = Val(Freq) * 16384 / 50
- If Len(Hex(Pin)) = 4 Then
- PinH = Mid(Hex(Pin), 1, 2)
- PinL = Mid(Hex(Pin), 3, 2)
- End If
- If Len(Hex(Pin)) < 4 Then
- PinH = Mid(Hex(Pin), 1, 1)
- PinL = Mid(Hex(Pin), 2, 2)
- End If
- i(0) = &H2
- i(1) = &HE
- i(2) = "&H" & Hex(Address).ToString
- i(3) = &H0
- i(4) = &H0
- i(5) = &H0
- i(6) = &H0
- i(7) = &H0
- i(8) = &H0
- i(9) = &H0
- i(10) = &H0
- i(11) = &HC
- i(12) = &H7F
- i(13) = "&H" + PinH.ToString
- i(14) = "&H" + PinL.ToString
- For j = 0 To 14
- i(15) = i(15) Xor i(j)
- Next j
- MSComm1.Write(i, 0, i.Length)
- End Function
- Public Function RunMMSOnJOGMode(ByVal Address As Integer) As Boolean
- Dim i(15) As Byte
- Dim j As Integer
- i(0) = &H2
- i(1) = &HE
- i(2) = "&H" & Hex(Address).ToString
- i(3) = &H0
- i(4) = &H0
- i(5) = &H0
- i(6) = &H0
- i(7) = &H0
- i(8) = &H0
- i(9) = &H0
- i(10) = &H0
- i(11) = &H5
- i(12) = &H7E
- i(13) = &H0
- i(14) = &H0
- For j = 0 To 14
- i(15) = i(15) Xor i(j)
- Next j
- MSComm1.Write(i, 0, i.Length)
- End Function
- Public Function ReverseJOG(ByVal address As Integer) As Boolean
- Dim i(15) As Byte
- Dim j As Integer
- i(0) = &H2
- i(1) = &HE
- i(2) = "&H" & Hex(address).ToString
- i(3) = &H0
- i(4) = &H0
- i(5) = &H0
- i(6) = &H0
- i(7) = &H0
- i(8) = &H0
- i(9) = &H0
- i(10) = &H0
- i(11) = &H6
- i(12) = &H7E
- i(13) = &H0
- i(14) = &H0
- For j = 0 To 14
- i(15) = i(15) Xor i(j)
- Next j
- MSComm1.Write(i, 0, i.Length)
- End Function
- Public Function StopJOG(ByVal address As Integer) As Boolean
- Dim i(15) As Byte
- Dim j As Integer
- i(0) = &H2
- i(1) = &HE
- i(2) = "&H" & Hex(address).ToString
- i(3) = &H0
- i(4) = &H0
- i(5) = &H0
- i(6) = &H0
- i(7) = &H0
- i(8) = &H0
- i(9) = &H0
- i(10) = &H0
- i(11) = &H4
- i(12) = &H7E
- i(13) = &H0
- i(14) = &H0
- For j = 0 To 14
- i(15) = i(15) Xor i(j)
- Next j
- MSComm1.Write(i, 0, i.Length)
- End Function
- Public Function ReqParam(ByVal address As Integer) As Boolean
- Dim i(15) As Byte
- Dim j As Integer
- i(0) = &H2
- i(1) = &HE
- i(2) = "&H" & Hex(address).ToString
- i(3) = &H10
- i(4) = &H3
- i(5) = &H0
- i(6) = &H0
- i(7) = &H0
- i(8) = &H3
- i(9) = &H0
- i(10) = &H0
- i(11) = &H0
- i(12) = &H0
- i(13) = &H0
- i(14) = &H0
- For j = 0 To 14
- i(15) = i(15) Xor i(j)
- Next j
- MSComm1.Write(i, 0, i.Length)
- End Function
- End Class
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
- Jacek
- Posty: 384
- Rejestracja: 25 kwie 2016, 19:14
Re: Protokół USS Siemens komunikacja xmegi z falownikiem
Witam - dziękuje za odpowiedzi - przygotuje na pcb miejsce na MAX3485 i dodatkowy standardowy uart.
Czy wystarczy typowa aplikacja z datasheet?.
pozdrawiam Jacek.
Czy wystarczy typowa aplikacja z datasheet?.
pozdrawiam Jacek.