There can be many possible reasons that lead to communication error. First of all, make sure that nothing in your program code is writing to the COMM1 port (using statement such as PRINT, OUTCOMM, NETCMD$, READMODBUS or WRITEMODBUS, etc).
Are you using a lot of interrupt based functions in the PLC such as Stepper motor or high speed counters. When generating high stepping rate or receiving high frequency signal the CPU spend most of its time servicing such task and less time in servicing the RTU. The RTU master may consider that the comm has failed if it did not receive a response within a short period of time. Try to change the timeout value in the HMI if possible. Also try to add time delay between each communication message exchange between the HMI and the PLC. Also if there is a COMM error, set the HMI to automatically back off for a while before attempting to communicate again. Usually the HMI can recover from an occasional COMM error without breaking up with a COMM error message.
You may also want to use the SETPROTOCOL command to set the COMM1 to permanent RTU protocol so that it always respond to MODBUS RTU only. This may help. However, note that if you use the SETPROTOCOL command then the COMM1 port will not respond to TLServer and you will not be able to use it for programming or on-line monitoring anymore. It will be good to use a special input to SETPROTOCOL the COMM1 back to native mode in order to do programming.