Alternativ utvecklingsverktyg för AVR programmering i Linux

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Volvo740
Inlägg: 149
Blev medlem: 15 juli 2017, 19:11:01

Re: Alternativ utvecklingsverktyg för AVR programmering i Li

Inlägg av Volvo740 »

Jan Almqvist skrev:Det här med "Kommunikationshastighet, antal databitar, stoppbitar, paritet osv." gäller vid Modbus RTU.
Jag tycker att man i första hand bör man välja moduler med Ethernet-anslutning och köra Modbus/TCP.
Här är en ModBus TCP.
https://www.ebay.com/itm/8Way-Network-R ... SwnsRaVJIy

Här är instruktionen hur man använder denna produkt:
TCP Support Command: 01 reads relay status, 05 operates single relay, 0f operates all relays, 02 read switch on-off input.
Product Control Command:
Send on1 will open the first way relay,
Send off1 will close the first way relay, 2-8 way control method is the same.
Send read will read relay state, if return to relay00000001, it means the first way relay is energized, 2-8 way relays are dis-energized.
Support time delay control, for example,
Send:on1:02, means relay is energized for 2 seconds then dis-energized
Send:on: 12 means relay is energized for 12 seconds then dis-energized, the longest delay time is 99 seconds.

Vad menas då med "01"? Är det en textsträng som man skickar till adressen som kortet är inställd på?
Användarvisningsbild
mrfrenzy
Co Admin
Inlägg: 14818
Blev medlem: 16 april 2006, 17:04:10

Re: Alternativ utvecklingsverktyg för AVR programmering i Li

Inlägg av mrfrenzy »

Jag förstår att du blir förvirrad för det där är nog inte modbus, det har dom bara skrivit i rubriken för att fler ska hitta produkten.

Jag skulle hellre betala 25% mer och köpa från http://www.shjelectronic.com. Då får du en manual på engelska, en kapsling, riktig modbus och någon som förmodligen till och med svarar på mail om man frågar.

Om du behöver 20st och den sista hundralappen verkligen är viktigast så kan du säkert få denna att funka också, jag laddade ner rarfilen dom hade länkat och där finns ett Windows 95-program med källkod i C++, man kan läsa koden och klura ut hur det funkar, kanske köra google translate på det kinesiska word-dokumentet...

Det blir ju dock mycket jobbigare då du måste göra allt själv istället för att använda färdiga modbusbibliotek.
Användarvisningsbild
Swech
EF Sponsor
Inlägg: 4689
Blev medlem: 6 november 2006, 21:43:35
Ort: Munkedal, Sverige (Sweden)
Kontakt:

Re: Alternativ utvecklingsverktyg för AVR programmering i Li

Inlägg av Swech »

Det är modbus kommando som beskrivs, över TCP IP

All info finns att få här
http://www.modbus.org/

Att också påstå att modbus protokollet idag inte längre funkar med sig själv är mer gissningar än verklighet

Swech
Volvo740
Inlägg: 149
Blev medlem: 15 juli 2017, 19:11:01

Re: Alternativ utvecklingsverktyg för AVR programmering i Li

Inlägg av Volvo740 »

S5102 låter intressant.

8 analoga mätingångar.
2 stycken PWM
6 Digitala ingångar
12 stycken digitala utgångar normalt öppen

1000 kr låter som ett klipp.

Jag tittade lite på manualen men förstod inte riktigt hur man talar med den. Vi säger att jag köper denna produkt och sedan så laddar jag ned EasyModbus för Java programmeringsspråk. Hur säger jag åt att t.ex. utgång 6 ska vara ON då? Nu är detta en USB variant av Modbus, men jag antar att det inte ska vara någon skillnad?
Användarvisningsbild
mrfrenzy
Co Admin
Inlägg: 14818
Blev medlem: 16 april 2006, 17:04:10

Re: Alternativ utvecklingsverktyg för AVR programmering i Li

Inlägg av mrfrenzy »

Hmm, S5102 är RS485, inte USB, så då behöver man en USB-RS485 omvandlare. Till din omvandlare kan du sen koppla många moduler.
Först måste du konfigurera ditt javabibliotek att hitta rätt serieport som skapas av omvandlaren, sedan kopplar du in en enhet i taget och ställer adressen.

Jag tycker det är lite meckigt och gammaldags så jag beskriver ethernetvarianten istället som exempel:
S6512 för $129 har 12 ingångar som kan användas både analogt och digitalt. Den har också 12 reläutgångar.
I manualen http://www.shjelectronic.com/FTP/Technical_S6512.zip

Kan man se att adress 112 används för reläutgångarna.
Den är två bytes och alltså 16 bit.

Standardläget är:
0000000000000000

För att slå på relä nr 6 ska vi ändra bit 6 till 1:
0000000000100000

Konverterar vi det till decimalt så blir det 32

Kod: Markera allt

import de.re.easymodbus.modbusclient.*;
 
public class run {
	public static void main(String[] args)
	{
		ModbusClient modbusClient = new ModbusClient("192.168.5.100",502);
		try
		{
			modbusClient.Connect();
			modbusClient.WriteSingleRegister(112, 32);
		}
		catch (Exception e)
		{		
		}	
	}
}
(denna kod borde då faktiskt också funka på den billiga ebay-modulen som Swech identifierat ju också kör modbus, fast man får använda en annan adress).
Volvo740
Inlägg: 149
Blev medlem: 15 juli 2017, 19:11:01

Re: Alternativ utvecklingsverktyg för AVR programmering i Li

Inlägg av Volvo740 »

Du har verkligen övertygat mig mer än vad någon annan har gjort på 5 år. Jag får beställa en sådan och sedan läsa på hur man använder biblioteket, både läsa och skriva och läsa på hur ModBus-tänket fungerar.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45168
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Alternativ utvecklingsverktyg för AVR programmering i Li

Inlägg av TomasL »

Swech skrev:Det är modbus kommando som beskrivs, över TCP IP

All info finns att få här
http://www.modbus.org/

Att också påstå att modbus protokollet idag inte längre funkar med sig själv är mer gissningar än verklighet

Swech
Nja, faktiskt inte, det verkar som att alla tillverkare i dag mer eller mindre skiter i kraven i protokollet, dessutom existerar egentligen inte 32-bitars data i protokollet, och där implementerar tillverkarna det lite hur som helst.
För att läsa till exempel 32 bitar, så läser du för det mesta 2x16 bitar, i bland läser du 32 bitar direkt.
Ibland så kommer ord-ordningen i Little Endian, och i bland i big endian,
Vissa tillverkare skickar data enbart som 32 bitars flyttal, en del tillverkare blandar hej vilt.
Vissa stöder 8N1, 8E1,8O1 och 8N2, vissa stöder enbart 8N1, andra enbart 8E1/8O1 osv.
Detta är defakto dagens verklighet.
Modbus/TCP är inte riktigt så vanligt som man kanske kunde tro. RTU/RS485 är fortfarande dominerande.
Dessutom skall tilläggas att MODBUS/TCP är RTU inkapslat i en TCP-frame, det innebär att man iofs slipper problemet med kommunikationsstandard, men man har fortfarande problemet med dataformatet kvar.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45168
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Alternativ utvecklingsverktyg för AVR programmering i Li

Inlägg av TomasL »

Volvo740 skrev:S5102 låter intressant.

8 analoga mätingångar.
2 stycken PWM
6 Digitala ingångar
12 stycken digitala utgångar normalt öppen

1000 kr låter som ett klipp.
Dock inte samtidigt, du max 12 Ingångar.
Dessutom stöder den bara 8N1, vilket den egentligen inte får göra eftersom det är ett "brott" mot standarden.
Dock verkar den stödja MODBUS/TCP, vilket i viss mån förenklar saker och ting, kanske.
Användarvisningsbild
mrfrenzy
Co Admin
Inlägg: 14818
Blev medlem: 16 april 2006, 17:04:10

Re: Alternativ utvecklingsverktyg för AVR programmering i Li

Inlägg av mrfrenzy »

Ska man bygga en "riktig" maskin med en S7 PLC eller liknande är det givetvis viktigt att kolla så att alla produkter man köper är kompatibla och funkar "ur lådan".
Det är bara att installera (till exempel) Siemens program och kolla vilka enheter som finns med att klicka in. Det kommer spara mycket huvudvärk och göra allting mycket enklare.

Håller man på och laborerar med ett egetskrivet program på PC så spelar det inte så stor roll. Finns bara dokumentation hur enheten kommunicerar så går det alltid anpassa.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45168
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Alternativ utvecklingsverktyg för AVR programmering i Li

Inlägg av TomasL »

Ja, naturligtvis, men även om man "bara" labbar, så kommer man till det läget att man kanske vill koppla in fler apparater, och det sparar mycket huvudbry, om man är medveten över vad olika tillverkare hittar på.
Användarvisningsbild
Jan Almqvist
Inlägg: 1580
Blev medlem: 1 oktober 2013, 20:48:26
Ort: Orust

Re: Alternativ utvecklingsverktyg för AVR programmering i Li

Inlägg av Jan Almqvist »

TomasL skrev: Dessutom skall tilläggas att MODBUS/TCP är RTU inkapslat i en TCP-frame, det innebär att man iofs slipper problemet med kommunikationsstandard, men man har fortfarande problemet med dataformatet kvar.
Öh, nej. Men det är tyvärr en ganska vanlig missuppfattning.

Det finns en bra beskrivning på den här sidan, scrolla ner till bilden under MPAB header.
http://www.simplymodbus.ca/TCP.htm

Ett Modbus RTU request meddelande inleds med SlavID, därefter PDU (Protocol Data Unit) och sist två byte CRC.
Ett Modbus/TCP request meddelande inleds med 7 byte MPAB header därefter PDU, Protocol Data Unit.

Modbus/TCP är alltså inte Modbus RTU inkapslat i något.

Därmot körs ofta Modbus RTU över TCP/IP (eller UDP/IP) om man använder en port server (device server) men det är såklart fortfarande Modbus RTU och inget annat.

Modbus/TCP och Modbus RTU är inte kompatibla med varandra, du kan inte köra Modbus/TCP i ena ändan och Modbus RTU i andra.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45168
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Alternativ utvecklingsverktyg för AVR programmering i Li

Inlägg av TomasL »

PDUn ÄR en RTU-PDU.
Den ser exakt likadan ut.
Användarvisningsbild
Jan Almqvist
Inlägg: 1580
Blev medlem: 1 oktober 2013, 20:48:26
Ort: Orust

Re: Alternativ utvecklingsverktyg för AVR programmering i Li

Inlägg av Jan Almqvist »

Ja, själva PDU:n är ju samma men det du påstod var att "MODBUS/TCP är RTU inkapslat i en TCP-frame" vilket är fel.

Du blandar kanske ihop med Modbus RTU över TCP/IP vilket ibland kallas "Encapsulated Modbus RTU over TCP"?
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45168
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Alternativ utvecklingsverktyg för AVR programmering i Li

Inlägg av TomasL »

Nä, jag var lite otydlig uppenbarligen, och jo jag har 100% kontroll på allt inom modbus, då vi använder det i våra egna styrsystem, med helt egenskriven kod.
Både MODBUS-RTU/RS485 och MODBUS/TCP.
Volvo740
Inlägg: 149
Blev medlem: 15 juli 2017, 19:11:01

Re: Alternativ utvecklingsverktyg för AVR programmering i Li

Inlägg av Volvo740 »

TomasL skrev:Ja, naturligtvis, men även om man "bara" labbar, så kommer man till det läget att man kanske vill koppla in fler apparater, och det sparar mycket huvudbry, om man är medveten över vad olika tillverkare hittar på.
Jag ska bara labba och leka.
mrfrenzy skrev:Ska man bygga en "riktig" maskin med en S7 PLC eller liknande är det givetvis viktigt att kolla så att alla produkter man köper är kompatibla och funkar "ur lådan".
Det är bara att installera (till exempel) Siemens program och kolla vilka enheter som finns med att klicka in. Det kommer spara mycket huvudvärk och göra allting mycket enklare.

Håller man på och laborerar med ett egetskrivet program på PC så spelar det inte så stor roll. Finns bara dokumentation hur enheten kommunicerar så går det alltid anpassa.
Jag har mest tänkt att lära mig använda godtyckliga I/O enheter som kopplas upp på nätet. Där efter utveckla javaprogram med JavaFX som innehåller senaste lambdauttryck.

Att utveckla i Java idag inte krävande. Med JavaFX Scene Builder så bygger man häftiga applikationer inom några minuter.
Skriv svar