Styra frekvensomriktare via MODBUS RS485

admin
Site Admin
Posts: 170
Joined: Mon Mar 06, 2017 10:08 am

Styra frekvensomriktare via MODBUS RS485

Post by admin » Sun Oct 01, 2017 1:54 pm

Jag börjar med att testa lite lätt att läsa register så bygger jag på detta efter hand.

Hårdvara:
RS485-USB adapter https://www.jbcnc.se/sv/frekvensomrikta ... pter-p-478
Frekvensomriktare S800E 2.2kw 230v https://www.jbcnc.se/sv/frekvensomrikta ... 230v-p-597
Adaptern är inkopplad enligt bild, för smidighetens skull klippte jag sönder ett gem och använder som kopplingstråd, GND bör också kopplas in egentligen.

Mjukvara:
UCCNC (fungerar även i demoläge utan licens)

Manualer:
Mannual speciellt för seriell kommunikation finns under nedladdningsbara filer på frekvensarens artikelsida
Mannual för Modbus i UCCNC hittas i mappen där UCCNC är installerat, vanligtvis c:\uccnc\documentation\Macro_capability_detailed.htm

Det enda jag ändrar i frekvensomriktaren är slavadressen p702 till 1, resten låter jag vara standard för enkelhetens skull och ställer in UCCNC efter det.
Attachments
8.jpg
8.jpg (128.88 KiB) Viewed 12128 times
-------------------------
Johan Brundin
JB CNC & Linear Components

admin
Site Admin
Posts: 170
Joined: Mon Mar 06, 2017 10:08 am

Re: Styra frekvensomriktare via MODBUS RS485

Post by admin » Sun Oct 01, 2017 1:58 pm

I UCCNC klicka på configuration / general settings / configure plugins
Leta sedan rätt på Modbus Master, bocka för enabled och call at startup, starta sedan om programmet
Attachments
1.PNG
1.PNG (167.86 KiB) Viewed 12130 times
2.PNG
2.PNG (4.12 KiB) Viewed 12130 times
-------------------------
Johan Brundin
JB CNC & Linear Components

admin
Site Admin
Posts: 170
Joined: Mon Mar 06, 2017 10:08 am

Re: Styra frekvensomriktare via MODBUS RS485

Post by admin » Sun Oct 01, 2017 2:07 pm

Pluginen startar nu automatiskt i bakgrunden samt att konfigrutan för modbus startas (ta bort call at startup när du är färdig med konfigurerandet så kommer inte rutan upp varje gång uccnc startas)

Klicka på Add connection.
Fyll i fälten enligt bilden:
Bocka för Serial accii
Description: Vad du vill kalla den, det spelar ingen roll vad.
Serieporten: Hittar du i devicemanager/enhetshanteraren vilken port som USB-RS485 adaptern har hamnat på.
Bocka i RS485

Klicka sedan på Add Function och fyll i enligt bild.
Slave adress är P702 som vi ändrade i frekvensaren
Modbus start register 1 är registret för inställd hastighet vilket är ett bra register att prova med eftersom man direkt kan se att något händer när man vrider på ratten på frekvensaren.
Attachments
3.PNG
3.PNG (60.71 KiB) Viewed 12130 times
4.PNG
4.PNG (9.01 KiB) Viewed 12130 times
-------------------------
Johan Brundin
JB CNC & Linear Components

admin
Site Admin
Posts: 170
Joined: Mon Mar 06, 2017 10:08 am

Re: Styra frekvensomriktare via MODBUS RS485

Post by admin » Sun Oct 01, 2017 2:54 pm

Klicka på Start Loops och sedan på Debug för att kontrollera att det fungerar.

När allt ör grönt, kika under variables table och se om ruta nummer två från vänster ändras när du vrider på frekvensarens ratt.
Attachments
5.PNG
5.PNG (6.46 KiB) Viewed 12128 times
6.PNG
6.PNG (8.17 KiB) Viewed 12128 times
-------------------------
Johan Brundin
JB CNC & Linear Components

admin
Site Admin
Posts: 170
Joined: Mon Mar 06, 2017 10:08 am

Re: Styra frekvensomriktare via MODBUS RS485

Post by admin » Sun Oct 01, 2017 3:04 pm

Nu vill vi ju gärna använda det här värdet till något och genom att skapa en m-kod tex M20301.txt i UCCNC/profiles/Macro_Default/
Och lägga till följande enkla kod:

Code: Select all

ushort Readvalue;
exec.GetModbusregister(1, out Readvalue);
AS3.Setfield(Readvalue, 870);
Läser vi register 1 från modbuspluginen och skriva det värdet till fält 870, vilket är "Sact" på RUN-sidan, aktuell spindelhastighet.
Makrot kan köra genom att skriva M20301 i MDI, eller att under configuration/general settings, klicka på macro loops och ställ in enligt bild
Klicka på run för att köra macrot och det kommer nu köras om och om igen tills du klickar på kill, klicka i Autorun om du vill att den ska starta när UCCNC startas.
Klicka på save settings.

Nu bör spindelhastigheten uppdateras och visa samma som frekvensomriktaren visar på första sidan.
Attachments
7.PNG
7.PNG (37.11 KiB) Viewed 12128 times
-------------------------
Johan Brundin
JB CNC & Linear Components

admin
Site Admin
Posts: 170
Joined: Mon Mar 06, 2017 10:08 am

Re: Styra frekvensomriktare via MODBUS RS485

Post by admin » Sun Oct 01, 2017 3:09 pm

Så här kan det se ut "in real life" :)
Attachments
9.jpg
9.jpg (139.73 KiB) Viewed 12128 times
-------------------------
Johan Brundin
JB CNC & Linear Components

Jello
Posts: 1
Joined: Mon Jul 23, 2018 10:51 am

Re: Styra frekvensomriktare via MODBUS RS485

Post by Jello » Mon Jul 23, 2018 10:58 am

Allt funkar men spindeln startar inte. Vad har jag missat? ;)

admin
Site Admin
Posts: 170
Joined: Mon Mar 06, 2017 10:08 am

Re: Styra frekvensomriktare via MODBUS RS485

Post by admin » Mon Jul 23, 2018 11:21 am

Hittils har jag bara lagt till för att läsa hastigheten, mer kommer när jag har tid att laborera mer.
Mer info finns i manualerna om vilka register du ska skriva till.
-------------------------
Johan Brundin
JB CNC & Linear Components

ksjoberg
Posts: 2
Joined: Wed Sep 14, 2022 5:55 pm

Re: Styra frekvensomriktare via MODBUS RS485

Post by ksjoberg » Wed Sep 14, 2022 6:13 pm

Jag vill styra min inverter över RS485. För detta ändamål behöver jag kunna läsa ut lite grundläggande information så att jag sedan kan skicka instruktioner till invertern att starta. Jag har lyckats med utläsning av relevant data. Här är vad jag funnit:

Skickar man MODBUS RTU 0103f1050001a6f7 ska paketet tolkas så här:

Code: Select all

Part of Data Package	Description	Value
01	Slave address	0x01 (1)
03	Function code	0x03 (3) - Read Holding Registers
F1 05	Starting address	Physical: 0xF105 (61701)
00 01	Quantity	0x0001 (1)
A6 F7	CRC	0xA6F7 (42743)
Alltså, en läsning av register 0xF105. Det motsvaras av register P105 i manualen, vilket är den inställda maxfrekvensen i enheten 0.1Hz. Invertern svarar med denna RTU: 0103020fa0bdcc. Paketet ska tolkas så här:

Code: Select all

Part of Data Package	Description	Value
01	Slave address	0x01 (1)
03	Function code	0x03 (3) - Read Holding Registers
02	Byte count	0x02 (2)
0F A0	Register value	0x0FA0 (4000)
BD CC	CRC	0xBDCC (48588)
Dvs, 4000 == 400.0Hz

Vill man läsa register P212 så skickar man en fråga att läsa register 0xF20C (0xC == 12 hexadecimalt). RTU: 0103f20c000176b1. Svaret blir 0103020bb8bf06, tolkat:

Code: Select all

Part of Data Package	Description	Value
01	Slave address	0x01 (1)
03	Function code	0x03 (3) - Read Holding Registers
02	Byte count	0x02 (2)
0B B8	Register value	0x0BB8 (3000)
BF 06	CRC	0xBF06 (48902)
Tillsammans med register P215 eller 0xF20F får man ut den frekvens som varvtalet i P212 uppmätts i. T.ex 50.0Hz. Tillsammans med P212 kan man alltså räkna ut antalet RPM/Hz genom att dividera 3000/50.0 = 60RPM/Hz. Det matchar min 400Hz spindel som ger 24000RPM @ 400Hz.

Nu har jag tillräckligt med information för att kunna styra invertern till rätt frekvens för ett önskat varvtal. Nu ska jag knappa ihop kod för att göra det också, och lista ut vilket register det bäst skrivs till.

ksjoberg
Posts: 2
Joined: Wed Sep 14, 2022 5:55 pm

Re: Styra frekvensomriktare via MODBUS RS485

Post by ksjoberg » Sat Sep 17, 2022 12:36 pm

Jag fick igång styrningen av VFDn över Modbus! Jag vill i förlängningen också räkna ut dess belastning så att man får feedback om ett frässtål jobbar för hårt eller går av.

Jag har dokumenterat det som inte står i manualen som man behöver veta för att kunna styra VFDns utfrekvens, Run/Stop/Jog samt om den ska köra medsols eller motsols. Informationen finns här: https://blog.q1.se/2022/09/interfacing- ... er-modbus/

Post Reply