Beta Testing Context
Thank you for helping test the native Ignition Mitsubishi drivers. This is a tight window (April) as we are aiming for production release in 8.1.28 (May 30th). Please provide feedback here as soon as you have it. Non-bug feature requests will be most actionable in the first few weeks of April.
April 3rd. Beta Release. Set up your Mitsubishi hardware now!
April - ~May 1st Beta Test Window.
May 12th Code freeze for final QA/release (8.1.28). Changes must be complete.
May 30th Production Ignition release of 8.1.28 with Mitsubishi driver included.
Beta Testing Instructions
-
Download and install the latest 8.1.27 Nightly (dated Apr 3rd or later).
-
Download and install the latest Mitsubishi Driver module
Mitsubishi-Driver.modl (678.7 KB)
Mitsubishi TCP Driver
The Mitsubishi TCP driver provides a user interface in the Gateway where you can create, import, and export addresses when connected to devices that support the MELSEC protocol. After setup, configured tags will be browsable in the OPC Browser of the Designer with read/write access. Supported Hardware Series include:
- iQ-R
- iQ-F (FX5U)
- Q
- L
Connect to Mitsubishi devices
Before you can connect your Mitsubishi device to this driver, make sure your GX Works software settings meet the driver requirements. Detailed setting requirements are included in the GX Works Configuration section.
- Navigate to Config > OPC UA > Device Connections on the Gateway Webpage.
- On the Devices page, click on Create new Device.
- Select Mitsubishi TCP, and click Next.
- Fill in the Name field. Entering a description is optional.
- Select the MELSEC series you will be connecting to using the dropdown. Options include iQR, Q, and L.
- Enter the device hostname in the Hostname field.
- Enter the device port in the Port field.
Note: Be aware that because Q/L and iQ-R Series allow only one SLMP client connection per unique TCP port, a connection attempt on an already established port will be refused by the PLC.
8. Enter the local address of the network adapter to connect from. This is necessary if you have multiple network cards and you need to specify the particular network card that has PLC access.
9. Leave the default values in the remaining fields.
10. Click Create New Device.
The Devices page now displays the Mitsubishi TCP device is successfully connected.
Device Settings
General | Description |
---|---|
Name | Device name |
Description | Device description |
Enabled | If true, attempt connection to the device, default is true |
Main | Description |
Series | The series of the Mitsubishi device. Default is iQR |
Hostname | The IP Address of the device |
Port | The port the device is listening on |
Local Address | Address of network adapter to connect from |
Timeout | The request timeout, specified in milliseconds with a valid range from 0 to 16383750. Default is 5000 |
Request Optimization | Description |
Max Gap Size | The maximum address “gap” to span when optimizing requests to contiguous address locations. Increasing the max gap size will reduce the number requests but increase the amount of data requested. Default is 0. |
Write Priority Ratio | The number of write requests to execute for every read request when an abundance of both types are queued up for execution. Default is 5. |
Addressing
You can add addresses by entering the Tag Path and Address information individually or importing a CSV file containing a list of addresses to upload at once. The addresses page is setup to read three areas of address information to create tags:
- Tag Path: This is what will appear as the tag name.
- Address: This is the device, offset, and additional specifications to find desired values.
- Description: This is an optional field to help in identifying displayed values.
To access the addresses page on the Gateway:
-
Go to the Config > OPC UA > Device Connections.
-
Click the More dropdown and choose addresses on your Mitsubishi device.
Adding Individual Address Rows
Even if you are planning to import multiple addresses using a CSV file, it’s recommended to first enter a single tag address to test if your connection is working as expected.
To enter addresses:
- Click Add Row to populate rows for address information.
- Enter Tag Path field and Address field information. Enter Description information as desired.
Note: All components are case-insensitive. - Continue adding rows and address information until you’ve added all the addresses you want to be available as tags.
- Click Save Configuration when you are finished.
Importing and Exporting
To Import a CSV file:
- Select Load Configuration File on the device address page.
- Select Choose File.
- Locate the CSV file you want to upload and select it to open.
Note: Make sure a comma separates column information, and if your Description column includes commas, use quotes to prevent misinterpretations when uploading. - Select the Append to current configuration box if you already have addresses listed and you want to add on to them. Leave unchecked if you want to replace existing rows.
- Click Load.
Note: If an existing address shares a tag name with an address imported by the CSV file, it will be replaced with the imported address.
- Click Save Configuration.
Click the Export Configuration icon to download the existing address rows as a CSV file.
Determining Addresses
The Mitsubishi driver requires Area and Offset address components, but also allows many optional specifications. It’s important to know where the optional components must be placed in your address to properly connect. The example syntax below shows how optional data type (including modifiers) and array specifiers are listed before the Offset specification and the optional array element index and bit index must be listed after the Offset specification.
Note: This page uses the term Area to describe the address component that identifies the PLC device to eliminate confusion with other sections of this page, such as the Device Settings which applies to the Ignition Mitsubishi driver.
Example syntax, where optional components are included in curly brackets
Area{<DataType{[array]}>}Offset{.Bit}
Areas (Devices)
The following table shows the device keyword recognized by the driver as well as the native type of each device. Extended Data Registers and Extended Link Registers are currently not supported.
Device Name Keyword Type
Special relay SM Bit
Special register SD Word
Input X Bit
Output Y
Internal relay M
Latch relay L
Annunciator F
Edge relay V
Link relay B
Step relay S
Data register D Word
Link register W
Timer Contact TS Bit
Coil TC
Current value TN Word
Long timer* Contact LTS Bit
Coil LTC
Current value LTN Double word
Retentive timer Contact STS Bit
Coil STC
Current value STN Word
Long retentive timer* Contact LSTS Bit
Coil LSTC
Current value LSTN Double word
Counter Contact CS Bit
Coil CC
Current value CN Word
Long counter* Contact LCS Bit
Coil LCC
Current value LCN Double word
Link special relay SB Bit
Link special register SW Word
Direct access input DX Bit
Direct access output DY
Index register Index register Z Word
Long index register* LZ Double word
File register Block switching method R Word
Serial number access method* ZR
Refresh data register* RD Word
*Not available for Q/L series
Offsets
The Mitsubishi driver supports reading/writing data types larger than the area’s native type by combining bytes from adjacent offsets into a single value. For example, each Data Register (D) point is natively a word (16-bit), but reading D0 requests bytes for D0 and D1 and combining the bytes into a signed 32-bit value.
The Mitsubishi driver does not support reading/writing data types smaller than the area’s native type. For example, each Long Index Register (LZ) point is a double word (32-bit) which means LZ0 and LZ0 cannot be specified.
Some areas in particular cannot be combined and specific data types corresponding to its native type must be specified:
- Any area having a native type of Bit
- Any area having to do with Current value, such as:
- TN
- LTN
- STN
- LSTN
- CN
- LCN
String Request Considerations
When specifying a string data type, the length of the string must also be specified on the address. For example, D0 requests a string of up to 10 characters at offset 0 in the data register device.
- If the length of the string is less than the address string length, it will be padded with null characters. For example, writing “hello” to D is equivalent to writing “hello\0\0\0\0\0” where “\0” are null characters.
- If the length of the string is more than the address string length, it will be truncated to the address string length. For example, writing “hello world!” to D is equivalent to writing “hello worl”.
For the Q/L series, the string length will be automatically rounded up to the nearest even value. This is because two characters are stored inside a word. For example, D0 will be treated as D0.
Optional Data Types
The following data types are recognized by the driver:
Bool | Int16 | Int32 |
---|---|---|
Int64 | UInt16 | UInt16 |
UInt64 | Float | Double |
String |
If the data type is omitted, a default data type will be used depending on the area’s native type:
Area Native Type | Default Data Type |
---|---|
Bit | bool |
Word | int16 |
Double word | int32 |
Optional Data Type Modifiers
Attribute | Order |
---|---|
@BE | Big Endian Byte Order |
@LE | Little Endian Byte Order (default when not specified) |
@HL | High-Low Word Order (default when not specified) |
@LH | Low-High Word Order |
Optional Arrays
Arrays are a concept created within the driver representing a contiguous range of addresses starting from an offset. Arrays do not exist in the PLC.
For example, instead of reading D0 through D8, you can create an array of the same values. The number of elements in an array are determined by multiplying the array dimensions. So reading D<int16[3, 3]>0 is a length of 3x3 with the start offset is 0 and the last offset is 8.
Similarly, reading an element within an array is equivalent to reading a single address. For example, you can see in the table above that reading D<int16[3, 3]>0[1][2] is equivalent to reading D5.
D[0][0] = D0 | D[0][1] = D1 | D[0][2] = D2 |
---|---|---|
D[1][0] = D3 | D[1][1] = D4 | D[1][2] = D5 |
D[2][0] = D6 | D[2][1] = D7 | D[2][2] = D8 |
Large arrays should be used with caution. If an array read/write request is too large to fit into a single request, it will be broken up into multiple non-atomic sequential requests. Splitting requests when writing can result in the first send of the write requests creating new values and the remaining write requests failing. Similarly, if read requests are sent separately the resulting array may contain stale points.
Determining if an array is too large to be sent at the same time on how the array is optimized. Optimization refers to the process of minimizing the number of requests sent to the PLC by batching together device points with the goal to fit as many points as possible into a single request before splitting it off into multiple requests. Request optimization happens automatically when points are read or written to at the same time.
Optional Bit Index
A bit index can be specified on any integer data type to retrieve a boolean value at some bit position. Addresses with a bit index are read-only and any attempts to write to them will result in a Bad_NotSupported error due to the MELSEC protocol not supporting atomic writes to bits within an underlying data type.
A simple example of reading a bit would be D0.0, which reads the bit0 of int16 at offset 0. You can also read bits within array elements that represent scalar values following the same addressing format. To read the bit 0 of element 0 of an array of length 4 at offset 0 would be D<int16[4]>0[0].0
A bit index cannot be specified for the following:
- Non-integer data types (bool, float, double, and string)
- Non-scalar addresses (arrays)
GX Works Configuration
GX Works is the programming software designed for Mitsubishi PLCs. Before you can use the Mitsubishi driver, some configurations need to be made in GX Works when connecting to MELSEC-Q/L and iQ-R series devices with the Mitsubishi driver. These instructions are written for GX Works3. GX Works2 has slightly different settings but should in general resemble the following setting requirements.
- Under the navigation tab, locate Parameter > CPU > Module Parameter > Basic Settings > Own Node Settings.
- Set Enable/Disable Online Change to Enable All (SLMP).
- Set Communication Data Code to Binary.
- Navigate to External Device Configuration > Detailed Setting to add an SLMP Connection Module to the Ethernet Configuration with Protocol set to TCP.
- Make sure to also identify the IP Address and Port No. These settings are what will be used for the Mitsubishi TCP driver Hostname and Port connection fields.
Note: If multiple connections to the PLC are required, multiple SLMP Connection Modules will need to be defined, each with its own unique Port No. - Write all changes to the PLC (Online > Write to PLC) and initiate a power cycle.
Configuring Device Points
Some areas or offsets within an area may not be accessible by default unless additional memory is allocated.
- Navigate to Parameter > CPU > CPU Parameter > Memory Device Setting > Device/Label Memory Area Setting > Detailed Setting.
- Change Points to desired size. The point allocation from all areas must not exceed the Total Device size.
- Click Apply.
- Write to the PLC (Online > Write to PLC) and initiate a power cycle.
Using GX Works3 to Troubleshoot
If you have access to GX Works3, you can use the Device/Buffer Memory Batch Monitor feature to test or troubleshoot your connection. This can be found under Online > Monitor > Device/Buffer Memory Batch Monitor. Type in the device keyword with an offset and hit enter to begin monitoring values.
GX Works also has an Ethernet Diagnostics tool which is useful for determining the status of the connection as well as other information like IP Address, Port No, and Latest Error Code. To access this tool, navigate to Diagnostics > Ethernet Diagnostics.