Multiple Modbus Read Registers Access by an Array of Elements



  • (I posted this on CODESYS Forum without any suggestions or help)...

    Hi,
    I need to read about 250 UDINT via Modbus in Slave mode. A SCADA manages this data and write via Modbus remotely to my controller.
    So inizially I configured on my controller a modbus slave device. Due to Modbus limitations I configured 4 channel in Read Holding Registers mode with an array of 125 elements (500 elements in total of WORD type).
    In a GVL I defined an array of 250 elements of UDINT type poiting at the starting address of the input registers, beginning at %IW60.
    Finally in my application program I used the array poiting values I need directly by index.
    Is it the right way or maybe there is a quite simpler or "more readable" and canonical method?
    See pictures I added to this post.
    Many thanks!

    0_1523962519242_CODESYS_ModbusSlave_1.PNG

    0_1523962402773_CODESYS_ModbusSlave_2.PNG

    0_1523962406362_CODESYS_ModbusSlave_3.PNG



  • @mikeardy
    Consider this as an alternative. I've created 500 holding registers
    0_1524082533025_img1.png
    In my program (it could be ina GVL) I have created an addary of 250 UDINT.
    0_1524082629032_img2.png
    Then I was able to map all of the registers in one go
    0_1524082699632_img3.png

    For generic CODESYS questions I suggest trying https://forum.codesys.com/, for many generic CODESYS questions there will already be an answer posted.