Step 7 Modbus TCP: ET 200SP with Altivar VFD

Zuviel Werbung?
-> Hier kostenlos registrieren
So, You missed to give information of You MB_Client-data.

But for a try I would do this:
Somove:
Remove CMD and LFRD from the command output list, move LFR to position(channel) 1

on MB_Client:
Use Mode 116
Ude Len 1
Use address 0
Use a word on data_ptr with value w#16#0010 for a try.

While You're connecting the plc to the vfd somove's connection is closed, right?
 
On command -> FR1 there is an option to set on Reference over modbus. <- edited because of wrong information. Thats modbus RTU specific
I never used this and can let the drive setting to ethernet for modbus-communication.
But the difference what I do is completely control the drive via modbus and only use STO1/2 for the safety-related part. My profile for this behavior had been posted except that the drive must be error-free and initialized (I think it is, right?).

So if my above suggestion wont work I really cant figure out whats missing. But I know that Schneider got a very good hotline, at least in germany, which helped me alot some years ago when I was in need for help.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
So, You missed to give information of You MB_Client-data.

But for a try I would do this:
Somove:
Remove CMD and LFRD from the command output list, move LFR to position(channel) 1

on MB_Client:
Use Mode 116
Ude Len 1
Use address 0
Use a word on data_ptr with value w#16#0010 for a try.

While You're connecting the plc to the vfd somove's connection is closed, right?
Much thanks!!!

Here is the update:

1) VFD new configs (as attachments): VFD_Config1 and VFD_Config2
2) PLC new configs (as attachments): MB_Client_Config and Data_Send and MB_Client

As for the SoMove connection to the VFD, it is closed under TIA tests.

Result: the VFD is now responding and a manipulative-able frequency can be set from the FB in TIA >> The 16#0010 word in MB_DATA_PTR reflects a +1.6 Hz on the VFD.

Concerns:

1) is the MB_DATA_PTR only applicable as a Word?
2) how was the choice of MB_DATA_ADDR made to be 0? shouldn't it be the logical address for the reference frequency (i.e., 8502)? or it is the localization of the variable (LFR) in the Outputs channel (channel 1)?
3) how to change the MB_DATA_PTR to turn CW/CCW the motor?
4) can we please make the same experiment while READING from the AI (i.e., AI1) a temperature measurement (how the MB_MODE, MB_DATA_ADDR, etc. will eventually be changed)?

Thanks again
 

Anhänge

  • Data_Send.jpg
    Data_Send.jpg
    13,3 KB · Aufrufe: 12
  • MB_Client.jpg
    MB_Client.jpg
    19,7 KB · Aufrufe: 13
  • MB_Client_Config.jpg
    MB_Client_Config.jpg
    59 KB · Aufrufe: 12
  • VFD_Config1.jpg
    VFD_Config1.jpg
    75,8 KB · Aufrufe: 10
  • VFD_Config2.jpg
    VFD_Config2.jpg
    41,7 KB · Aufrufe: 10
1) is the MB_DATA_PTR only applicable as a Word?
2) how was the choice of MB_DATA_ADDR made to be 0? shouldn't it be the logical address for the reference frequency (i.e., 8502)? or it is the localization of the variable (LFR) in the Outputs channel (channel 1)?
3) how to change the MB_DATA_PTR to turn CW/CCW the motor?
4) can we please make the same experiment while READING from the AI (i.e., AI1) a temperature measurement (how the MB_MODE, MB_DATA_ADDR, etc. will eventually be changed)?

1) No, normally it should ne an INT. I mixed it up :D. But it doesnt matter if You give out a 10 as word or a 10 as integer by a range of -5000 to 5000. Integer is easier to read, so You should go on with that.
edited: Im messed this one hehe. A word 10 is an 16 integer, so You got 1.6 - good. 100 will be 10.0Hz and since You use the frequency You will have a range from -500 to 500 on integer for a range of -50.0 to 50.0Hz.

2) Right, its the position on the Outputs Channel list. The same procedure will happen to the inputs. You should think about a simple register starting at 1 which would be addressed at 0. I dont know why 0=1, but its often in Modbus-Communications.

3) Since we now know that You can control it You would need to think about how it shall be started. With Modbus? So my origin post would be useful using a UDT with CMD and LFR. CMD will need to get the correct addresses, bitwise or directly by a word. This is the Schneider-document helping alot with every single code and how it is addressed. For CMD on table Registers it is specified bitwise.

4) Simply change the input list into what You want to read and then read it with modbus mode.
For 1 word reading:
Mode 103
Len 1
Addr 0

2 words:
Reading:
Mode 103
Len 2
Addr 0

and so on.

Try to always use an UDT on data_ptr, will be very helpful when changing several VFDs at a time and, an UDT can be hold in the Global-bib of TIA.

This is a code-snippet for my control-routine of an ATV. It is important that only one command will be used, so thats why its an IF-ELSIF-construct. Can only handle one direction, but should be ok for starting.
Code:
IF #Read_Data.ETA = w#16#231 AND NOT #Start_CW THEN // Initial
            #Write_Data.CMD := w#16#0007;
    ELSIF (#Read_Data.ETA=w#16#250 OR #Read_Data.ETA=w#16#4250) AND NOT #Start_CW THEN // Stop after Initial
        #Write_Data.CMD := w#16#0006;
    ELSIF #Start_CW THEN // Start CW
        #Write_Data.CMD := w#16#000f;
    ELSIF #"Reset Umrichter" AND NOT #Start THEN // Reset VFD
        #Write_Data.CMD := w#16#0080;
    ELSE // Stop if nothing specified
        #Write_Data.CMD := w#16#0006;
    END_IF;

I use some non-usual Parameters on MB_Client, to be written into its IDB:
Code:
    #DB_MB_Client.Blocked_Proc_Timeout := 5.0;
    #DB_MB_Client.Retries := 3;
    #DB_MB_Client.Rcv_Timeout := 5.0;
With this the timeout will be shorter, down to 5 seconds with 3 retries. TIA would wait about a minute and the VFD might stop working. Had to be done in earlier versions, never changed them since I was in need to, I should look for it anytime ;).




Oh, to be clear:
I wrote about FR1 - reference over modbus earlier. I found a note for myself in my FB telling me to NOT use FR1 and CD1 for "Modbus" because this is Modbus RTU only :D. I think I messed this up anytime hehe.
 
Zuletzt bearbeitet:
4) Simply change the input list into what You want to read and then read it with modbus mode.
For 1 word reading:
Mode 103
Len 1
Addr 0

2 words:
Reading:
Mode 103
Len 2
Addr 0

and so on.
Much thanks!

Well, before just changing the attributes of the MB_Client FB, shouldn't the VFD be configured to have its AIx assigned for sensor readings? Again, my model is ATV630U30N4. Also, wiring connections must definitely be taken into consideration, for instance, a regular PT100 without any additional circuitry would not simply work if having its two end terminals clapped in AI1 and COM at the analog input interface of the VFD, right?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
As an update:

intended it is to read the Voltage from AI1. On the VFD side, the following parameters were set as Inputs:

1666871679609.png

and AI1 is configured as "Voltage":

1666871769893.png

On TIA side, the "Data_Receive".Voltage is set as INT, and this is the corresponding output:

1666871827798.png

The value "576" is stubborn and does not change with the change of voltage level at AI1. Keeping in mind that I can actually see the voltage level on AI1 via the VFD Webserver. But the AI1 assignment is non-modifiable:

1666872098082.png
 
before just changing the attributes of the MB_Client FB, shouldn't the VFD be configured to have its AIx assigned for sensor readings?
Of course You need to assign what You want to read first, thought You will do the job ;).

AI1A will not be configured at the I/O-Assignment. Here You will see where it is assigned to. So it is Read-Only. It auto-assigns if You turn Referency over AI1 or thermal protection over AI1 etc.

But however, the ATV630 is not able to use a pt100 on AI1. Only voltage+current as I can remind.

You will need to use AI2 for example, wire it to AI2-COM and change AI2T to PT100. Then check for AI2C for physical and AI2R for standardized values. For completely unfiltered values You could read SAI2.
 
Of course You need to assign what You want to read first, thought You will do the job ;).

AI1A will not be configured at the I/O-Assignment. Here You will see where it is assigned to. So it is Read-Only. It auto-assigns if You turn Referency over AI1 or thermal protection over AI1 etc.

But however, the ATV630 is not able to use a pt100 on AI1. Only voltage+current as I can remind.

You will need to use AI2 for example, wire it to AI2-COM and change AI2T to PT100. Then check for AI2C for physical and AI2R for standardized values. For completely unfiltered values You could read SAI2.
Hello and thank you again!
According to what has been precedent:

1) it is understandable now that AI1 only reads voltage or current as set in the drive configuration. For both cases, the resultant values (whether in mA or V) can be seen from the VFD webserver. Can we observe voltage/current in TIA (specifically in the DB which contains the variable of MB_DATA_PTR)? Since AI1 is already set to Voltage:
1666940660148.png
and can be directly read from the webserver, why the resultant physical output voltage value cannot be seen in TIA, although AI1C is preset in the Drive I/O Profile?
1666940931463.png

2) Concerning AI2: it is clear now that it can be set to be connected with a PT100 (2-wires), where the first wire of it goes to AI2, and the other to COM. Progressively, AI2T is set to PT100, and AI2C is defined in the Drive I/O Profile:
1666941785905.png

Result: I kept seeing the value "10000" on the INT variable assigned to MB_DATA_PTR (as a note, MB_MODE = 103 , MB_DATA_ADDR = 0 , and MB_DATA_LEN = 1 were set at that stage), regardless of the "real temperature value". I also have tried to change the TH2S (Activation if the thermal monitoring on AI2) to Yes but automatically received an Error: T2CF (Thermal sensor error on AI2).
On the same side, I tried to seek different registers than the AI2C, to get any meaningful readings from AI2, such as SAI2, but still I only received a stubborn value of "10000" regardless of the actual temperature.

3) As another feedback from the VFD, It would also be beneficial if I can read the states of its embedded relays. As a first trial, I have set R1 (R1 assignment) to "Device in ready or running state":
1666944758227.png
And also defined it in the Drive I/O:

1666944959103.png

When the drive is ON and ready, I have set MB_MODE = 103 , MB_DATA_ADDR 0 = , MB_DATA_LEN = 1 and MB_DATA_PTR is assigned to a BOOL bit, instead of seeing TRUE (as supposedly) the entire MB_Client FB went into an error (16#8383).

4) how possible it is to write a command (e.g., frequency write as initially in this post), read a PT100, and read a BOOL bit from the VFD at the same time?
 
For investigation, can You provide the output of the webserver and DATA_PTR at the same time please?

Working on other hints, have to do server-maintenance on my other hand, sry.
Hello, thank you for your time, and good luck with your server maintenance.

I would drain less from your time, as I have new outputs and I am able to read voltage from AI2. If you can please confirm the following: unlike Siemens AI modules for example, the PT100 cannot be directly connected here between AI2 and COM, since it would not produce any significant voltage/current so that the analog channel can sense (unlike in Siemens AI where the module transforms the incoming signal from the PT100 into a 4...20mA signal). Therefore, an extra circuitry is needed such as:

1666953470159.png

True or false? (I still have concerns about the PT100 setting for AI2T)

Nice day.,
 
No, don't use external circuits or a power supply on this ports.

PT100 on AI2&AI3:
5mA current
Range 20-200°C
Tolerance: +-4°C within a temperature variation of 60°C


AI2&AI3-wiring:
1666954950396.png

How old is Your VFD? This picture is out of EAV64301.11 — 06/2022 while the 04/2020 has an option for up to 3 sensors in a row on ai2 or ai3 (with average monitored output).
I'm using this one for the latest drives: https://download.schneider-electric..._manual_EN_EAV64301_11.pdf&p_Doc_Ref=EAV64301


Thanks for the luck on maintenance, need it, another admin killed the whole AD-process and kicked out half of the domain-entrys cause his laptop wanted an admin-password for software-installations. Today will be a long day.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Okay I do only have an 340 and 950 here right now and both are acting the same. I get my temperature on AI2&AI3 the same way.
And in all 3 variants (3xx,6xx,9xx) the difference is the amount of pt100 in a row can be used and the amount of analog inputs differ, everything else including the modbus-communication is the same.

Anything must be missing on Your drive, might You share the somove-project? I would like to transfer it over to the 950 and look what it does here.
 
AI2&AI3-wiring:
Anhang anzeigen 64570

How old is Your VFD?
Hello again,

My VFD is also from 2022 series (brand new). I did exactly the same wiring as within your attached image. As an alternative trial, I have set AI3T to PT100 and placed the physical value AI3C of the sensor on the Inputs list:

1666956399246.png
1666956435304.png

What else must have been done in order to have readings? Using MB_Mode 103, data addr 0 and len 1 I did not receive any significant values from the MB_dATA_PTR (Int).
 

Anhänge

  • 1666956131918.png
    1666956131918.png
    146,4 KB · Aufrufe: 0
And also defined it in the Drive I/O:

1666944959103.png


When the drive is ON and ready, I have set MB_MODE = 103 , MB_DATA_ADDR 0 = , MB_DATA_LEN = 1 and MB_DATA_PTR is assigned to a BOOL bit, instead of seeing TRUE (as supposedly) the entire MB_Client FB went into an error (16#8383).

4) how possible it is to write a command (e.g., frequency write as initially in this post), read a PT100, and read a BOOL bit from the VFD at the same time?
Add R1 as 5001 to the list and add to the UDT on DATA_PTR a word likely named R1.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

By taking into consideration this circuitry (PT100 is to be connected on AI3):

1666978652106.png

And MB_MODE = 103, MB_DATA_PTR = 0, MB_DATA_LEN = 1 and having set AI3C on Channel 1 of Inputs:

1666978819382.png

Could you please state what is left to be configured on the side of the VFD, in order to read temperature on MB_DATA_PTR?
 

Anhänge

  • 1666977619849.png
    1666977619849.png
    5,6 KB · Aufrufe: 3
  • 1666977887213.png
    1666977887213.png
    16,5 KB · Aufrufe: 3
  • 1666977952571.png
    1666977952571.png
    11,7 KB · Aufrufe: 3
Anything must be missing on Your drive, might You share the somove-project? I would like to transfer it over to the 950 and look what it does here.
Hello,

I have just notice this request. Attached it is the SoMove project including:
1) an ability to write to the VFD (LFR)
2) an ability to read the voltage input on AI2
3) a configuration for AI3 to support PT100, but still, on TIA I cannot see anything related to temperature
 

Anhänge

This is a code snippet for my control routine of an ATV. It is important that only one command will be used, so that's why its an IF-ELSIF-construct. Can only handle one direction, but should be ok for starting.
Code:
IF #Read_Data.ETA = w#16#231 AND NOT #Start_CW THEN // Initial
            #Write_Data.CMD := w#16#0007;
    ELSIF (#Read_Data.ETA=w#16#250 OR #Read_Data.ETA=w#16#4250) AND NOT #Start_CW THEN // Stop after Initial
        #Write_Data.CMD := w#16#0006;
    ELSIF #Start_CW THEN // Start CW
        #Write_Data.CMD := w#16#000f;
    ELSIF #"Reset Inverter" AND NOT #Start THEN // Reset VFD
        #Write_Data.CMD := w#16#0080;
    ELSE // Stop if nothing specified
        #Write_Data.CMD := w#16#0006;
    END_IF;
Hi,

At the beginning of the code fragment, you begin the conditional statement (IF) with reading from the VFD (ETA word) then progress forwardly by writing to the VFD (CMD word). These two aspects reflect two different configurations for the MB_MODE where in the first, it must be set to 103 (to read the ETA info from the VFD) then the same MB_MODE must be set to 116 (to write the CMD word value).

How did you manage the MB_MODE setting for these two operations? Via a timer, eg, start a TON for 2 S and read (MB_MODE = 103), when done set MB_MODE to 116 and write, then cyclically redo the same loop?

Thanks in advance
 
Zurück
Oben