# kleine Visualisierung auf einem CX



## egor (28 Juni 2010)

Hallo community, ich habe wieder mal ein kleines problemchen

Also ich will mir eine kleine visualisierung auf einem backhoff Panel erstellen. Das sind nur ein paar buttons und ein paar textfelder (wo sensor werte angezeigt werden sollen).

ich würde das gerne mit dem visual studio 2008 realisieren, da gibts es eine anwedung für intelligente geräte (smartphones usw mit windows ce). Das panel von backhoff ist ebenfalls windows ce.
Nun habe ich keinerlei erfahrung mit dem programm visual studio 2008. Das sps programm für das panel ist bereits geschrieben.

Hat schonn jemmadn von euch TwinCat mit Visual Studio 2008 kombiniert und eine visualisierung gemacht? Wie stelle ich eine verbindung zwischen den geräten her? Was bracuhe ich dafür, welche bibliotheken oder welche .dll? Habe da was von ads.dll gelesen...

Ich bin für jede Antwort dankbar.

PS: ich habe mich im Programm getäuscht. ich habe hier Visual studio 2008 zur verfügung, geht das damit trotzdem?


----------



## enter (28 Juni 2010)

Hallo,
Wie du schon geschrieben hast wird das rech einfach per ADS gelöst.
Lese das mal durch 
http://infosys.beckhoff.com/index.php?content=content/1031/tcsample/html/tcsample_intro.htm 
da sind sehr gute Beispiele enthalten.


----------



## egor (29 Juni 2010)

joa beim beckhoff wirdl eider nru die vb 2006 beschrieben oder? evtl muss ich es doch mit vb 2006 visualisieren...
eigentlihc müsste das auch bei der visual studio 2008 möglich sein, nur sidn die buttons evtl wo anders untergebracht ....

hmm geht das auch evtl damit?





TwinCAT ADS-Communication Library 
                          2.8.12                           TwinCAT Kommunikations Library für Windows 2000/NT/XP/CE.              Dokumentation


----------



## egor (29 Juni 2010)

enter schrieb:


> Hallo,
> Wie du schon geschrieben hast wird das rech einfach per ADS gelöst.
> Lese das mal durch
> http://infosys.beckhoff.com/index.php?content=content/1031/tcsample/html/tcsample_intro.htm
> da sind sehr gute Beispiele enthalten.




also die einbindung der ADS OCX kriege ich irgendwie nicht hin, und auf die manuelle rt auch nicht weil ich die Datei AdsOcs.ocx nirgends auf dem rechner finden kann


----------



## egor (30 Juni 2010)

habe mittlerweile die kommunikation anhand eines beispiels programms von beckhoff hingekriegt. ich kann variablen auslesen und schreiben.
mit diesem beispiel: (http://infosys.beckhoff.com/index.p..._vb/html/tcadsdll_com_vb_sample01.htm&id=9461)

leider klappt das nur mit der 2006 version und nicht mit der 2008 

kann mir jemmand behilflich sein in sachen Visual Basic programmieren? Ich müsste eine zyklische Abfrage von verschiedenen Variablen realisieren, kenne mich aber mit visual basic garnicht aus


----------



## ika (30 Juni 2010)

Hallo ihr alle,
ich bin absolut neu hier, weiß nicht, ob wir das gleiche Problem haben.
Ich schreibe ein Programm mit VS2008, um auf PC WindowsCE zu visualisieren. Die Busklemmen habe ich EL3162, also für analoge Eingang. Einstellung habe ich mit TwinCAT Syetem Manager gemacht, Header datei wurde exportiert und im Programm hingefügt. 
Mein Problem gerade ist: Status Maschine bleibt Pre-OP,aber nicht OP. Deswegen kann die Daten nicht aufgenommen werden. Wenn ich TwinCAT System Manager unter Konfiguration Modul/Free Run laufen lasse, zeigt Status dann doch OP an, und Daten kann eingelesen werden.
Kann jemand mie weiter helfen?
Bin dankbar für jede antwort.


----------



## egor (1 Juli 2010)

Also nochmal zum Problem!

Ich habe einen CP 6607 von Beckhoff. Dieses Touch Panel hat TwinCat und Windows CE drauf. Die SPS läuft auf dem Touch Panel. Dazu will ich eine kleine Visu schreiben/machen, mit Visual Basic.

Wie kann ich in Visual Basic eine .exe für den TouchPanel schreiben? Wie greife ich auf die Variable der SPS beim schreiben der Visu zu? Die Visu beschränkt sich nur auf Variablen lesen (2x Sensoren anzeige und 2xProzent anzeige von Beleuchtung)

MfG
egor


----------



## egor (13 Juli 2010)

hallo leute

habe jetzt erstmal probiert die Visualisierung auf meinem Programmier Rechner laufen zu lassen also und windowx xp. Habe mir dazu das 2 Beispiel aus der TwinCat Infosys bei tcadsdll angeschaut und etwas bearbeitet. Aber es klappt irgendwie nicht....

das beispiel 4 arbeitet mit dem adsocx und da klappt es das ich die variablen auslesen kann.

hier mal mein quellcode:

[FONT=&quot]Option[/FONT][FONT=&quot] Strict Off[/FONT]
[FONT=&quot]Option[/FONT][FONT=&quot] Explicit On[/FONT]
[FONT=&quot]Friend[/FONT][FONT=&quot] Class frmTest[/FONT]
  [FONT=&quot]      Inherits System.Windows.Forms.Form[/FONT]
  [FONT=&quot]      Dim WithEvents ads As TcAdsDll.TcAdsSync[/FONT]

[FONT=&quot]'UPGRADE_ISSUE: Das Deklarieren eines Parameters als ''As Any'' wird nicht unterstützt. Klicken Sie hier für weitere Informationen: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="FAE78A8D-8978-4FD4-8208-5B7324A8F795"'[/FONT]
  [FONT=&quot]      'UPGRADE_ISSUE: Das Deklarieren eines Parameters als ''As Any'' wird nicht unterstützt. Klicken Sie hier für weitere Informationen: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="FAE78A8D-8978-4FD4-8208-5B7324A8F795"'[/FONT]
[FONT=&quot]Private[/FONT][FONT=&quot] Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByRef lpDest As Object, ByRef lpSrc As Object, ByVal Length As Integer)[/FONT]


  [FONT=&quot]      Private Sub frmTest_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load[/FONT]
  [FONT=&quot]            On Error GoTo errFunc[/FONT]
  [FONT=&quot]        Dim client As TcAdsDll.TcClient[/FONT]
[FONT=&quot]'UPGRADE_WARNING: Arrays in Struktur netId müssen möglicherweise initialisiert werden, bevor sie verwendet werden können. Klicken Sie hier für weitere Informationen: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="814DF224-76BD-4BB4-BFFB-EA359CB9FC48"'[/FONT]
[FONT=&quot]Dim[/FONT][FONT=&quot] netId As TcAdsDll.AmsNetId[/FONT]
  [FONT=&quot]        netId.b = New Byte(6) {}[/FONT]
  [FONT=&quot]        client = CreateObject("TcAdsDll.TcClient")[/FONT]

  [FONT=&quot]        netId.b(0) = 5[/FONT]
  [FONT=&quot]        netId.b(1) = 7[/FONT]
  [FONT=&quot]        netId.b(2) = 45[/FONT]
  [FONT=&quot]        netId.b(3) = 94[/FONT]
  [FONT=&quot]        netId.b(4) = 1[/FONT]
  [FONT=&quot]        netId.b(5) = 1[/FONT]
  [FONT=&quot]        ads = client.Connect(netId, 801)[/FONT]

  [FONT=&quot]            Exit Sub[/FONT]
  [FONT=&quot]errFunc: [/FONT]
  [FONT=&quot]            MsgBox("Error: (0x" & VB6.Format(Hex(Err.Number), "00000000") & "), " & Err.Description)[/FONT]
  [FONT=&quot]      End Sub[/FONT]

  [FONT=&quot]      Private Sub cmdRead_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdRead.Click[/FONT]
  [FONT=&quot]            On Error Resume Next[/FONT]
  [FONT=&quot]        TextBeleuchtung1.Text = CStr(ReadInteger(&H4040, 3781 ))[/FONT]
  [FONT=&quot]TextBeleuchtung2.Text = CStr(ReadInteger(&H4040, 9868 ))[/FONT]
[FONT=&quot]End[/FONT][FONT=&quot] Sub[/FONT]

  [FONT=&quot]    Private Function ReadInteger(ByRef indexGroup As Integer, ByRef indexOffset As Integer) As Short[/FONT]
  [FONT=&quot]        On Error GoTo errFunc[/FONT]
  [FONT=&quot]        Dim arrRead(1) As Byte[/FONT]
  [FONT=&quot]        Dim cbRead As Integer[/FONT]
  [FONT=&quot]        Dim cbLen As Integer[/FONT]
[FONT=&quot]'UPGRADE_NOTE: val wurde aktualisiert auf val_Renamed. Klicken Sie hier für weitere Informationen: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="A9E4979A-37FA-4718-9994-97DD76ED70A7"'[/FONT]
[FONT=&quot]Dim[/FONT][FONT=&quot] val_Renamed As Short[/FONT]

  [FONT=&quot]        cbLen = 2[/FONT]
  [FONT=&quot]        Call ads.Read(indexGroup, indexOffset, cbLen, cbRead, arrRead(0))[/FONT]
  [FONT=&quot]        Call CopyMemory(val_Renamed, arrRead(0), cbLen)[/FONT]
  [FONT=&quot]        ReadInteger = val_Renamed[/FONT]

  [FONT=&quot]        Exit Function[/FONT]
  [FONT=&quot]errFunc:[/FONT]
  [FONT=&quot]        MsgBox("Error: (0x" & VB6.Format(Hex(Err.Number), "00000000") & "), " & Err.Description)[/FONT]
  [FONT=&quot]    End Function[/FONT]


  [FONT=&quot]    Private Sub btnclose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnclose.Click[/FONT]
  [FONT=&quot]Close()[/FONT]
  [FONT=&quot]    End Sub[/FONT]
[FONT=&quot]End[/FONT][FONT=&quot] Class[/FONT]





[FONT=&quot]ich sehe den fehler nicht, und wenn ich das programm laufen lasse, dann gibt er mir 0 aus  hat jemmand eine idee?
[/FONT]


----------



## Graph&SCL_Freak (13 Juli 2010)

Schau mal in die TcAdsNet.chm. Das ist die Doku für die Net-Framework Versionen. Deinen von VB6 konvertierten Code würd ich unter NET nicht verwenden. Unter CE wird das alles aber sowoeso nicht funktionieren, da du dann auch eine App fürs 'CompactFramework' erstellen musst.


----------



## egor (13 Juli 2010)

hmm ja laut der dokumentation über tcadsdll.dll sollte das auch auf einem ce gerät funktionieren. diese tcadsdll.dll ist auch für ce arm geräte verfügbar.

ich wollte erstmal auf dem windows xp zum laufen bringen. und dann irgendwie auf ce arm umprogrammieren...


----------



## Graph&SCL_Freak (13 Juli 2010)

Dazu solltest du dann aber wenigstens 'sauberen' NET-Code verwenden und nicht diese 'Bandwürmer' vom VB6-Konverter, wo auch noch API-Funktionen drin sind. Ausserdem ist der Funktionsumfang vom CompactFramework viel kleiner, sollte aber wohl für deine Anwendung reichen. Erstell unter Visual Studio erstmal ein 'SmartDeviceProject' für CE und NET 2.0, binde die passende Beckhoff TwinCAT.ads ein und dann geht's weiter.


----------



## egor (14 Juli 2010)

also es hat irndwie nicht geklappt mit tcads.dll aber dafür hat es wunderbar mit dem ads-script-dll http://infosys.beckhoff.com/index.p...mple_vb/html/tcscriptdll_sample02.htm&id=9467 super funktioniert, ob wohl es dort steht das es eher für script sprachen ausgelegt ist!

also hier ist mal der quellcode dazu:

[FONT=&quot]Option[/FONT][FONT=&quot] Strict Off[/FONT]
[FONT=&quot]Option[/FONT][FONT=&quot] Explicit On[/FONT]
[FONT=&quot]Friend[/FONT][FONT=&quot] Class Form1[/FONT]
  [FONT=&quot]    Inherits System.Windows.Forms.Form[/FONT]

  [FONT=&quot]    Public TcClientSync As TCSCRIPTLib.TcScriptSync[/FONT]
  [FONT=&quot]    Public nAdsAmsPort As Short[/FONT]
  [FONT=&quot]    Public strAdsAmsNetId As String[/FONT]

  [FONT=&quot]    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load[/FONT]
  [FONT=&quot]        TcClientSync = CreateObject("TcScript.TcScriptSync")[/FONT]
  [FONT=&quot]        Call TcClientSync.ConnectTo("5.7.45.94.1.1", 801)[/FONT]
  [FONT=&quot]    End Sub[/FONT]

  [FONT=&quot]    Private Sub Form_Terminate()[/FONT]
  [FONT=&quot]        TcClientSync = Nothing[/FONT]
  [FONT=&quot]    End Sub[/FONT]

  [FONT=&quot]    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick[/FONT]
  [FONT=&quot]        Dim ID As Integer[/FONT]
  [FONT=&quot]        Dim Druck As Single[/FONT]
  [FONT=&quot]        Dim Temp As Single[/FONT]
  [FONT=&quot]        Dim Bel1 As Short[/FONT]
  [FONT=&quot]        Dim Bel2 As Short[/FONT]

  [FONT=&quot]        ID = TcClientSync.ReadInt32(&H4040, 10534)[/FONT]
  [FONT=&quot]        TextID_Nummer.Text = CStr(ID)[/FONT]

  [FONT=&quot]        Druck = TcClientSync.ReadReal32(&H4040, 10250)[/FONT]
  [FONT=&quot]        TextDruck.Text = CStr(Druck)[/FONT]

  [FONT=&quot]        Temp = TcClientSync.ReadReal32(&H4040, 10238 )[/FONT]
  [FONT=&quot]        TextTemp.Text = CStr(Temp)[/FONT]

  [FONT=&quot]        Bel1 = TcClientSync.ReadInt16(&H4040, 3781)[/FONT]
  [FONT=&quot]        TextBel1.Text = CStr(Bel1)[/FONT]

  [FONT=&quot]        Bel2 = TcClientSync.ReadInt16(&H4040, 9868 )[/FONT]
  [FONT=&quot]        TextBel2.Text = CStr(Bel2)[/FONT]
  [FONT=&quot]    End Sub[/FONT]

  [FONT=&quot]    Private Sub btClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btClose.Click[/FONT]
  [FONT=&quot]        Close()[/FONT]
  [FONT=&quot]    End Sub[/FONT]

  [FONT=&quot]    Private Sub btStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btStart.Click[/FONT]
  [FONT=&quot]Timer1.Start()[/FONT]
  [FONT=&quot]    End Sub[/FONT]

[FONT=&quot]End[/FONT][FONT=&quot] Class[/FONT]




und als anhang habe ich mal die Projekt mappe angefügt. wenn jemmand ein paar vorschläge hat wie ich das ganze jetzt auf einem windows ce arm laufen lassen kann, bitte her damit 


ps. kann man die prozente anzeige auch irgendwie mit einem Balken darstellen? so wie ein ladebalkten der halt auf eine Potentiometer reagiert?


----------



## egor (19 Juli 2010)

weiß jemmand wie ich diese Befehle in VB eingeben kann? 
http://infosys.beckhoff.com/index.p...1/tcadsnet/html/twincat.ads.setup.htm&id=9081

die isnd ja in C# oder C++ geschrieben?


----------



## egor (22 Juli 2010)

puh endlich habs hin bekommen 

jetzt eine andere Frage!

wie kann ich den die exe jetzt zum Autostart von dem Panel hinzufügen? Es gibt einen StarPlan auf dem Panel, aber ich kann dort irgendwie die exe nicht einbinden (also keien auswahl irgendwelcher exen) wäre schön wenn es irgendwie in nem autostart funktionieren würden....

sonst msus man das immer manuel starten


----------



## soma (22 Juli 2010)

starte die exe von deinen sps-projekt aus

http://infosys.beckhoff.com/content...cplclibutilities_nt_startprocess.htm?id=12028


----------



## Olek (6 Dezember 2012)

Hallo ihr, 

wie ich hier lese habt ihr das Kommunikationsproblem in den Griff bekommen.

Ich habe vielleicht ein vergleichbares Problem. Ich habe ein C# Programm geschrieben, welches über ASP und AJAX auf dem IIS des CX system läuft, also eine WebAnwendung.

Die Anwendung funktioniert und macht was sie soll(Lesen/schreiben), bis ich das System neustarte, denn dann findet diese die Symbole in der SPS nicht mehr. Ich mache vermutlich einen Fehler beim Laden der SPS, da diese die Symbole nicht findet bzw. die SPS diese verigsst. 
Wenn ich mich einmalig mit TwinCAT auf dem Target einlogge und dann wieder auslogge, werden die Symbole gefunden und alles funktioniert. Die TwinCAT-Umgebung wird dann nicht mehr benötigt. 

Ich benutze die neue TwinCAT 3 Umgebung und irgendwie kann ich nicht nachvolziehen, ob ich das SPS Programm auf das Target aufgespielt habe oder nicht...ich klicke auf Konfigurationaktivieren, was laut Doku dies bewerkstelligen soll, aber anscheinend mach ich da noch was falsch :sm23:

Habt ihr so ein Problem auch gehabt und wenn ja, wie habt ihrs gelöst?

Im folgenden Thread versuche ich meine Dummheit zu kompensieren, in dem ich dokumentiere was ich schon alles versucht habe. Meine neuste Vermutung ist, dass ich das Programm nicht wirklich auf das Target geladen habe...
http://www.sps-forum.de/showthread.php/57183-CX5020-Beckhoff-ADS-C-HTML-ASP.Net-AJAX-WinXPe


----------

