Send a co-worker an invite to the portal.Just enter their email address and we'll connect them to register. After joining, they will belong to the same company.
You have entered an invalid email address. Please re-enter the email address.
This co-worker has already been invited to the Exchange portal. Please invite another co-worker.
Please enter email address
Send InviteCancel
Invitation Sent
Your invitation was sent.Thanks for sharing Exchange with your co-worker.
Using the M580 DTM browser it slightly frustrating since even the slightest change like adding or renaming a generic modbus TCP variable in a request results in a build offline requirement.
I can understand that when changing modbus addresses or RD/WR lengths triggers a build offline but working within a already defined request should definitely be allowed with online change.
I'm thinking about how this worked in the older Premium/M340 system where defining something in the I/O scanner triggered a offline build but once the data was in the %MW area you could do what you want with it using normal program changes online.
In a large plant you don't want PLC stops all the time for even the smallest communication changes so in this manner I think the M580 way is a huge step backwards and makes it very hard to use a M580 for a larger plant.
So I would like to propose that doing changes inside a already defined modbus request should be allowed using just a online build of the changes.
Maybe it could be done using a slightly extended program/task cycle like some other PLC manufacturers do bigger changes instead of forcing a complete program stop?
what you mentioned is one of the disadvantages of DTM with M580 , but you can use read_Var or write_var functions which are very efficient besides the possibility of the online change
Yes of course I know that but having to manually code the communication is not a modern and user friendly way of doing it 😞 I use these for handling single "one of a kind" devices which might require modbus functions other than 3/16/23. When dealing with like 50 equal inverters I don't want to do it with 2x FB for each. And I don't think the efficiency of using those come close to using the I/O scanning/DTM browser either.
@dnordenberg1 and @Mnabil Another approach is to use READ_remote and write_remote. These are tag based function blocks rather than memory based operations. It is limited to 500 words per instruction, but you could create an array of inverters and read one array provided the structure was the same at the source and the destination and it was less that 500 words in size.
It is also possible to make changes to DTMs (add, remove or modify) in a hot standby system. The initial configuration must include HSBY_BUILD_OFFLINE function block in the first section of logic and the parameters must not be exchanged via the hot standby link.
It can scale you have the ability to allocate 14 variables to the one function block. Each variable would be one drive. It would be possible to use 8 instructions for 60 drives (4 read and 4 write) and 12 instructions for 180 drives. More manageable than read_Var write_var but it has its limits.
I also have like 20 STB and other similar remote IOs so 14 variables is way to limited 😞
We solved this by not using the scanned variable naming at all and just read the data from the "Free" tree on each remote device. But still you have to rebuild everything when adding a new device or removing one 😞
Is this V17 functionality limited to this new generation remote IO or will it be available across the whole DTM browser usage for any ethernet/IP or modbus TCP device?
@dnordenberg1 and @Mnabil Another approach is to use READ_remote and write_remote. These are tag based function blocks rather than memory based operations. It is limited to 500 words per instruction, but you could create an array of inverters and read one array provided the structure was the same at the source and the destination and it was less that 500 words in size.
Can you elaborate a little more how can I read/write from third party devices using those blocks. I thought those blocks are only used for data exchange between CPUs. How would one read from inverter? What would be the variable names in the inverter that you would put as an input to the block?
I looked in the linked manual and I do not see anything about it.