rene-privat65
Level-1
- Beiträge
- 7
- Reaktionspunkte
- 0
-> Hier kostenlos registrieren
Ich möchte Werte mit einer Eingabe im Ein/Ausgabe Feld von WinCC zum Datenbaustein schreiben.
Dieses realisiere ich mit der Funktion – SetTagRaw – im - Ein und Ausgabe Feld -, in Ereignis > Ausgabe/Eingabe > Eingabewert.
Um den Eingabewert zum Datenbaustein zu schreiben benutze ich in diesen Script die interne Funktion – GetInputValueDouble – , die den Eingabewert im Format double ermittelt.
Hier wandle ich den Eingabewert dann double zu integer.
Gebe ich einen Wert ein im Ein/Ausgabe Feld und bestätige dieses wird dieser Wert auch richtig im Datenbaustein angezeigt.
Leider werden dabei alle anderen Werte in diesen Datenbaustein zu „0 „ geschrieben.
Dieses kann ich nicht verstehen.
Ich denke weil der Eingabewert richtig geschrieben wird zum Datenbaustein und die anderen Werte des Datenbausteines zu 0 geschrieben werden ist das ein Problem der Funktion SetTagRaw.
Ihr könnt mir glauben ich habe alle Kombinationen ausprobiert, das heist die Werte verändert - BYTE Buffer[78] -, SetTagRaw(Raw_Data_Value,&Buffer[0],78), aber leider ohne Erfolg. Dazu noch andere Funktionen angewendet.
Ich möchte unbedingt mit dieser Art die Werte zum Datenbaustein schreiben.
Ich wäre so dankbar wenn mir einer helfen könnte.
#include "apdefap.h"
void OnPropertyChanged(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, char* value)
{
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction "DMTagName"
// next TagID : 2
#define Raw_Data_Value "SA_Raw_Data_drive_102"
#define Raw_Data_Value_Integer_write "SA_Raw_data_DB_DW_32_drive_102"
// WINCC:TAGNAME_SECTION_END
// WINCCICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCCICNAME_SECTION_END
short int IntValue;
int integer;
double flowpoint;
BYTE *IntBuffer;
BYTE Buffer[78]; // Buffer to turn the Bytes
double flowpoint;
flowpoint=GetInputValueDouble(lpszPictureName,lpszObjectName);
integer= (int) flowpoint;
IntValue = integer;
IntBuffer = (BYTE*)&IntValue; // Pointer for transfer
Buffer[32] = IntBuffer[1]; // write Integeger Value into Raw Data DB Data Box
Buffer[33] = IntBuffer[0];
SetTagRaw(Raw_Data_Value,&Buffer[0],78); // write the RawDataVariable
}
Dieses realisiere ich mit der Funktion – SetTagRaw – im - Ein und Ausgabe Feld -, in Ereignis > Ausgabe/Eingabe > Eingabewert.
Um den Eingabewert zum Datenbaustein zu schreiben benutze ich in diesen Script die interne Funktion – GetInputValueDouble – , die den Eingabewert im Format double ermittelt.
Hier wandle ich den Eingabewert dann double zu integer.
Gebe ich einen Wert ein im Ein/Ausgabe Feld und bestätige dieses wird dieser Wert auch richtig im Datenbaustein angezeigt.
Leider werden dabei alle anderen Werte in diesen Datenbaustein zu „0 „ geschrieben.
Dieses kann ich nicht verstehen.
Ich denke weil der Eingabewert richtig geschrieben wird zum Datenbaustein und die anderen Werte des Datenbausteines zu 0 geschrieben werden ist das ein Problem der Funktion SetTagRaw.
Ihr könnt mir glauben ich habe alle Kombinationen ausprobiert, das heist die Werte verändert - BYTE Buffer[78] -, SetTagRaw(Raw_Data_Value,&Buffer[0],78), aber leider ohne Erfolg. Dazu noch andere Funktionen angewendet.
Ich möchte unbedingt mit dieser Art die Werte zum Datenbaustein schreiben.
Ich wäre so dankbar wenn mir einer helfen könnte.
#include "apdefap.h"
void OnPropertyChanged(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, char* value)
{
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction "DMTagName"
// next TagID : 2
#define Raw_Data_Value "SA_Raw_Data_drive_102"
#define Raw_Data_Value_Integer_write "SA_Raw_data_DB_DW_32_drive_102"
// WINCC:TAGNAME_SECTION_END
// WINCCICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCCICNAME_SECTION_END
short int IntValue;
int integer;
double flowpoint;
BYTE *IntBuffer;
BYTE Buffer[78]; // Buffer to turn the Bytes
double flowpoint;
flowpoint=GetInputValueDouble(lpszPictureName,lpszObjectName);
integer= (int) flowpoint;
IntValue = integer;
IntBuffer = (BYTE*)&IntValue; // Pointer for transfer
Buffer[32] = IntBuffer[1]; // write Integeger Value into Raw Data DB Data Box
Buffer[33] = IntBuffer[0];
SetTagRaw(Raw_Data_Value,&Buffer[0],78); // write the RawDataVariable
}