====== Device Addressing ======
In this section //device// refers to the PLC or MCU that is connected to the ComfileHMI hardware.
The ComfileHMI needs to know the address of the device in order to communicate with it.
In each widget's property page, the device's address space can be configured.
{{ :comfilehmi:hmieditor_address:device_address.png?nolink |}}
Pressing the //..// button will open the following window where device and device address can be bound to the widget.
{{ :comfilehmi:hmieditor_address:addressinput.png?nolink |}}
The address value must expressed in the format ''DeviceID:Address''.
* **If the address is left blank, there will be no communication with the device**
===== Data Types for Word Addresses =====
Word Addresses can be used to read/write data 16-bit signed and unsigned integers, 32-bit signed and unsigned integers, and 32-bit floating point values.
{{ :comfilehmi:hmieditor_address:datatypes.png?nolink |}}
The following code can be used in CUBLOC devices to store floating point values in the Modbus registers. The example below stores the floating point value //Value// into the two adjacent 16-bit registers //D0// and //D1//.
#include "MSB6XX"
Opencom 1,115200,3,1024,1024
Set Modbus 1,1,20
Set Ladder On
Dim Value As Single
Value = 3.14
Dim Bytes As Long
Bytes = 0
Do
Value = Value + 0.01
Debug Fp(Value, 3, 2), Cr
' Store floating point Value To D0 And D1
Bytes = Peek(Memadr(Value), 4)
_D(0) = Bytes.Word0
_D(1) = Bytes.Word1
Delay 1000
Loop
The example below demonstrates how to convert two adjacent 16-bit registers, //D0// and //D1//, back to a floating point value
' Load Bytes with the raw byte data of D0 and D1
Bytes.Word0 = _D(0)
Bytes.Word1 = _D(1)
' Load Value with the raw byte data stored in Bytes
Poke Memadr(Value), Bytes, 4
===== Address Offset =====
An offset can be added to an address in the form of an [[:comfilehmi:hmieditor_susik:index|expression]] to have the address dynamically computed.
{{ :comfilehmi:hmieditor_address:offset1.png }}
{{ :comfilehmi:hmieditor_address:offset2.png }}
[[comfilehmi:index#screens| Back to ComfileHMI]]