First of all, it's a pleasure to join this community, I already have a few years of exp in this sector but never registered on a plc forum, so thanks in advance for any help or advice provided.
Well, getting in the matter, right now I am working on a project where I need to do measurements in real time, or at least, get readings the fastest way I can achieve.
I am working with 4 servos that are working in Isochronous mode + a fast analog card also with enabled isochronous mode and a 1515F-2 PN cpu.
I know a bit about real time aplications and I am aware of the limitations of code length and optimization needed in order to achieve faster cycle times, but as I have 4 servos, the technological functions are all linked to OB91 (MC-Servo), with runs in isochronous mode at a 6ms rate, analog card is also read within the same rate assigning the same PIP as the OB91 and called from the OB61 (synchronous cycle)
My problem arises when I want to reduce even further this cycle time, as I need to get to 1/2ms if possible.
Normal cycle time scan from OB1 is at 40ms since most processing power is dedicated to the RT measurements, this is not a problem and can be extended more if needed since the only important part is to take the measurements correctly. Problem is that I cannot split the OB91 work to only read and execute functions from one servo and run another instance at a different rate to control the other servos in order to reduce the overall load.
This makes the cpu manage all servos at the same time using the OB91 and if I try to reduce the scan rate below 5ms (both on ob91 and ob61 because they need the same rate in irder to read simultaneously) then I get syncronous communication errors and servos go to error.
Do I need a more powerful cpu? I really only need to read an analog signal + one encoder position from one servo... since I enabled isochronous operation things started to work pretty well but I needed to improve it a little more.
I tried to reduce the percentage of reserved cpu for communication processes but I achieved nothing, code executed on OB61 is already optimized and minimal, but it seems the servo block that is protected with know how is slowing all down. Next step would be to replace the cpu for a more powerful one but I want to avoid that step since delivering times are very hight right now.
I know much people may not have experience with real time applications, but any advice would be very appreciated.
Well, getting in the matter, right now I am working on a project where I need to do measurements in real time, or at least, get readings the fastest way I can achieve.
I am working with 4 servos that are working in Isochronous mode + a fast analog card also with enabled isochronous mode and a 1515F-2 PN cpu.
I know a bit about real time aplications and I am aware of the limitations of code length and optimization needed in order to achieve faster cycle times, but as I have 4 servos, the technological functions are all linked to OB91 (MC-Servo), with runs in isochronous mode at a 6ms rate, analog card is also read within the same rate assigning the same PIP as the OB91 and called from the OB61 (synchronous cycle)
My problem arises when I want to reduce even further this cycle time, as I need to get to 1/2ms if possible.
Normal cycle time scan from OB1 is at 40ms since most processing power is dedicated to the RT measurements, this is not a problem and can be extended more if needed since the only important part is to take the measurements correctly. Problem is that I cannot split the OB91 work to only read and execute functions from one servo and run another instance at a different rate to control the other servos in order to reduce the overall load.
This makes the cpu manage all servos at the same time using the OB91 and if I try to reduce the scan rate below 5ms (both on ob91 and ob61 because they need the same rate in irder to read simultaneously) then I get syncronous communication errors and servos go to error.
Do I need a more powerful cpu? I really only need to read an analog signal + one encoder position from one servo... since I enabled isochronous operation things started to work pretty well but I needed to improve it a little more.
I tried to reduce the percentage of reserved cpu for communication processes but I achieved nothing, code executed on OB61 is already optimized and minimal, but it seems the servo block that is protected with know how is slowing all down. Next step would be to replace the cpu for a more powerful one but I want to avoid that step since delivering times are very hight right now.
I know much people may not have experience with real time applications, but any advice would be very appreciated.
Last edited: