danilo sbardellotto
Level-2
- Beiträge
- 7
- Reaktionspunkte
- 3
-> Hier kostenlos registrieren
Guten Nachmittag allerseits
Folgendes Problem:
VB Skript TP1500 TIA V17 DWOR in 2 WORD (UINT) aufteilen
TIA V17 Update 2
TP1500 Comfort Panel
CPU 1516-3 PN/DP
Für die HMI Meldungen DWORD per VB Skript in 2 WORD's (UINT1 & UINT2) aufteilen, damit ich sie überhaupt verwenden kann im Meldesystem.
In der Steuerung ist meine Meldevariable als DWORD vorhanden, für die HMI Meldungen muss die Variable allerdings im WORD Format sein.
Wenn ich nur einzelne Bits auslesen musste habe ich mir folgendermassen beholfen:
Function wResultMsgAO(ByValdwTag)
Dim bit0, bit1, bit2, bit3, bit4
Dim wlResult
Dim dwlTag
dwlTag = dwTag
bit0 = dwlTagAnd (2^10)
bit1 = dwlTagAnd (2^23)
bit2 = dwlTagAnd (2^24)
bit3 = dwlTagAnd (2^25)
bit4 = dwlTagAnd (2^26)
wlResult = 0
If bit0 Then
SetBitInTag wlResult,0
End If
If bit1 Then
SetBitInTag wlResult,1
End If
If bit2 Then
SetBitInTag wlResult,2
End If
If bit3 Then
SetBitInTag wlResult,3
End If
If bit4 Then
SetBitInTag wlResult,4
End If
wResultMsgAO = wlResult
End Function
Die benötigten Bits in einen lokalen UINT geschrieben und dieses im als Triggervariable verwendet.
Nun muss ich aber alle Bits vom DWORD haben, also eine Aufteilung in zwei lokale UINT1 und UINT2.
Lösungsansatz gleich wie oben hat nicht funktioniert.
bit0 = dwlTagAnd (2^0)
bit1 = dwlTagAnd (2^1)
bit2 = dwlTagAnd (2^2)
bit3 = dwlTagAnd (2^3)
bit4 = dwlTagAnd (2^4)
bit5 = dwlTagAnd (2^5)
bit6 = dwlTagAnd (2^6)
bit7 = dwlTagAnd (2^7)
bit8 = dwlTagAnd (2^8)
bit9 = dwlTagAnd (2^9)
bit10 = dwlTagAnd (2^10)
bit11 = dwlTagAnd (2^11)
bit12 = dwlTagAnd (2^12)
bit13 = dwlTagAnd (2^13)
bit14 = dwlTagAnd (2^14)
bit15 = dwlTagAnd (2^15)
und in der zweiten Funktion:
bit0 = dwlTagAnd (2^16)
bit1 = dwlTagAnd (2^17)
bit2 = dwlTagAnd (2^18)
bit3 = dwlTagAnd (2^19)
bit4 = dwlTagAnd (2^20)
bit5 = dwlTagAnd (2^21)
bit6 = dwlTagAnd (2^22)
bit7 = dwlTagAnd (2^23)
bit8 = dwlTagAnd (2^24)
bit9 = dwlTagAnd (2^25)
bit10 = dwlTagAnd (2^26)
bit11 = dwlTagAnd (2^27)
bit12 = dwlTagAnd (2^28)
bit13 = dwlTagAnd (2^29)
bit14 = dwlTagAnd (2^30)
bit15 = dwlTagAnd (2^31)
Bit16 bis Bit31 wurden nie angezeigt, immer 0-en obwohl Bits gesetzt waren, bei bit0 bis bit15 funktionierte es teilweise bis auf bit15. Manchmal ging es und z.B. nach einer Simulation neu starten dann nicht mehr.

Weiterer Lösungsversuch:


Oder

Funktioniert aber alles nicht.
Gibt es hier jemanden der sich mit VB Skript in im TIA auskennt und einen Tipp hat wie man das lösen kann?
Besten Dank im Voraus
Gruss Danilo
Folgendes Problem:
VB Skript TP1500 TIA V17 DWOR in 2 WORD (UINT) aufteilen
TIA V17 Update 2
TP1500 Comfort Panel
CPU 1516-3 PN/DP
Für die HMI Meldungen DWORD per VB Skript in 2 WORD's (UINT1 & UINT2) aufteilen, damit ich sie überhaupt verwenden kann im Meldesystem.
In der Steuerung ist meine Meldevariable als DWORD vorhanden, für die HMI Meldungen muss die Variable allerdings im WORD Format sein.
Wenn ich nur einzelne Bits auslesen musste habe ich mir folgendermassen beholfen:
Function wResultMsgAO(ByValdwTag)
Dim bit0, bit1, bit2, bit3, bit4
Dim wlResult
Dim dwlTag
dwlTag = dwTag
bit0 = dwlTagAnd (2^10)
bit1 = dwlTagAnd (2^23)
bit2 = dwlTagAnd (2^24)
bit3 = dwlTagAnd (2^25)
bit4 = dwlTagAnd (2^26)
wlResult = 0
If bit0 Then
SetBitInTag wlResult,0
End If
If bit1 Then
SetBitInTag wlResult,1
End If
If bit2 Then
SetBitInTag wlResult,2
End If
If bit3 Then
SetBitInTag wlResult,3
End If
If bit4 Then
SetBitInTag wlResult,4
End If
wResultMsgAO = wlResult
End Function
Die benötigten Bits in einen lokalen UINT geschrieben und dieses im als Triggervariable verwendet.
Nun muss ich aber alle Bits vom DWORD haben, also eine Aufteilung in zwei lokale UINT1 und UINT2.
Lösungsansatz gleich wie oben hat nicht funktioniert.
bit0 = dwlTagAnd (2^0)
bit1 = dwlTagAnd (2^1)
bit2 = dwlTagAnd (2^2)
bit3 = dwlTagAnd (2^3)
bit4 = dwlTagAnd (2^4)
bit5 = dwlTagAnd (2^5)
bit6 = dwlTagAnd (2^6)
bit7 = dwlTagAnd (2^7)
bit8 = dwlTagAnd (2^8)
bit9 = dwlTagAnd (2^9)
bit10 = dwlTagAnd (2^10)
bit11 = dwlTagAnd (2^11)
bit12 = dwlTagAnd (2^12)
bit13 = dwlTagAnd (2^13)
bit14 = dwlTagAnd (2^14)
bit15 = dwlTagAnd (2^15)
und in der zweiten Funktion:
bit0 = dwlTagAnd (2^16)
bit1 = dwlTagAnd (2^17)
bit2 = dwlTagAnd (2^18)
bit3 = dwlTagAnd (2^19)
bit4 = dwlTagAnd (2^20)
bit5 = dwlTagAnd (2^21)
bit6 = dwlTagAnd (2^22)
bit7 = dwlTagAnd (2^23)
bit8 = dwlTagAnd (2^24)
bit9 = dwlTagAnd (2^25)
bit10 = dwlTagAnd (2^26)
bit11 = dwlTagAnd (2^27)
bit12 = dwlTagAnd (2^28)
bit13 = dwlTagAnd (2^29)
bit14 = dwlTagAnd (2^30)
bit15 = dwlTagAnd (2^31)
Bit16 bis Bit31 wurden nie angezeigt, immer 0-en obwohl Bits gesetzt waren, bei bit0 bis bit15 funktionierte es teilweise bis auf bit15. Manchmal ging es und z.B. nach einer Simulation neu starten dann nicht mehr.

Weiterer Lösungsversuch:


Oder

Funktioniert aber alles nicht.
Gibt es hier jemanden der sich mit VB Skript in im TIA auskennt und einen Tipp hat wie man das lösen kann?
Besten Dank im Voraus
Gruss Danilo