Hello! I'm currently working on incorporating IO Discrete tags into an AVEVA InTouch project (version 2020) that utilizes the MBTCP driver. These tags involve mapping bits in integer registers using the : address format (e.g. 401234:3 - which refers to bit 3 of modbus address 401234). While this setup works well for reading data, issues arise when attempting to write to these locations as InTouch employs Modbus Function #22 (MaskWriteRegister), which is not compatible with the PLC (DirectLogic DL6). After consulting with AVEVA support, they suggested referencing individual bits of an IO Integer tag instead. This method bypasses the use of Function #22 and allows for writing using the standard function #06 (Write Single Register) that is supported by the PLC. However, this approach limits the ability to create Discrete IO tags with alarms, as the individual bits are referenced within Animation Links like so: IntegerTag1.00 (indicating bit #0 of IntegerTag1). Is there a way to configure InTouch to directly write to individual bits of Modbus registers, enabling the creation of discrete read/write tags linked to specific bits of Modbus addresses, without resorting to creating integer tags and referencing bits in Animation Links? Previously, we utilized KepWare for PLC-InTouch communication, but I aim to streamline operations by relying solely on the AVEVA OI server. Short of switching out the PLC for one that supports Function #22, are there alternative methods for mapping Modbus integer registers to Read/Write Discrete Tags in InTouch? Your insights and suggestions are greatly appreciated. Thank you and best regards to all.
Do you have the capability to adapt the PLC program to utilize 0x registers for writing bit values instead of using integers? This corresponds to Function code 5, allowing for the use of discrete tags. Many users have traditionally employed the packed bit in an integer tag approach to conserve Intouch tag numbers and maximize functionality within a reduced license count. However, this method is not without its limitations, as you may have experienced.
In an AVEVA InTouch project (version 2020), I am trying to integrate IO Discrete tags using the MBTCP driver to map bits in integer registers using the : address notation (for example, 401234:3 - referring to bit 3 of modbus address 401234). While reading works smoothly, there is an issue with writing as InTouch triggers a Modbus Function #22 (MaskWriteRegister) that the PLC (DirectLogic DL6) does not support. After consulting with AVEVA support, it was suggested to reference the individual bits of an IO Integer tag to bypass Function #22 and use the supported function #06 (Write Single Register) for writing. However, this approach limits the creation of Discrete IO tags and alarms, as the bits are referenced within Animation Links like IntegerTag1.00 (referring to bit #0 of IntegerTag1). Is there a way to directly write to individual bits of Modbus registers in InTouch to create discrete read/write tags linked to specific bits of Modbus addresses, without using integer tags and referencing bits in Animation Links? We previously relied on KepWare for PLC-InTouch communication, but I aim to streamline the process by solely using the AVEVA OI server. Other than switching the PLC to one supporting Function #22, are there alternative methods to map Modbus integer registers to Read/Write Discrete Tags in InTouch? Any insight would be greatly appreciated.
I successfully resolved this issue by developing a specialized Modbus Bridge program that converts commands like Function 22 into compatible requests for Programmable Logic Controllers (PLCs) lacking such features. This method enables me to retrieve Modbus data using the corresponding InTouch tag categories (Discrete, etc) with full functionality. The software has been functioning flawlessly for more than a year now.
Hi there! It sounds like you're facing quite a challenge with the DirectLogic DL6's limitations. One alternative approach you might consider is using a combination of scripting within InTouch to create a custom solution for manipulating individual bits of your integer registers. You could set up a small script that reads the integer, modifies the specific bit, and then writes the updated value back using Function #06. This way, you retain the functionality of reading and writing directly to discrete bits without needing to create separate Integer tags for each bit. It might take a bit of initial setup, but it could streamline your workflow. I hope this helps!
✅ Work Order Management
✅ Asset Tracking
✅ Preventive Maintenance
✅ Inspection Report
We have received your information. We will share Schedule Demo details on your Mail Id.
Answer: AVEVA InTouch does not natively support direct writing to individual bits of Modbus registers. It is recommended to reference individual bits within IO Integer tags to bypass compatibility issues with certain PLCs.
Answer: To create discrete read/write tags linked to specific bits of Modbus addresses in AVEVA InTouch, you can reference individual bits within IO Integer tags and use Animation Links to access these bits.
Answer: If your PLC does not support Function 22, one alternative method is to reference individual bits within IO Integer tags and utilize Function 06 (Write Single Register) for writing, which is supported by most PLCs. This method may limit the ability to create discrete IO tags with alarms, as bits are referenced individually.
Join hundreds of satisfied customers who have transformed their maintenance processes.
Sign up today and start optimizing your workflow.