I would only watch the word, then in the HMI look at the bits, here's an example:
Private Sub Alarm_Triggers_DS_DataChanged(sender As Object, e As Drivers.Common.PlcComEventArgs) Handles Alarm_Triggers_DS.DataChanged
For i = 0 To Alarm_Triggers_DS.PLCAddressValueItems.Count - 1
Dim Binary_Offset As Integer
Binary_Offset = i * Binary_Length
If e.PlcAddress = "HMI_Alarm_Array[" & i & "]" Then
For b = 0 To Binary_Length - 1
If (e.Values(0) And (1 << b)) <> 0 Then
MsgBox(b + Binary_Offset) 'This will return the alarm number in the array
End If
Next
End If
Next i
End Sub
Binary length is 16, 32, etc.
Binary offset is the word in the array, I think I have 10 DINTs in my array
You can look at individual bits but that is a lot of extra communication when all you need is the word.
James