Hej! Jag har problem med att hämta ett värde som i min PLC är deklarerad som TIME För att kunna svara på detta behöver vi veta vilken PLC dialekt du använder/märket på PLC eller ännu bättre specen för data typen TIME om du har nån manual Hittade nån manual som verkade stämma med värdet T#0ms. Där står att det är en positiv 32bit och motsvarande datatyp i .Net är då UInt32 - UInteger Jag kör med Beckhoffs TwinCAT. Inte riktigt samma... den jag hittade var TIME angivet helt i ms Du behöver plocka ut den som en String och sedan maska fram värdet för dag, timme, minut och ms och sen skapa en DateTime typ för att använda i .Net miljön. något fungerar iaf. för jag får in en nolla i min textbox. men den ändrar sig inte när värdet ändras i PLC:n jag kan inte heller ändra den från mitt program i vb.net Har du någon aning om vad det kan bero på? Om du plockar ut den som en string istället kommer du antagligen se T#0ms och sen när den ändras (tex) T#253ms vet ju inte riktigt hur PLC programmet fungerar men risken är att du kommer få värden som T#5s156ms, men får du inte det så är det enklare. hm..programmet stängs bara ner ändå utan någo felmeddelande. jag gjorde en ny kod och såhär ser koden ut nu. du kasnek ser något fel. låter underligt att det stänger ner utan felmeddelande ... Du menar så här eller? Ja Nu stängs det inte ner. Men det visas inget i textboxen nej... så det är något problem med hämtningen. Vilket jag gör precis överallt i mitt program där det inte är några problem. väldigt mysko. Test om Fungerar inte heller faktiskt. visar bara en tom textbox när jag ska skriva i den så stängs programmet bara ner utan något felmeddelande. oj! nu glömde jag att deklarera om variablen till Uinteger. så nu visar textboxen "100" hur går jag vidare nu då? och vad var fel? TIME representeras som en DWORD/UInt i PLC där av att vi inte kunde ta en sträng, den texten som stod där handlar om hur man skall skriv i PLC för att tilldela den nya värden. tyvärr hämtar den fortfarande bara 0. Då även om jag ändrar i PLC:n istället innan jag startar prgrammet. så ajg vet inte riktigt vart han får nollan ifrån. går heller inte att skriva nytt värde till plc:n. Värdet lagras som ms men när man deklarerat en variabel som TIME typ så presenterar systemet värdet formaterat i m s ms etc. Råvärdet är dock fortfarande lagrat i ms. ok.. Och hur menar du att jag ska göra då? Bra Jan, det hade jag aldrig hittat! ok ok. Men hur skriver jag det i .NET? jag får bara massa fel Du får ju så klart skriva om den lite så den passar vb.net ja jag är ju rätt så trög när det gäller det här så du får nog förklara lite mer. jag lägger in det du skrev i koden men vad skriver jag här då? ok tack så mycket. ok. nu har jag lyckats komma så långt att jag kan ändra värdet i plc:n och det ändras också i textboxen. men itne till det värdeet ajg vill ha. När ajg skriver "1" i plc:n så får jag "16777216" i textboxen. vad beror det på? samtidigt när jag vill skriva in ett nytt värde från min textbox till plc:n så ändras värdet till en nolla. Nu visar textboxen bara en nolla även om det står ett annat värde i plc:n och det går fortfarande inte att ändra värdet genom textboxen. Jag har en timer där som hämtar värdet om och om igen och så fort ajg skriver in något nytt visar den bara en nolla. hm märkligt fel det här. Kan det ev ha något att göra med att TcClientSync.ReadVar returnerar en variant japp! så här gör jag: nu snurrade jag till det, den första där du läser skall det stå varTime2. nåt annat är fel.... Hehe ja det här var itne lätt. Ändrade det nu men det fungerar ändå inte. Står bara en nolla av någon anledning. Det finns ju ingen nolla någonstans eller? i plc:n står det ju "HMI_TestTid=T#2ms" försöker en sista gång, testa att byt ut till en annan reverse funktion: Jag tror din kod säkert fungerar. det måste vara något annat. vad jag än gör så hämtar den bara en nolla som jag inte fattar vart den får den ifrån. Det är jättekonstigt. Om du bara gör så här: Angående: "När ajg skriver "1" i plc:n så får jag "16777216" i textboxen. vad beror det på?" Hur kollar jag om VarTime Har något? För att kolla värdet kan du t ex stega igenom koden i debuggläge. ok jag tog bara med det viktigast. Testade vad du sa och mycket riktigt fick jag upp ett fel på en timer som sakerna ligger i som var: "Error: Object reference not set to an instance of an object" men här har du hela koden: nu serdet lite mysko ut när många har samma hmi variabel. men de är bortkommenterade i mitt program så länge innan jag fått de riktiga. När du stegar igenom "ReadPlcValueTest", på vilken rad blir det fel (när hoppar den till Catch-rutinen)? På den här raden: när jag håller på VarTime så innehåller den "nothing" står det. så det fungerar ju inte riktigt där. Disabla Timer1 så att den inte generarar några Ticks och så att inte "Private Sub Timer1_Tick(..." körs. jag kopierade namnet igen så det är helt säkert att namnet är rätt. Ok, jag uppfattade det som att du hade ett generellt problem att läsa från PLCn. när jag byter till Dword i plc:n så får VarTime rätt värde. så kopplingen fungerar helt felfritt. Antar att TIME inte fungerar alls då? Ok, jagfattar itne ritkigt hur jag ska göra med det här: "Byt ut &H4020 mot rätt adress" vilken adress?? hur hittar jag min PLC variabel? Ang "Byt ut &H4020 mot rätt adr" så lär du nog kolla lite i TwinCat-manualerna hur adressminnena är specificerade. Jag har pratat med lite annat folk nu också och tydligen så ska det inte fungera att göra så här. Ingen som vet hur iaf. Däremot går det att göra omvandlingen i PLC:n så det har vi gjort nu. Tack ändå ni som försökte! :) Bra att det löste sig, nu kanske du även kan markera tråden som löst.Problem med att hämta värde deklarerat som TIME!
vi säger att variablen heter "TestTid"
så här deklareras den i min PLC:
TestTid: TIME;
"TestTid" skrivs såhär i PLC:n:
TestTid = T#0ms
Hur dekalrerar jag en variabel (i det här fallet " VarInstOklangd ") i vb.Net som kan hämta den tiden?
så här ser det ut när jag hämtar en variabel i vb.net från PLC:
VarInstOklangd = TcClientSync.ReadVar(".HMI_lrJustBitBak")
lblInstOklangd.Text = CDec(VarInstOklangd)Sv: Problem med att hämta värde deklarerat som TIME!
Sv:Problem med att hämta värde deklarerat som TIME!
Sv:Problem med att hämta värde deklarerat som TIME!
Det jag kan få fram är:
TIME
Time is given in milliseconds and handled internally like DWORD.
Type Lower bound Upper bound Memory use
TIME T#0ms T#71582m47s295ms 32 Bit
TIME constants can be declared in TwinCAT PLC Control. These are generally used to operate the timer in the standard library. A TIME constant is always made up of an initial "t" or "T" (or "time" or "TIME" spelled out) and a number sign "#".This is followed by the actual time declaration which can include days (identified by "d"), hours (identified by "h"), minutes (identified by "m"), seconds (identified by "s") and milliseconds (identified by "ms"). Please note that the time entries must be given in this order according to length (d before h before m before s before m before ms) but you are not required to include all time increments.Sv: Problem med att hämta värde deklarerat som TIME!
Sv:Problem med att hämta värde deklarerat som TIME!
Sv:Problem med att hämta värde deklarerat som TIME!
Sv:Problem med att hämta värde deklarerat som TIME!
Dim VarInstOklangd as String
VarInstOklangd = TcClientSync.ReadVar(".HMI_lrJustBitBak")
lblInstOklangd.Text = VarInstOklangd
För att ändra värdet från .Net antar jag att du skriver
TcClientSync.WriteVar(".HMI_lrJustBitBak","100")
eller liknande, skriv istället
<code>
TcClientSync.WriteVar(".HMI_lrJustBitBak","T#100ms")
</code>
så som det står i specen att TIME typen skall skrivas
För att sedan läsa behöver du plocka ut det som står mellan # och ms. Finns flera sätt men tex:
Dim VarInstOklangd as String
VarInstOklangd = TcClientSync.ReadVar(".HMI_lrJustBitBak")
lblInstOklangd.Text = VarInstOklangd.Substring(2, VarInstOklangd.Length - 4)
Men om den också visar d,m eller s i TIME så blir det lite mer komplext, detta kan du kontrollera med den första kodsnutten eller om du VET att PLC aldrig sätter sådana värden.
Sv: Problem med att hämta värde deklarerat som TIME!
Dim varTime As String
'Time - HÄMTA
varTime = TcClientSync.ReadVar(".HMI_TestTid")
lblTime.Text = varTime.substring(2, varTime.length - 4)
'Time - SKRIV
Private Sub lblTime_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblTime.TextChanged
If (lblTime.Text <> "") Then
varTime = "T#100ms"
Call TcClientSync.WriteVar(".HMI_TestTid", varTime)
lblTime.Text = CUInt(varTime)
End If
End Sub
Sv:Problem med att hämta värde deklarerat som TIME!
Först vad visas i rutan om du bara visar värdet som det är utan att köra subString?
Du kan inte göra
lblTime.Text = CUInt(varTime) 'CUInt("T#100ms")
Men
lblTime.Text = varTime.substring(2, varTime.length - 4)
fungerar
Stänga ner utan felmeddelande - brukar kunna orsakas av att det står End nånstans i koden (utan nåt mer tex End If).Sv: Problem med att hämta värde deklarerat som TIME!
Dim varTime As String
'Time - HÄMTA
varTime = TcClientSync.ReadVar(".HMI_TestTid")
lblTime.Text = varTime.Substring(2, varTime.Length - 4)
Private Sub lblTime_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblTime.TextChanged
'Time - SKRIV
If (lblTime.Text <> "") Then
varTime = "T#100ms"
Call TcClientSync.WriteVar(".HMI_TestTid", varTime)
lblTime.Text = varTime.Substring(2, varTime.Length - 4)
End If
End Sub
fungerar ändå inte. det avslutar väl inte helt utan felmeddelande. men utan ett jag kan göra något med iaf. Jag får bara upp att mitt projekt har stött på ett problem och måste avslutas.
Sv:Problem med att hämta värde deklarerat som TIME!
Har du inte möjlighet att sätta break-points o steg för att se vart det går fel?
Testa att ta bort TextChanged funktionen och låt det stå:
varTime = TcClientSync.ReadVar(".HMI_TestTid")
lblTime.Text = varTime
För att se om du verkligen får "T#0ms" från PLCSv: Problem med att hämta värde deklarerat som TIME!
Sv:Problem med att hämta värde deklarerat som TIME!
Dim varTime As UInterger
'Time - HÄMTA
varTime = TcClientSync.ReadVar(".HMI_TestTid")
lblTime.Text = varTime
Private Sub lblTime_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblTime.TextChanged
'Time - SKRIV
If (lblTime.Text <> "") Then
varTime = "100"
Call TcClientSync.WriteVar(".HMI_TestTid", varTime)
lblTime.Text = varTime
End If
End Sub
fungerar bättre
Min känsla är att det kraschar vid WriteVar, så steg två är att se om en borkommentering av den raden förhindrar en krasch.
Sv: Problem med att hämta värde deklarerat som TIME!
Sv: Problem med att hämta värde deklarerat som TIME!
Sv:Problem med att hämta värde deklarerat som TIME!
Med att gå vidare antar jag att du vill att värdet skall ändras i PLC:n när du ändrar i textboxen?
Private Sub lblTime_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblTime.TextChanged
If (lblTime.Text <> "") Then
Try
varTime = CUInt(lblTime.Text)
Call TcClientSync.WriteVar(".HMI_TestTid", varTime)
Catch 'Ifall man skriver nåt annat än siffror, kommer dock att fånga även om WriteVar går fel
End Try
End If
End SubSv: Problem med att hämta värde deklarerat som TIME!
Sv: Problem med att hämta värde deklarerat som TIME!
Enligt manualen:
TIME, Time is given in milliseconds and handled internally like DWORD
Type Lower bound Upper bound Memory use
TIME T#0ms T#71582m47s295ms 32 Bit
DWORD 0 Max=4294967295 32 Bit
Hittade även detta som är viktigt att ta i beaktning för att kommunikationen ska bli rätt.: "All numbers are stored in "little endian" byte (Intel) sequence." till skillnad från t ex Siemens Simatic PLC som använder sig av Big-endian.
Lite "endian"-info http://www.cs.umass.edu/~verts/cs32/endian.html Sv:Problem med att hämta värde deklarerat som TIME!
Sv: Problem med att hämta värde deklarerat som TIME!
Joel du har svaret längst ner på länken du fick, där finns två olika varianter på att omvandla värdet så det blir rätt (välj den du förstår bäst).
Ungefär såhär behöver du göra
Läsa:
Läst in från PLC in i en UInt
Använd funktionen för omvandling och stoppa in resultatet i en ny UInt
Använd värdet (lägg det i label)
Skriva:
Lägg värdet du vill sätt i en UInt
Använd funktionen för omvandling och stoppa in resultatet i en ny UInt
Skriv ner värdet i PLC:nSv:Problem med att hämta värde deklarerat som TIME!
Sv: Problem med att hämta värde deklarerat som TIME!
Private Function Reverse(ByVal n As UInteger) As UInteger
Dim B0, B1, B2, B3 As Byte
B0 = n Mod 256
n = n \ 256
B1 = n Mod 256
n = n \ 256
B2 = n Mod 256
n = n \ 256
B3 = n Mod 256
Reverse = (((B0 * 256 + B1) * 256 + B2) * 256 + B3)
End Function
Sv:Problem med att hämta värde deklarerat som TIME!
varTime = TcClientSync.ReadVar(".HMI_TestTid")
lblTime.Text = varTime
Private Sub lblTime_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblTime.TextChanged
If (lblTime.Text <> "") Then
varTime = CUInt(lblTime.Text)
Call TcClientSync.WriteVar(".HMI_TestTid", varTime)
lblTime.Text = CUInt(varTime)
End If
End Sub
Sv: Problem med att hämta värde deklarerat som TIME!
Dim varTime2 as Uinteger
varTime = TcClientSync.ReadVar(".HMI_TestTid")
varTime2 = Reverse(varTime)
lblTime.Text = varTime2
Private Sub lblTime_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblTime.TextChanged
If (lblTime.Text <> "") Then
varTime = CUInt(lblTime.Text)
varTime2 = Reverse(varTime)
Call TcClientSync.WriteVar(".HMI_TestTid", varTime2)
lblTime.Text = varTime
End If
End Sub
Sv:Problem med att hämta värde deklarerat som TIME!
Det är något problem bara. Jag får inte upp några felmeddelande och det kraschar bara igen. Finns det något ajg kan skriva för att få upp vad som är fel?Sv: Problem med att hämta värde deklarerat som TIME!
Svara
Sv:Problem med att hämta värde deklarerat som TIME!
Sv:Problem med att hämta värde deklarerat som TIME!
Dim varTime As UInteger
Dim varTime2 As UInteger
'Time -HÄMTA
varTime = TcClientSync.ReadVar(".HMI_TestTid")
varTime2 = Reverse(varTime)
lblTime.Text = varTime2
Private Function Reverse(ByVal n As UInteger) As UInteger
Dim B0, B1, B2, B3 As Byte
B0 = n Mod 256
n = n \ 256
B1 = n Mod 256
n = n \ 256
B2 = n Mod 256
n = n \ 256
B3 = n Mod 256
Reverse = (((B0 * 256 + B1) * 256 + B2) * 256 + B3)
End Function
Private Sub lblTime_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblTime.TextChanged
If (lblTime.Text <> "") Then
varTime = CUInt(lblTime.Text)
varTime2 = Reverse(varTime)
Call TcClientSync.WriteVar(".HMI_TestTid", varTime2)
lblTime.Text = CUInt(varTime)
End If
End Sub
Sv: Problem med att hämta värde deklarerat som TIME!
lblTime.Text = varTime
skall det stå, utan 2:an (på båda ställena)
Sv:Problem med att hämta värde deklarerat som TIME!
Sv: Problem med att hämta värde deklarerat som TIME!
Enligt manualen ftp://ftp.beckhoff.com/Document/Software/TwinCAT/1033/TcScriptDll.pdf
så är ReadVar definerad så här:
object.ReadVar(
sVarName As String
) As Variant
Och exempel på anrop kan se ut så här:
Dim VarValue
VarValue = TcClientSync.ReadVar(".PLCVarSInt"
WScript.echo "VarValue = ", VarValue
Förmodar att du gjort det men jag frågar ändå, har du öppnat en Connection mot PLCn:
Method - general
ConnectTo
Opens a communication channel between the object and an ADS device (PLC, NC, ...).
object.ConnectTo(
sAmsNetId As String,
nPort As Long)
Description
The first parameter contains the six-figure AdsAmsNetId. The individual values are separated from one another by a dot. If an empty string is passed, the local AdsAmsNetId is used. If a communication channel was already open before the call to ConnectTo(), it is automatically closed. The communication channel is also closed if the object is deleted.
Examples
VBScript:
Dim TcClientSync
Set TcClientSync = CreateObject("TCSCRIPT.TcScriptSync")
Call TcClientSync.ConnectTo("", 801)
JScript:
var TcClientSync;
TcClientSync = new ActiveXObject("TCSCRIPT.TcScriptSync");
TcClientSync.ConnectTo("172.16.17.13.1.1", 811);
I slutet av manualen finns även komplette exempel med läsning och skrivning från PLC.Sv:Problem med att hämta värde deklarerat som TIME!
Dim TcClientSync
Set TcClientSync = CreateObject("TCSCRIPT.TcScriptSync")
Call TcClientSync.ConnectTo("", 801) Sv:Problem med att hämta värde deklarerat som TIME!
16777216 motsvaras av 1 i revers funktionen.
Väldigt svårt att lösa på distans verkar det som, nu får du nog klara dig själv, felsöka o debugga.Sv: Problem med att hämta värde deklarerat som TIME!
Sv:Problem med att hämta värde deklarerat som TIME!
Dim varTime As UInteger
Dim varTime2 As UInteger
'Time -HÄMTA
varTime = TcClientSync.ReadVar(".HMI_TestTid")
varTime2 = Reverse(varTime)
lblTime.Text = varTime2
Public Function reverse(ByVal i As UInteger) As UInteger
Return ((i And &HFF) << 24) + ((i And &HFF00) << 8) + ((i And &HFF0000) >> 8) + ((i >> 24) And &HFF)
End Function
Private Sub lblTime_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblTime.TextChanged
If (lblTime.Text <> "") Then
varTime = CUInt(lblTime.Text)
varTime2 = Reverse(varTime)
Call TcClientSync.WriteVar(".HMI_TestTid", varTime2)
lblTime.Text = CUInt(varTime)
End If
End Sub
Testa också (om det inte hjälper) att ta bort anropet till reverse för läsa o se om du läser rätt då iallafall...
Sv: Problem med att hämta värde deklarerat som TIME!
Sv:Problem med att hämta värde deklarerat som TIME!
<code>
Dim TcClientSync
Dim varTime 'Deklarerad som variabel
Set TcClientSync = CreateObject("TCSCRIPT.TcScriptSync")
Call TcClientSync.ConnectTo("", 801)
varTime = TcClientSync.ReadVar(".HMI_TestTid")
</code>
Får du någonting i varTime då?
Har du provat att ange PLCns IP adress före portnummret i ConnectTo(..?
Visa mer av din kod så kanske vi hittar något.Sv: Problem med att hämta värde deklarerat som TIME!
Detta tyder på att du har samma endian (little/Intel), i både datorn och PLCn, om du kör en korrekt Reverse på värdet 1 så blir det 16777216 om det reverserade värdet tolaks binärt.
1 som 32-bit hex "00 00 00 01", om du gör om det till en big-endian blir det "01 00 00 00".
Du ska troligtvis inte använda dig av reverse i din applikation.Sv: Problem med att hämta värde deklarerat som TIME!
här har du min kod:
TcClientSync = CreateObject("TcScript.TcScriptSync")
Call TcClientSync.ConnectTo("", 801)
Dim varTime As UInteger
Dim varTime2 As UInteger
'Time -HÄMTA
varTime = TcClientSync.ReadVar(".HMI_TestTid")
varTime2 = Reverse(varTime)
lblTime.Text = varTime2
Public Function reverse(ByVal i As UInteger) As UInteger
Return ((i And &HFF) << 24) + ((i And &HFF00) << 8) + ((i And &HFF0000) >> 8) + ((i >> 24) And &HFF)
End Function
'Time -SKRIV
Private Sub lblTime_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblTime.TextChanged
If (lblTime.Text <> "") Then
varTime = CUInt(lblTime.Text)
varTime2 = Reverse(varTime)
Call TcClientSync.WriteVar(".HMI_TestTid", varTime2)
lblTime.Text = CUInt(varTime)
End If
End Sub
Sv:Problem med att hämta värde deklarerat som TIME!
Om det är hela koden du visar så verkar det lite mysko före "Public Function reverse(ByVal i As UInteger) As UInteger".
Som det ser ut i koden du visar så ligger ju inte din första del av koden inom någon Sub eller Function.
För att testa kan du ju skapa en knapp i ditt formulär som i sitt klick-event kallar på följande kod.
<code>
Private Sub ReadPlcValueTest()
Dim TcClientSync
Dim varTime
Stop 'Stoppar kodexekveringen, stega vidare med F11, ta bort i skarp kod
Try
TcClientSync = CreateObject("TcScript.TcScriptSync")
Call TcClientSync.ConnectTo("", 801)
'Time -HÄMTA
varTime = TcClientSync.ReadVar(".HMI_TestTid")
'Visa värdet i varTime
MessageBox.Show("varTime = " & varTime.ToString())
Catch ex As Exception
'Visa eventuellt felmeddelande
MessageBox.Show("Error: " & ex.Message)
End Try
End Sub</code>Sv: Problem med att hämta värde deklarerat som TIME!
Public Class FInstallningarDackmaskin
Inherits System.Windows.Forms.Form
Public TcClientSync As TCSCRIPTLib.TcScriptSync
Dim VarInstDackbredd As Decimal
Dim VarInstBradbreddMag1 As Decimal
Dim VarInstBradbreddMag2 As Decimal
Dim VarInstOklangd As Decimal
Dim VarAntalBrador As Long
Dim VarOkLagfart As Decimal
Dim VarOkKrypfart As Decimal
Dim VarRefOkAkt As Decimal
Dim VarRefOkOnsk As Decimal
Dim VarVardeNyOk As Decimal
Dim VarOkStoppUtmat As Decimal
Dim VarOkKlamma As Decimal
Dim VarBradLagfart As Decimal
Dim VarBradKrypfart As Decimal
Dim VarBradRefVardeAkt As Decimal
Dim VarBradRefVardeOnsk As Decimal
Dim VarBradLagfartRetur As Decimal
Private Sub cmdHandkorning_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdHandkorning.Click
fhandkorningdackmaskin.Show()
Me.Hide()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
FIndex.Show()
Me.Hide()
End Sub
Private Sub FInstallningarDackmaskin_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
End
End Sub
Private Sub FInstallningarDackmaskin_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Tittar på vilken textbox som är klickad
For Each kontroll As Control In Me.Controls
If kontroll.GetType Is GetType(TextBox) Then
AddHandler kontroll.Click, AddressOf lblInstAntBrador_Click
End If
Next
'Sätter(timerintervall)
Timer1.Interval = 500
Timer1.Start()
End Sub
Private Sub lblInstAntBrador_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblInstAntBrador.TextChanged
'Antal brädor - SKRIV
If (lblInstAntBrador.Text <> "") Then
VarAntalBrador = CDec(lblInstAntBrador.Text)
Call TcClientSync.WriteVar(".HMI_tKDSUppSpik", VarAntalBrador)
lblInstAntBrador.Text = CStr(VarAntalBrador)
End If
End Sub
Private Sub lblInstDackbredd_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblInstDackbredd.TextChanged
'Däckbredd - SKRIV
If (lblInstDackbredd.Text <> "") Then
VarInstDackbredd = CDec(lblInstDackbredd.Text)
Call TcClientSync.WriteVar(".HMI_TestTid", VarInstDackbredd)
lblInstDackbredd.Text = CStr(VarInstDackbredd)
End If
End Sub
Private Sub lblInstBradbreddMag1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblInstBradbreddMag1.TextChanged
'Brädbredd magasin 1 - SKRIV
If (lblInstBradbreddMag1.Text <> "") Then
VarInstBradbreddMag1 = CDec(lblInstBradbreddMag1.Text)
Call TcClientSync.WriteVar(".HMI_TestTid", VarInstBradbreddMag1)
lblInstBradbreddMag1.Text = CStr(VarInstBradbreddMag1)
End If
End Sub
Private Sub lblInstBradbreddMag2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblInstBradbreddMag2.TextChanged
'Brädbredd magasin 2 - SKRIV
If (lblInstBradbreddMag2.Text <> "") Then
VarInstBradbreddMag2 = CDec(lblInstBradbreddMag2.Text)
Call TcClientSync.WriteVar(".HMI_TestTid", VarInstBradbreddMag2)
lblInstBradbreddMag2.Text = CStr(VarInstBradbreddMag2)
End If
End Sub
Private Sub lblInstOklangd_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblInstOklangd.TextChanged
'Oklängd - SKRIV
If (lblInstOklangd.Text <> "") Then
VarInstOklangd = CDec(lblInstOklangd.Text)
Call TcClientSync.WriteVar(".HMI_TestTid", VarInstOklangd)
lblInstOklangd.Text = CStr(VarInstOklangd)
End If
End Sub
Private Sub lblOkLagfart_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblOkLagfart.TextChanged
'Okframdrag Lågfart - SKRIV
If (lblOkLagfart.Text <> "") Then
VarOkLagfart = CDec(lblOkLagfart.Text)
Call TcClientSync.WriteVar(".HMI_TestTid", VarOkLagfart)
lblOkLagfart.Text = CStr(VarOkLagfart)
End If
End Sub
Private Sub lblOkKrypfart_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblOkKrypfart.TextChanged
'Okframdrag Krypfart - SKRIV
If (lblOkKrypfart.Text <> "") Then
VarOkKrypfart = CDec(lblOkKrypfart.Text)
Call TcClientSync.WriteVar(".HMI_TestTid", VarOkKrypfart)
lblOkKrypfart.Text = CStr(VarOkKrypfart)
End If
End Sub
Private Sub lblRefOkAkt_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblRefOkAkt.TextChanged
'Okframdrag Ref värde aktuellt - SKRIV
If (lblRefOkAkt.Text <> "") Then
VarRefOkAkt = CDec(lblRefOkAkt.Text)
Call TcClientSync.WriteVar(".HMI_TestTid", VarRefOkAkt)
lblRefOkAkt.Text = CStr(VarRefOkAkt)
End If
End Sub
Private Sub lblRefOkOnsk_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblRefOkOnsk.TextChanged
'Okframdrag Ref värde önskat - SKRIV
If (lblRefOkOnsk.Text <> "") Then
VarRefOkOnsk = CDec(lblRefOkAkt.Text)
Call TcClientSync.WriteVar(".HMI_TestTid", VarRefOkOnsk)
lblRefOkOnsk.Text = CStr(VarRefOkOnsk)
End If
End Sub
Private Sub lblVardeNyOk_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblVardeNyOk.TextChanged
'Okframdrag Varde ny ok - SKRIV
If (lblVardeNyOk.Text <> "") Then
VarVardeNyOk = CDec(lblVardeNyOk.Text)
Call TcClientSync.WriteVar(".HMI_TestTid", VarVardeNyOk)
lblVardeNyOk.Text = CStr(VarVardeNyOk)
End If
End Sub
Private Sub lblOkStoppUtmat_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblOkStoppUtmat.TextChanged
'Okframdrag utmatning - SKRIV
If (lblOkStoppUtmat.Text <> "") Then
VarOkStoppUtmat = CDec(lblOkStoppUtmat.Text)
Call TcClientSync.WriteVar(".HMI_TestTid", VarOkStoppUtmat)
lblOkStoppUtmat.Text = CStr(VarOkStoppUtmat)
End If
End Sub
Private Sub lblOkKlamma_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblOkKlamma.TextChanged
'Okframdrag Klämma - SKRIV
If (lblOkKlamma.Text <> "") Then
VarOkKlamma = CDec(lblOkKlamma.Text)
Call TcClientSync.WriteVar(".HMI_TestTid", VarOkKlamma)
lblOkKlamma.Text = CStr(VarOkKlamma)
End If
End Sub
Private Sub lblBradLagfart_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblBradLagfart.TextChanged
'Brädframdrag Lågfart - SKRIV
If (lblBradLagfart.Text <> "") Then
VarBradLagfart = CDec(lblBradLagfart.Text)
Call TcClientSync.WriteVar(".HMI_TestTid", VarBradLagfart)
lblBradLagfart.Text = CStr(VarBradLagfart)
End If
End Sub
Private Sub lblBradKrypfart_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblBradKrypfart.TextChanged
'Brädframdrag krypfart - SKRIV
If (lblBradKrypfart.Text <> "") Then
VarBradKrypfart = CDec(lblBradKrypfart.Text)
Call TcClientSync.WriteVar(".HMI_TestTid", VarBradKrypfart)
lblBradKrypfart.Text = CStr(VarBradKrypfart)
End If
End Sub
Private Sub lblBradRefVardeAkt_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblBradRefVardeAkt.TextChanged
'Brädframdrag Referensvärde Aktuellt - SKRIV
If (lblBradRefVardeAkt.Text <> "") Then
VarBradRefVardeAkt = CDec(lblBradRefVardeAkt.Text)
Call TcClientSync.WriteVar(".HMI_lrDckActPos", VarBradRefVardeAkt)
lblBradRefVardeAkt.Text = CStr(VarBradRefVardeAkt)
End If
End Sub
Private Sub lblBradRefVardeOnsk_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblBradRefVardeOnsk.TextChanged
'Brädframdrag Referensvärde önskat - SKRIV
If (lblBradRefVardeOnsk.Text <> "") Then
VarBradRefVardeOnsk = CDec(lblBradRefVardeOnsk.Text)
Call TcClientSync.WriteVar(".HMI_lrDckRefPos", VarBradRefVardeOnsk)
lblBradRefVardeOnsk.Text = CStr(VarBradRefVardeOnsk)
End If
End Sub
Private Sub lblBradLagfartRetur_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblBradLagfartRetur.TextChanged
'Brädframdrag retur - SKRIV
If (lblBradLagfartRetur.Text <> "") Then
VarBradLagfartRetur = CDec(lblBradLagfartRetur.Text)
Call TcClientSync.WriteVar(".HMI_lrDckRetur", VarBradLagfartRetur)
lblBradLagfartRetur.Text = CStr(VarBradLagfartRetur)
End If
End Sub
Private Sub ReadPlcValueTest()
Dim TcClientSync
Dim varTime
Stop 'Stoppar kodexekveringen, stega vidare med F11, ta bort i skarp kod
Try
TcClientSync = CreateObject("TcScript.TcScriptSync")
Call TcClientSync.ConnectTo("", 801)
'Time -HÄMTA
varTime = TcClientSync.ReadVar(".HMI_TestTid")
'Visa värdet i varTime
MessageBox.Show("varTime = " & varTime.ToString())
Catch ex As Exception
'Visa eventuellt felmeddelande
MessageBox.Show("Error: " & ex.Message)
End Try
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
TcClientSync = CreateObject("TcScript.TcScriptSync")
Call TcClientSync.ConnectTo("", 801)
Dim varTime 'Deklarerad som variabel
varTime = TcClientSync.ReadVar(".HMI_TestTid")
lblTime.Text = varTime
'INSTÄLLNINGAR
'Antal brädor - HÄMTA
VarAntalBrador = TcClientSync.ReadVar(".HMI_TestTid")
lblInstAntBrador.Text = CStr(VarAntalBrador)
'Däckbredd - HÄMTA
VarInstDackbredd = TcClientSync.ReadVar(".HMI_TestTid")
lblInstDackbredd.Text = CStr(VarInstDackbredd)
'Brädbredd magasin 1 - HÄMTA
VarInstBradbreddMag1 = TcClientSync.ReadVar(".HMI_TestTid")
lblInstBradbreddMag1.Text = CStr(VarInstBradbreddMag1)
'Brädbredd magasin 2 - HÄMTA
VarInstBradbreddMag2 = TcClientSync.ReadVar(".HMI_TestTid")
lblInstBradbreddMag2.Text = CStr(VarInstBradbreddMag2)
'Oklängd - HÄMTA
VarInstOklangd = TcClientSync.ReadVar(".HMI_TestTid")
lblInstOklangd.Text = CStr(VarInstOklangd)
'PARAMETRAR
'OKFRAMDRAG
'Okframdrag Lågfart - HÄMTA
VarOkLagfart = TcClientSync.ReadVar(".HMI_lrOkHast")
lblOkLagfart.Text = CStr(VarOkLagfart)
'Okframdrag Krypfart - HÄMTA
VarOkKrypfart = TcClientSync.ReadVar(".HMI_lrOkHast")
lblOkKrypfart.Text = CStr(VarOkKrypfart)
'Referens okframdrag aktuellt - HÄMTA
VarRefOkAkt = TcClientSync.ReadVar(".HMI_lrOkFrdOk")
lblRefOkAkt.Text = CStr(VarRefOkAkt)
'Referens okframdrag önskat - HÄMTA
VarRefOkOnsk = TcClientSync.ReadVar(".HMI_lrOkRefPos")
lblRefOkOnsk.Text = CStr(VarRefOkOnsk)
'Varde ny ok - HÄMTA
VarVardeNyOk = TcClientSync.ReadVar(".HMI_TestTid")
lblVardeNyOk.Text = CStr(VarVardeNyOk)
'Okframdrag stopp utmatning - HÄMTA
VarOkStoppUtmat = TcClientSync.ReadVar(".HMI_lrUtDckStopPos")
lblOkStoppUtmat.Text = CStr(VarOkStoppUtmat)
'Okframdrag klämma - HÄMTA
VarOkKlamma = TcClientSync.ReadVar(".HMI_lrOkFrdOfs")
lblOkKlamma.Text = CStr(VarOkKlamma)
'PARAMETRAR
'BRÄDFRAMDRAG
'Brädframdrag lågfart - HÄMTA
VarBradLagfart = TcClientSync.ReadVar(".HMI_lrDckHast")
lblBradLagfart.Text = CStr(VarBradLagfart)
'Brädframdrag krypfart - HÄMTA
VarBradKrypfart = TcClientSync.ReadVar(".HMI_lrDckJogHast")
lblBradKrypfart.Text = CStr(VarBradKrypfart)
'Brädframdrag Referensvärde aktuellt - HÄMTA
VarBradRefVardeAkt = TcClientSync.ReadVar(".HMI_lrDckActPos")
lblBradRefVardeAkt.Text = CStr(VarBradRefVardeAkt)
'Brädframdrag Referensvärde önskat - HÄMTA
VarBradRefVardeOnsk = TcClientSync.ReadVar(".HMI_lrDckRefPos")
lblBradRefVardeOnsk.Text = CStr(VarBradRefVardeOnsk)
'Brädframdrag Lågfart retur - HÄMTA
VarBradLagfartRetur = TcClientSync.ReadVar(".HMI_lrDckRetur")
lblBradLagfartRetur.Text = CStr(VarBradLagfartRetur)
Timer1.Start()
End Sub
Private Sub lblInstAntBrador_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lblInstAntBrador.Click
'Öppnar numeriska tangentbordet när man klickar på textboxen
Dim r As New Numeriskt_tangentbord
If r.ShowDialog() = Windows.Forms.DialogResult.OK Then
CType(sender, TextBox).Text = r.txtVarde.Text
End If
End Sub
Private Sub lblInstDackbredd_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lblInstDackbredd.Click
'Öppnar numeriska tangentbordet när man klickar på textboxen
Dim r As New Numeriskt_tangentbord
If r.ShowDialog() = Windows.Forms.DialogResult.OK Then
CType(sender, TextBox).Text = r.txtVarde.Text
End If
End Sub
Private Sub lblInstBradbreddMag1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lblInstBradbreddMag1.Click
'Öppnar numeriska tangentbordet när man klickar på textboxen
Dim r As New Numeriskt_tangentbord
If r.ShowDialog() = Windows.Forms.DialogResult.OK Then
CType(sender, TextBox).Text = r.txtVarde.Text
End If
End Sub
Private Sub lblInstBradbreddMag2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lblInstBradbreddMag2.Click
'Öppnar numeriska tangentbordet när man klickar på textboxen
Dim r As New Numeriskt_tangentbord
If r.ShowDialog() = Windows.Forms.DialogResult.OK Then
CType(sender, TextBox).Text = r.txtVarde.Text
End If
End Sub
Private Sub lblInstOklangd_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lblInstOklangd.Click
'Öppnar numeriska tangentbordet när man klickar på textboxen
Dim r As New Numeriskt_tangentbord
If r.ShowDialog() = Windows.Forms.DialogResult.OK Then
CType(sender, TextBox).Text = r.txtVarde.Text
End If
End Sub
Private Sub lblOkLagfart_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lblOkLagfart.Click
'Öppnar numeriska tangentbordet när man klickar på textboxen
Dim r As New Numeriskt_tangentbord
If r.ShowDialog() = Windows.Forms.DialogResult.OK Then
CType(sender, TextBox).Text = r.txtVarde.Text
End If
End Sub
Private Sub lblOkKrypfart_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lblOkKrypfart.Click
'Öppnar numeriska tangentbordet när man klickar på textboxen
Dim r As New Numeriskt_tangentbord
If r.ShowDialog() = Windows.Forms.DialogResult.OK Then
CType(sender, TextBox).Text = r.txtVarde.Text
End If
End Sub
Private Sub lblRefOkAkt_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lblRefOkAkt.Click
'Öppnar numeriska tangentbordet när man klickar på textboxen
Dim r As New Numeriskt_tangentbord
If r.ShowDialog() = Windows.Forms.DialogResult.OK Then
CType(sender, TextBox).Text = r.txtVarde.Text
End If
End Sub
Private Sub lblRefOkOnsk_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lblRefOkOnsk.Click
'Öppnar numeriska tangentbordet när man klickar på textboxen
Dim r As New Numeriskt_tangentbord
If r.ShowDialog() = Windows.Forms.DialogResult.OK Then
CType(sender, TextBox).Text = r.txtVarde.Text
End If
End Sub
Private Sub lblVardeNyOk_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lblVardeNyOk.Click
'Öppnar numeriska tangentbordet när man klickar på textboxen
Dim r As New Numeriskt_tangentbord
If r.ShowDialog() = Windows.Forms.DialogResult.OK Then
CType(sender, TextBox).Text = r.txtVarde.Text
End If
End Sub
Private Sub lblOkStoppUtmat_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lblOkStoppUtmat.Click
'Öppnar numeriska tangentbordet när man klickar på textboxen
Dim r As New Numeriskt_tangentbord
If r.ShowDialog() = Windows.Forms.DialogResult.OK Then
CType(sender, TextBox).Text = r.txtVarde.Text
End If
End Sub
Private Sub lblOkKlamma_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lblOkKlamma.Click
'Öppnar numeriska tangentbordet när man klickar på textboxen
Dim r As New Numeriskt_tangentbord
If r.ShowDialog() = Windows.Forms.DialogResult.OK Then
CType(sender, TextBox).Text = r.txtVarde.Text
End If
End Sub
Private Sub lblBradLagfart_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lblBradLagfart.Click
'Öppnar numeriska tangentbordet när man klickar på textboxen
Dim r As New Numeriskt_tangentbord
If r.ShowDialog() = Windows.Forms.DialogResult.OK Then
CType(sender, TextBox).Text = r.txtVarde.Text
End If
End Sub
Private Sub lblBradKrypfart_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lblBradKrypfart.Click
'Öppnar numeriska tangentbordet när man klickar på textboxen
Dim r As New Numeriskt_tangentbord
If r.ShowDialog() = Windows.Forms.DialogResult.OK Then
CType(sender, TextBox).Text = r.txtVarde.Text
End If
End Sub
Private Sub lblBradRefVardeAkt_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lblBradRefVardeAkt.Click
'Öppnar numeriska tangentbordet när man klickar på textboxen
Dim r As New Numeriskt_tangentbord
If r.ShowDialog() = Windows.Forms.DialogResult.OK Then
CType(sender, TextBox).Text = r.txtVarde.Text
End If
End Sub
Private Sub lblBradRefVardeOnsk_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lblBradRefVardeOnsk.Click
'Öppnar numeriska tangentbordet när man klickar på textboxen
Dim r As New Numeriskt_tangentbord
If r.ShowDialog() = Windows.Forms.DialogResult.OK Then
CType(sender, TextBox).Text = r.txtVarde.Text
End If
End Sub
Private Sub lblBradLagfartRetur_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lblBradLagfartRetur.Click
'Öppnar numeriska tangentbordet när man klickar på textboxen
Dim r As New Numeriskt_tangentbord
If r.ShowDialog() = Windows.Forms.DialogResult.OK Then
CType(sender, TextBox).Text = r.txtVarde.Text
End If
End Sub
Private Sub bSpik1Mag_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bSpik1Mag.Click
If bSpik1Mag.Text = "Magasin 1" Then
bSpik1Mag.Text = "Magasin 2"
Else
bSpik1Mag.Text = "Magasin 1"
End If
End Sub
Private Sub bSpik2Mag_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bSpik2Mag.Click
If bSpik2Mag.Text = "Magasin 1" Then
bSpik2Mag.Text = "Magasin 2"
Else
bSpik2Mag.Text = "Magasin 1"
End If
End Sub
Private Sub bSpik3Mag_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bSpik3Mag.Click
If bSpik3Mag.Text = "Magasin 1" Then
bSpik3Mag.Text = "Magasin 2"
Else
bSpik3Mag.Text = "Magasin 1"
End If
End Sub
Private Sub bSpik4Mag_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bSpik4Mag.Click
If bSpik4Mag.Text = "Magasin 1" Then
bSpik4Mag.Text = "Magasin 2"
Else
bSpik4Mag.Text = "Magasin 1"
End If
End Sub
Private Sub bSpik5Mag_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bSpik5Mag.Click
If bSpik5Mag.Text = "Magasin 1" Then
bSpik5Mag.Text = "Magasin 2"
Else
bSpik5Mag.Text = "Magasin 1"
End If
End Sub
Private Sub bSpik6Mag_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bSpik6Mag.Click
If bSpik6Mag.Text = "Magasin 1" Then
bSpik6Mag.Text = "Magasin 2"
Else
bSpik6Mag.Text = "Magasin 1"
End If
End Sub
Private Sub bSpik7Mag_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bSpik7Mag.Click
If bSpik7Mag.Text = "Magasin 1" Then
bSpik7Mag.Text = "Magasin 2"
Else
bSpik7Mag.Text = "Magasin 1"
End If
End Sub
Private Sub bSpik8Mag_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bSpik8Mag.Click
If bSpik8Mag.Text = "Magasin 1" Then
bSpik8Mag.Text = "Magasin 2"
Else
bSpik8Mag.Text = "Magasin 1"
End If
End Sub
Private Sub bSpik9Mag_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bSpik9Mag.Click
If bSpik9Mag.Text = "Magasin 1" Then
bSpik9Mag.Text = "Magasin 2"
Else
bSpik9Mag.Text = "Magasin 1"
End If
End Sub
Private Sub bSpik10Mag_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bSpik10Mag.Click
If bSpik10Mag.Text = "Magasin 1" Then
bSpik10Mag.Text = "Magasin 2"
Else
bSpik10Mag.Text = "Magasin 1"
End If
End Sub
Private Sub bSpik11Mag_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bSpik11Mag.Click
If bSpik11Mag.Text = "Magasin 1" Then
bSpik11Mag.Text = "Magasin 2"
Else
bSpik11Mag.Text = "Magasin 1"
End If
End Sub
Private Sub bSpik12Mag_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bSpik12Mag.Click
If bSpik12Mag.Text = "Magasin 1" Then
bSpik12Mag.Text = "Magasin 2"
Else
bSpik12Mag.Text = "Magasin 1"
End If
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Call ReadPlcValueTest()
End Sub
End Class
Sv: Problem med att hämta värde deklarerat som TIME!
Sv:Problem med att hämta värde deklarerat som TIME!
Sv: Problem med att hämta värde deklarerat som TIME!
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.TickSv: Problem med att hämta värde deklarerat som TIME!
Sv:Problem med att hämta värde deklarerat som TIME!
Använd sedan din "Button3", som du skapat, för att köra koden i "ReadPlcValueTest()" och kolla där om du får rätt info.
Om, efter att du passerat "varTime = TcClientSync.ReadVar(".HMI_TestTid")", varTime innehåller "nothing" så tyder det nog på att du inte kunnat läsa in variabeln ".HMI_TestTid", kolla att den verkligen heter så i PLCn och att stora/små-bokstver stämmer överens.
Vad innehåller "TcClientSync" efter att du stegat förbi "TcClientSync = CreateObject("TcScript.TcScriptSync")
"? Sv: Problem med att hämta värde deklarerat som TIME!
TcClientSync innehåller "{System.__ComObject}
VarTime visar "nothing"
som dus er så har ajg ju flera textboxar som hämtar värden från plc:n och alla de fungerar utan den här med TIME.. några nya ideér?Sv:Problem med att hämta värde deklarerat som TIME!
Kan det vara så att TcClientSync har någon begränsning som gör att den inte kan läsa en variabel som är deklarerad som Time+
Kan du prova, om det går i den PLCn, att ladda Time-värdet till en DWord variabel och försöka läsa DWord-värdet i ditt prog.
Ev kan du ju föröka att använda dig av Read by adress, t ex ReadInt32 för att se om du får upp något värde. Time är iof specat som unsigned men omvandlingen kan du ju göra i PC.
ReadInt32
Reads a variable of type long from an ADS device.
object.ReadInt32(
nIndexGroup As Long,
nIndexOffset As Long
) As Long
Parameters
nIndexGroup, Index group of the ADS variable.
nIndexOffset, Index offset of the ADS variable.
Return value
Value of the ADS variable.
Description
The reading procedure is performed synchronously. This means that program execution is halted until the data from the ADS device is available. In IEC 61131-6 this corresponds to the DWORD, DINT or UDINT data type.
Examples
VBScript:
Dim VarInt32
VarInt32 = TcClientSync.ReadInt32(&H4020, 0) 'Byt ut &H4020 mot rätt adress.
WScript.echo "VarInt32 = ", VarInt32Sv: Problem med att hämta värde deklarerat som TIME!
Sv:Problem med att hämta värde deklarerat som TIME!
Gick det inte att få ut något värde via Read By Adress heller när variabeln i PLC är deklarerad som Time?Sv: Problem med att hämta värde deklarerat som TIME!
Sv:Problem med att hämta värde deklarerat som TIME!
Alternativt kör du med Dword och anger allla tider i ms.Sv: Problem med att hämta värde deklarerat som TIME!
Sv:Problem med att hämta värde deklarerat som TIME!