Post by christoph--b on Probleme mit Speicheraufteilung nach Wechsel von Wago 750-841 zu 750-891
CODESYS Forge
talk
(Post)
Hallo, ich habe in meiner Hausautomation eine Wago 750-841 mit einem doch mittlerweile umfangreichen Programm. Diese wollte ich nun gegen eine 750-891 der 4. Generation austauschen. Aufgrund der Programmgröße hatte ich damals die Speichergröße für Retainvariablen von 16#4000 auf 16#7000 vergrößert und so läuft sie nun seit Jahren fehlerfrei. Allerdings mit der 750-891 bekomme ich offensichtlich eine Überschneidung mit dem Modbusregister, denn die Werte über Modbus spielen verrückt. In der Standardgröße mit 16#4000 tritt das Phänomen nicht auf, reicht dann aber nicht für das vorhandene Programm. Dafür gibt es sicher eine Lösung, denn die 891 hat ja deutlich mehr Speicher. Allerdings kenne ich mich mit der Speicheraufteilung nicht aus, wo man da was optimieren kann, damit ich den Speicherbereich entsprechend erweitern kann, aber es zu keiner Überschneidung kommt. Für Hilfe wäre ich sehr dankbar
Last updated: 2025-07-20
Post by ph0010421 on How to create a stopwatch?
CODESYS Forge
talk
(Post)
Do you need an 'hours-run' counter? And 1 second resolution is ok? I think you're over-thinking it. (The task time needs to be < 1second) Have a look at the LAD... Then, the time in seconds can be made into hh:mm:ss with this FUNction Declarations: FUNCTION funSecondsToStringTime: string VAR_INPUT InSeconds: UDINT; END_VAR VAR AsString: STRING; Minutes: UDINT; Hours: UDINT; Seconds: UDINT; MinutesAsString: STRING(2); HoursAsString: STRING(2); SecondsAsString: STRING(2); END_VAR and the code: Hours := InSeconds / 60 / 60; //Derive hours Minutes := (InSeconds - (Hours * 60 * 60)) / 60; //Derive minutes Seconds := InSeconds - ((Hours * 60 * 60) + (Minutes * 60));//Derive seconds HoursAsString := UDINT_TO_STRING(Hours); MinutesAsString := UDINT_TO_STRING(Minutes); SecondsAsString := UDINT_TO_STRING(Seconds); IF LEN(HoursAsString) = 1 THEN HoursAsString := CONCAT('0',HoursAsString); END_IF; IF LEN(MinutesAsString) = 1 THEN MinutesAsString := CONCAT('0',MinutesAsString); END_IF; IF LEN(SecondsAsString) = 1 THEN SecondsAsString := CONCAT('0',SecondsAsString); END_IF; AsString := CONCAT(HoursAsString, ':'); //assemble string AsString := CONCAT(AsString,MinutesAsString); AsString := CONCAT(AsString,':'); AsString := CONCAT(AsString, SecondsAsString); funSecondsToStringTime := AsString;
Last updated: 2023-12-08
Post by andrax on Meine Gerätesammlung basierend auf TCA9548
CODESYS Forge
talk
(Post)
Hallo zusammen, ich programmiere öfters mal kleinere Messgeräte und Datenlogger. Je nach Einsatzzweck musste ich mir ein paar Gerätetreiber selber schreiben. Da es eine recht große Sammlung ist, stelle ich die hier einfach mal ein. Die Sammlung basiert auf den Gerätetreiber TCA9548 Multiplexer von Steffen Dreyer. Codesysversion: V3.5 SP18 Patch 4 Inhalt: -4channel Dimmer (Stefan Dreyer) -BMA456 (Andre Klien) -BME280 (Stefan Dreyer) -BMP280 (Stefan Dreyer) -EEPROM_24C512 (Stefan Dreyer) -ADS1115 (Andre Klien) -ICP10125 (Andre Klien) -PCA9555 (Stefan Dreyer) -PCA9685 (Stefan Dreyer) -PCF8575 (Stefan Dreyer) -SDP810 (Andre klien) -SSD1306 (Stefan Dreyer) -TCA9548 (Stefan Dreyer) -TSL2561 (Stefan Dreyer) Alle Gerätetreiber laufen über den Multiplexer, können aber auch ohne betrieben werden. Einschränkung: BMA456: Die Konfigurationsdaten werden erfolgreich in den Chip geschrieben, dieser meldet aber config wrong. Warum auch immer, der Sensor funktioniert und bringt hochempfindlich Beschleunigungsdaten. ADS1115: Hie habe ich nur die wichtigsten funktionen implementiert. 1-4 Kanäle, PGA, kontinuierlicher Modus, Datenrate. Alle anderen Funktionen (single-shot, komparator,alm) sind nicht implementiert. Das macht auch keinen Sinn, da diese Funktionen besser über die Steuerung realisiert werden können. Achtung beim ADS1115 ist zwingend ein Levelshifter notwendig, wenn ihr diesen mit 5V betreiben wollt. Ihr grillt sonst euren Raspi (SDA, SCL sind dann 5V) Gruß Andre
Last updated: 2023-12-18
Post by vipul on Multicast udp
CODESYS Forge
talk
(Post)
Hi, Good afternoon can anybody help me with UDP Multicast code. I am not able to send or recieve data when code is dumped on linux device. Below is my code. Declaration: PROGRAM udp_multicast VAR oneTimeFlag :UINT :=0; state: INT:=0; driver: UDP.UDPDriver; //port : UDP.Port;//moved to GVL src_ipAddr_ud: UDINT; src_ipAddr_st:STRING := '192.168.127.155';//'192.168.1.155';//ipms ip address dst_ipAddr_ud:UDINT; group_ipAddr_st:STRING := '239.1.5.10'; //group_ipAddr_ud:UDINT; result: SysTypes.RTS_IEC_RESULT; //result of recieve function. bind: UDINT; //result of binding. resultCreate:SysTypes.RTS_IEC_RESULT;//result of port creation. timer:BLINK; temFlag :INT:= 0; post:INT :=0; checksumFunc:checksumXor; localStringBuf:STRING[500]; chksum:BYTE; dataBuffer:POINTER TO BYTE; checksumString:ARRAY[0..5] OF BYTE; recvSize:__XINT; errorCode:UDINT; joinGroupErrorCode:UDINT; END_VAR ************8 Implementation: IF oneTimeFlag <> 1 THEN oneTimeFlag:=1; resultCreate := driver.CreatePort(ADR(GVL.port)); src_ipAddr_ud := UDP.IPSTRING_TO_UDINT(sIPAddress:= src_ipAddr_st); GVL.group_ipAddr_ud := UDP.IPSTRING_TO_UDINT(sIpAddress:= group_ipAddr_st); GVL.port.IPAddress := src_ipAddr_ud; GVl.port.ReceivePort:= GVL.src_port;//port on which messages are expected. GVl.port.SendPort := GVL.dest_port; GVl.port.OperatingSystem := 0; //0- any system GVL.port.Socket :=3; //3- socket type is multicast bind := GVL.port.Bind(udiIPAddress:=src_ipAddr_ud,); GVl.port.JoinGroup(udiGroupAddress:= GVL.group_ipAddr_ud,udiInterfaceAddress:= src_ipAddr_ud,eLogCode=>joinGroupErrorCode); END_IF timer(ENABLE:=TRUE,TIMELOW:=T#100MS,TIMEHIGH:=T#100MS); IF timer.OUT = TRUE THEN GVL.port.Send(udiIPTo:=GVL.group_ipAddr_ud,GVL.dest_port,pbyData:=ADR(GVL.writeData),diDataSize:=SIZEOF(GVL.writeData)); ELSE SysMemSet(ADR(GVL.readData[0]),0,SIZEOF(GVL.readData)); result := GVl.port.Receive(ADR(GVL.readData),diDataSize:=SIZEOF(GVL.readData),udiIPFrom=>dst_ipAddr_ud,diRecvSize=>recvSize,eLogCode=>errorCode); SysMemMove(ADR(GVL.readDataBuf[0]),ADR(GVL.readData[0]),SIZEOF(GVL.readData)); END_IF post:=LEN(GVL.readDataBuf);
Last updated: 2024-01-14
Post by edepalos on Text list from sd card
CODESYS Forge
talk
(Post)
Hi guys, I have a textlist in my project which is working just as expected in a drop down list. I would like to move this text list to a sd card and access it from there, because I want to ease the editing of the contents of this textlist. I'm imagining a solution like the operator shuts down the plant, takes the sd card out, edits the textlist on the card with a windows machines notepad, then reinserts the card in the PLC and restarts the plant, having the new content of the textlist populating the dropdown list. I'm sorry that I'm asking you to spoonfeed me, but I did not find anything straightforward to do this... I saw in the Project>Project settings>Visualisation a relative path thingy, but I have the plant in operation and I would not like to make 100 trial and errors right now... I'm also not interested in SysLib file read commands and stuff, I would just like to access the file from the cards part, I don't want to replace its contents dynamically or such... nor I have language files or recipes... Thank You in advance! Br, Ede
Last updated: 2024-01-16
Post by axilleas on SMC_Interpolator + SMC_controAxislbyPos
CODESYS Forge
talk
(Post)
dear all I am working on a very generic gantry system (virtual drives + win v3 control) reading gcode from external file. In order to stop the interpolator function from running when gaps are detected, SMC_controlAxisByPos FB has the bStopIpo output which according to the manual is connected to the Interpolator's bEmergencyStop. Lets assume that the axis are parked in position X1000 Y1000 and the initial G code movement is G00 X500 Y500. The normal behavior is to travel from the actual x1000 y1000 to G00 X500 Y500. The SMC_Interpolator always gets the X0 Y0 as the initial position, meaning that the bStopIpo is active until the axis are in X0 Y0 and the release the interpolator to set the new positions to X500 Y500. Is there a suggested method to solve this behavior? bonus question: I get a lot of bStopIpo during standard interpolation movements (not gaps). While working with virtual axis this is not a problem but when real axis are installed this will be an issue. What exactly triggers the bStopIpo output? Slow axis accelerations compare to Gcode defaults? Kind Regards
Last updated: 2024-02-05
Post by squiggleypuff on Can't Add New Version of Modbus TCP Master
CODESYS Forge
talk
(Post)
I'm having a tough time trying to get Modbus working on a Festo CPX-E PLC; it throws these pre-compiler errors as soon as I add in my Modbus TCP Master 3.5.12.30 to my project: I'm confused about the C0046 error, as I have IODrvModbusTCP 4.3.0.0 Library installed. So I thought maybe I needed to use the newest Modbus TCP Master 4.3.0.0, which is in my device repository: However, whenever I go to add this underneath the Ethernet adapter (which is version 4.2.0.0), the only TCP Master version available is the old 3.5.12.30 one, even if I have Display all versions checked.: I even went so far as to delete the old version, but then there were no options to add a Modbus TCP Master under my Ethernet adapter. What needs to be done to use the newest Modbus TCP Master? Or are these pre-compiler errors unrelated and I'm missing something? Any help greatly appreciated.
Last updated: 2024-04-04
Post by tim-roelant on Problem mit control runtime V3 und profinet
CODESYS Forge
talk
(Post)
Hallo Edwin, meinst du das der control-win nicht wie SPS verwendet werden kann? Das program ist klein, und realtime brauch ich gar nicht, Es gibt im bus einem Turck inselstation mit 16 ein und ausgange, und ein MTS linearencoder, womit wir teile messen und abschneiden. Die cycluszeit reist auch nicht aus. Processorleisung bleibt unter 20%. Es geht mir darum das der profinet master in fehler geht, und nicht mehr seine telnehmer erkannen kann. Es kan passieren nach 10 minuten, aber auch nach 5 tage. Nur ein kaltstart bringt die bus wieder am laufen. (kein reconnect mochlich, auch die bus scannen functioniert nicht mehr) Wann ich aber ein ipscan durchfure mit Angryip auf der rechner sind alle telnehmer da. Ich habe noch eine andere application mit die gleiche anwendung, aber wo ein raspberry pi die SPS rolle spielt, und das functioniert einwandfrei. Soll ich fielleicht das OS von Rechenr nach linux umrusten? Der operator ist im moment sehr unzufrieden mit die "upgrade" von maschine... :-( lg Tim
Last updated: 2024-04-11
Post by tim-roelant on Problem mit control runtime V3 und profinet
CODESYS Forge
talk
(Post)
Hallo Edwin, meinst du das der control-win nicht wie SPS verwendet werden kann? Das program ist klein, und realtime brauch ich gar nicht, Es gibt im bus einem Turck inselstation mit 16 ein und ausgange, und ein MTS linearencoder, womit wir teile messen und abschneiden. Die cycluszeit reist auch nicht aus. Processorleisung bleibt unter 20%. Es geht mir darum das der profinet master in fehler geht, und nicht mehr seine telnehmer erkannen kann. Es kan passieren nach 10 minuten, aber auch nach 5 tage. Nur ein kaltstart bringt die bus wieder am laufen. (kein reconnect mochlich, auch die bus scannen functioniert nicht mehr) Wann ich aber ein ipscan durchfure mit Angryip auf der rechner sind alle telnehmer da. Ich habe noch eine andere application mit die gleiche anwendung, aber wo ein raspberry pi die SPS rolle spielt, und das functioniert einwandfrei. Soll ich fielleicht das OS von Rechenr nach linux umrusten? Der operator ist im moment sehr unzufrieden mit die "upgrade" von maschine... :-( lg Tim
Last updated: 2024-04-11
Post by timo on Visu: Angepasster Button mit Statusanzeige - welche Möglichkeiten gibt es?
CODESYS Forge
talk
(Post)
Hallo, Ich gehe gerade Möglichkeiten durch, wie ich Buttons so erstellen kann, dass ich sie nachträglich möglichst einfach bearbeiten kann um z.B. die Farben des Aktiven/Inaktiven Zustandes darzustellen. Die Buttons bestehen aus einem Hintergrund als Farbverlauf, einem Text und einem Icon. Ich habe zuerst den ESC Image Button verwendet, aber auch hier müsste ich nacheinander alle Buttons bearbeiten, wenn ich z.B. die Hintergrundfarbe anpassen will. Jetzt habe ich die Buttons als einzelne Visualisierungen erstellt und in der Visu jeweils als Frames eingeblendet. Den Zustand kann ich dann durch unsichtbare Elemente in der Buttonvisu darstellen. Weil hinter jeder Buttonvisu ein Frame meines Hintergrundes liegt, kann ich die einfach anpassen. Siehe Bild- der Frame ist der graue Hintergrund, das Rechteck ist die Umrandung für den Status mit einer transparenten Füllfarbe. Gibt es da eine einfachere Möglichkeit die Elemente zu verknüpfen, sodass ich einen Button habe, den ich nachträglich möglichst einfach abändern kann? Bei den Buttons bei denen ich keine Icons einblende, kann ich direkt den Text auf den Hintergrundframe setzen. Wenn ich hier aber das farbige Randungsrechteck für den Status über das Frame liege, verdeckt es diesen natürlich. Gibt es eine Möglichkeit Elemente so einzublenden, dass dahinter liegende Elemente angeklickt werden können? Alternativ muss ich die Aktion auch noch mit dem überlagertem Element verknüfen.
Last updated: 2024-04-22
Post by culius on JSON
CODESYS Forge
talk
(Post)
Hey guys, I am trying to write a JSON. First time after login in PLC after download everthing works. But when I want to change values during runtime and try to recreate the JSON nothing happens. When forcing the xStart as an impulse i want to recreate it and see 2 as Key3 instead of 1 from the first run. Any Idea how to make this work? PROGRAM test VAR factory : JSON.JSONDataFactory; eDataFactoryError : JSON.FBF.ERROR; pJsonData : POINTER TO JSON.JSONData := factory.Create(eError => eDataFactoryError); fb_JBuilder : JSON.JSONBuilder; wsValue : WSTRING; diRootIndex, diObject1Index : DINT; iValue : INT; jsonArrayWriter : JSON.JSONByteArrayWriter; wsJsonData : WSTRING(1000); xFirst : BOOL := TRUE; END_VAR IF xFirst THEN fb_JBuilder(pJsonData := pJsonData, diRootObj => diRootIndex); wsValue := "Value1"; fb_JBuilder.SetKeyWithValue("Key1", wsValue, diParentIndex := diRootIndex); diObject1Index := fb_JBuilder.SetKeyWithObject("Key2", diParentIndex := diRootIndex); iValue := iValue + 1 ; // -----------!!! secound run should increment key3!!!!------------ fb_JBuilder.SetKeyWithValue("Key3", iValue, diParentIndex := diObject1Index); xFirst := FALSE; END_IF jsonArrayWriter(xExecute := TRUE, pwData := ADR(wsJsonData), udiSize := SIZEOF(wsJsonData), jsonData := pJsonData^, xAsyncMode := FALSE); Kind Regards
Last updated: 2024-04-30
Post by caprez95 on Trace Restart Visuelement
CODESYS Forge
talk
(Post)
Hallo zusammen. Ich habe schon länger mit dem Problem zu kämpfen, dass ich einen Trend (Visuelement) nicht resetten (neustarten) kann. Ich habe es jetzt mit dem Beispiel hinbekommen, die Trace-Aufzeichnung über die CmpTraceMgr Bibliothek zu steuern. Aber wie bekomme ich diese Trace-Aufzeichnung in ein Visuelement? Der Code sieht wie folgt aus: // Configure trace IF xInit THEN // Create a trace packet PacketConfig.pszName := ADR('IECTraceConfiguration.Trace1'); // Name of trace PacketConfig.pszApplicationName := ADR('IECTraceConfiguration'); // Name of the application PacketConfig.pszIecTaskName := ADR('Task'); // Name of the task PacketConfig.pszComment := ADR('Demo packet'); PacketConfig.ulEveryNCycles := 1; PacketConfig.ulBufferEntries := 1000; PacketConfig.ulFlags := TRACE_PACKET_FLAGS.TRACE_PACKET_FLAGS_TIMESTAMP_MS AND TRACE_PACKET_FLAGS.TRACE_PACKET_FLAGS_AUTOSTART; IF (NOT fbTraceManager.CreatePacket(PacketConfig := PacketConfig, hPacket=>hPacket1)) THEN xError := TRUE; END_IF // Create a trace record RecordConfig.pszVariable := ADR('iSignal'); // This is the name of variable to record RecordConfig.tcClass := INT_TO_UDINT(TypeClass.TYPE_INT); // Type of the recording variable RecordConfig.ulSize := SIZEOF(iSignal); // Size of the recording variable pApp := AppFindApplicationByName('IECTraceConfiguration', 0); AppGetAreaOffsetByAddress(pApp, ADR(iSignal), ADR(RecordConfig.tvaAddress.taAddress.Area.usArea), ADR(RecordConfig.tvaAddress.taAddress.Area.ulOffset)); // Get and set area offsets RecordConfig.tvaAddress.ulAddressFlags := TRACE_VAR_ADDRESS_FLAGS_IEC OR TRACE_VAR_ADDRESS_FLAGS_AREA_OFFSET; RecordConfig.ulGraphColor := 16#FF00FF00; // green RecordConfig.ulGraphType := 1; // Line with points IF (NOT fbTraceManager.AddRecord(RecordConfig := RecordConfig, hPacket := hPacket1, hRecord => hRecord1)) THEN xError := TRUE; END_IF xInit := FALSE; END_IF // Starts the recording IF xStart THEN IF (NOT fbTraceManager.StartPacket(hPacket := hPacket1)) THEN xError := TRUE; END_IF xStart := FALSE; END_IF // Stop the recording IF xStop THEN IF (NOT fbTraceManager.StopPacket(hPacket := hPacket1)) THEN xError := TRUE; END_IF xStop := FALSE; END_IF // Reset the recording IF xReset THEN IF (NOT fbTraceManager.ResetPacket(hPacket := hPacket1)) THEN xError := TRUE; END_IF xReset := FALSE; END_IF
Last updated: 2024-06-04
Post by fefefede on Get the numer of day
CODESYS Forge
talk
(Post)
Hello i tro to create a program to turn on or off the air condition in relationship temperature and numer of day. I can't get the number of day. I try this after installing SysTime library but this not work and have this error on debug ------ Build started: Application: Device.Sim.Device.Application ------- Typify code... Generate code... [ERROR] giorno_accensione_aria: PLC_PRG Device: PLC Logic: Application: C0032: Cannot convert type 'Unknown type: 'SysTimeCore(TRUE)'' to type 'TIME' [ERROR] giorno_accensione_aria: PLC_PRG Device: PLC Logic: Application: C0035: Program name, function or function block instance expected instead of 'SysTimeCore' [ERROR] giorno_accensione_aria: PLC_PRG Device: PLC Logic: Application: C0032: Cannot convert type 'Unknown type: 'DayOfWeek(CurrentTime)'' to type 'INT' [ERROR] giorno_accensione_aria: PLC_PRG Device: PLC Logic: Application: C0035: Program name, function or function block instance expected instead of 'DayOfWeek' [INFORMATION] giorno_accensione_aria: PLC_PRG Device: PLC Logic: Application: C0181: Related position Build complete -- 4 errors, 0 warnings : No download possible PROGRAM PLC_PRG VAR Temperatura: UDINT; AriaCondizionata: BOOL := FALSE; CurrentDayOfWeek: INT; //Variabile Giorno CurrentTime: TIME; GiornoDellaSettimana: INT; DayOfWeek: INT; END_VAR CurrentTime := SysTimeCore(TRUE); // Ottieni l'ora corrente CurrentDayOfWeek := DayOfWeek(CurrentTime); CASE GiornoDellaSettimana OF 1: // Azioni per Lunedì 2: // Martedì se più 10° accend altrimenti spegni IF Temperatura >= 10 THEN AriaCondizionata := TRUE; ELSE AriaCondizionata := FALSE; END_IF 3: // Mercoledì se più di 50° accendi altrimenti spegni IF Temperatura >=50 THEN AriaCondizionata := TRUE; ELSE AriaCondizionata := FALSE; END_IF 4: // Giovedì se più di 40° accendi altrimenti spegni IF Temperatura >=40 THEN AriaCondizionata := TRUE; ELSE AriaCondizionata := FALSE; END_IF 5: // Venerdì se più di 50° accendi altrimenti spegni IF Temperatura >=50 THEN AriaCondizionata := TRUE; ELSE AriaCondizionata := FALSE; END_IF 6: // Sabato se più di 25° accendi altrimenti spegni IF Temperatura >=25 THEN AriaCondizionata := TRUE; ELSE AriaCondizionata := FALSE; END_IF 7: // Domenica sempre spenta AriaCondizionata := FALSE; END_CASE
Last updated: 2023-09-14
Post by gorditron on I2C Communication with
CODESYS Forge
talk
(Post)
Hello, I have problems with the I2C communication to an ADS7828 AD converter. I don't get any value back from the chip. I use a Kontron chip (ARM 32SC) with Linux as the operating system. I also use the CmpCharDevice library. ADS7828 parameters Address: A1 = 0 / A0 = 0 = SD = 1 = Single End C2 = 0 / C1= 0 / C0= 0 / Channel 0 PD1 = Internal Reference and PD0 = AD Converter ON Here is my code: VAR b_i2cAdr : BYTE := 16#48; (* Standard I2C-Adresse des ADS7828 *) x_Init: BOOL;(* Flag für die Initialisierung *) b_config_byte: BYTE;(* Konfigurationsbyte für den ADS7828 *) ab_cmd_buffer : ARRAY [0..0] OF BYTE; (* Buffer für den Befehl *) ab_data_buffer : ARRAY [0..1] OF BYTE; (* Buffer für die empfangenen Daten *) ui_adc_value_1 : UINT; (* Ausgelesener ADC-Wert *) I2C_Handle: RTS_IEC_HANDLE; (* Handle für das I2C-Device *) di_result_open: DINT;(* Ergebnis der Funktionsaufrufe *) di_result_adr: DINT;(* Ergebnis der Funktionsaufrufe *) di_result_wr_cmd: DINT;(* Ergebnis der Funktionsaufrufe *) di_result_rd_cmd: DINT;(* Ergebnis der Funktionsaufrufe *) di_result_close: DINT;(* Ergebnis der Funktionsaufrufe *) END_VAR //*** Init from the I2C communication port *** IF NOT x_Init THEN I2C_Handle := CDOpen(szFile:= '/dev/i2c-0', dFlags:= O_RDWR, pResult:= ADR(di_result_open)); //* I2C opening * //*** set of the I2C address *** CDIoctl(hFile:=I2C_Handle , dRequest:=1795 , dParameter:=b_i2cAdr , pResult:=ADR(di_result_adr) ); x_Init := TRUE; END_IF (* Hauptlogik *) IF I2C_Handle <> 0 THEN (* Konfigurationsbyte setzen: Single-Ended Kanal 0, interne Referenz *) b_config_byte := 16#8C; (* 10001100b: AIN0, interne Referenz, Single-Ended *) ab_cmd_buffer[0] := b_config_byte; (* Schreiboperation zum Konfigurieren des Chips *) CDWrite(hFile:= I2C_Handle, pbyBuffer:= ADR(ab_cmd_buffer), udCount:= SIZEOF(ab_cmd_buffer), pResult:= ADR(di_result_wr_cmd)); IF di_result_wr_cmd = 0 THEN (* Leseoperation, um den ADC-Wert zu erhalten *) CDRead(hFile:= I2C_Handle, pbyBuffer:= ADR(ab_data_buffer), udCount:= SIZEOF(ab_data_buffer), pResult:= ADR(di_result_rd_cmd)); IF di_result_rd_cmd = 0 THEN (* ADC-Wert aus den Daten extrahieren *) ui_adc_value_1 := SHL(TO_UINT(ab_data_buffer[0]), 8) OR TO_UINT(ab_data_buffer[1]); ELSE (* Fehler beim Lesen der Daten *) ui_adc_value_1 := 0; (* ADC-Wert auf 0 setzen *) END_IF ELSE (* Fehler beim Schreiben der Konfiguration *) ui_adc_value_1 := 0; END_IF END_IF
Last updated: 2024-12-13
Post by timo on String nach erlaubten/unerlaubten Zeichen durchsuchen
CODESYS Forge
talk
(Post)
Hallo, Ich bastele gerade an einer möglichst einfachen Möglichkeit mit der ich prüfen kann ob ein String Sonderzeichen enthält. Mein Ansatz ist ein ST FB mit einer Case Schrittkette. Ich vergleiche jedes Zeichen des Strings mit allen Zeichen eines vorher definierten Strings erlaubter Zeichen, der A-Z, a-z und 0-9 enthält und ggf angepasst werden kann, wenn ich weitere Zeichen erlaube. Leider wird meine j Zählervariable nicht richtig ausgeführt. Hat da jemand eine Idee? Oder gibt es eine einfachere Lösung/einen fertigen FB den ich mir anschauen kann? FUNCTION_BLOCK Sonderzeichen_Check VAR_INPUT inputString : STRING; // Zu prüfender String startCheck : BOOL; // Startsignal END_VAR VAR_OUTPUT ok : BOOL; // TRUE, wenn keine ungültigen Zeichen END_VAR VAR i : INT := 1; // Input-String Zähler j : INT := 1; // erlaubte Zeichen Zähler allowedChars: STRING := 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; // Erlaubte Zeichen currentChar : STRING[1]; // Aktuelles Zeichen step : INT := 0; // Schritt END_VAR CASE step OF 0: // Warten auf Start IF startCheck THEN step := 10; END_IF 10: // Initialisierungen i := 1; j := 1; ok := TRUE; // Standard: ok step := 20; 20: // Durchgehen des Eingangs-Strings IF i <= LEN(inputString) THEN currentChar := MID(inputString, i, 1); // Aktuelles Zeichen step := 30; ELSE step := 70; // Alle Zeichen ok END_IF 30: // Durchgehen der erlaubten Zeichen IF j <= LEN(allowedChars) THEN step := 40; // Zu Schritt 40 ELSE step := 60; // Ungültiges Zeichen END_IF 40: // Vergleich IF currentChar = MID(allowedChars, j, 1) THEN i := i + 1; // Nächstes Zeichen im Input step := 20; ELSE j := j + 1; // Nächstes erlaubtes Zeichen step := 30; END_IF 60: // Ungültiges Zeichen ok := FALSE; // Setze auf FALSE step := 0; 70: // Alle Zeichen ok step := 0; END_CASE
Last updated: 2025-01-20
Post by jari-koivuluoma on Problem trying Net Base Services 3.5.15.0 TCP connection
CODESYS Forge
talk
(Post)
I have a need to send messages between 2 PLCs and I cant use network variables (because of size limit) so I tried writing this simple test program. This seems to work fine. I can send messages back and forth when a first "Start server" and then "Connect client". See the attached image. However, if I disconnect the client by setting ClientConnect to false and try to re-connect then the TCP_Client just gives me TIMEOUT error. When I stop and start the server again, then Im able to reconnect. How is this supposed to work? Why reconnecting wont work. There is not other way of disconnecting the client than setting xEnable of the TCP_Client to false. This is just a testing program and I will try it on 2 seperate devices once this works. PROGRAM PLC_PRG VAR CONSTANT mySize : UDINT := 255; END_VAR VAR Server: NBS.TCP_Server; ServerIpStr: STRING := '127.0.0.1'; ServerIP: NBS.IP_ADDR; ServerPort: UINT := 50000; ServerConnection: NBS.TCP_Connection; Client: NBS.TCP_Client; ServerRead: NBS.TCP_Read; ServerWrite: NBS.TCP_Write; ServerSend: STRING(mySize); ServerReceive: STRING(mySize); ServerConnect: BOOL; bServerSend: BOOL; IP: NBS.INADDR; ConnectedClientIP: STRING; ClientPort: UINT := 50000; ClientIpStr: STRING := '192.168.1.49'; ClientIP: NBS.IP_ADDR; ClientRead: NBS.TCP_Read; ClientWrite: NBS.TCP_Write; ClientSend: STRING(mySize); ClientReceive: STRING(mySize); ClientConnect: BOOL; bClientSend: BOOL; Error: BOOL; Message: BOOL; END_VAR // Server ServerIP.sAddr := ServerIpStr; Server( ipAddr := ServerIP, uiPort := ServerPort ); ServerConnection( xEnable := Server.xEnable, hServer := Server.hServer, ); IP := ServerConnection.IPAddress; ConnectedClientIP := F_Concat7( BYTE_TO_STRING(IP.S_un_b.s_b1),'.', BYTE_TO_STRING(IP.S_un_b.s_b2),'.', BYTE_TO_STRING(IP.S_un_b.s_b3),'.', BYTE_TO_STRING(IP.S_un_b.s_b4)); ServerRead( xEnable := ServerConnection.xActive, hConnection := ServerConnection.hConnection, szSize := SIZEOF(ServerReceive), pData := ADR(ServerReceive) ); IF ServerRead.xReady AND ServerRead.szCount > 0 THEN Message := TRUE; END_IF IF ServerRead.eError > 0 THEN Error := TRUE; END_IF ServerWrite( xExecute := ServerConnection.xActive AND bServerSend, hConnection := ServerConnection.hConnection, szSize := LEN(ServerSend)+1, pData := ADR(ServerSend) ); IF ServerWrite.xDone THEN bServerSend := FALSE; END_IF IF ServerWrite.eError > 0 THEN Error := TRUE; END_IF // Client ClientIP.sAddr := ClientIpStr; Client( xEnable := ClientConnect, ipAddr := ClientIP, uiPort := ServerPort, udiTimeOut := 10000000 ); ClientRead( xEnable := Client.xActive, hConnection := Client.hConnection, szSize := SIZEOF(ClientReceive), pData := ADR(ClientReceive) ); IF ClientRead.xReady AND ClientRead.szCount > 0 THEN Message := TRUE; END_IF IF ClientRead.eError > 0 THEN Error := TRUE; END_IF ClientWrite( xExecute := Client.xActive AND bClientSend, hConnection := Client.hConnection, szSize := LEN(ClientSend)+1, pData := ADR(ClientSend) ); IF ClientWrite.xDone THEN bClientSend := FALSE; END_IF IF ClientWrite.eError > 0 THEN Error := TRUE; END_IF
Last updated: 2024-10-03
Post by elizaduke92 on Temu Gutscheincode [acu639380] 40% Rabatt Deutschland
CODESYS Forge
talk
(Post)
Wenn Sie auf der Suche nach einem großartigen Schnäppchen sind, dann haben wir das Richtige für Sie! Mit dem Temu Gutschein-Code 40% Rabatt können Sie beim Einkaufen im Temu-Shop bares Geld sparen. Der Gutscheincode acu639380 bietet Ihnen die besten Vorteile, insbesondere für Menschen in Deutschland. Nutzen Sie diese Gelegenheit, um Ihre Lieblingsartikel zu einem reduzierten Preis zu erwerben. Um mehr zu erfahren, schauen Sie sich die aktuellen Temu Gutschein-Codes 2024 für bestehende Kunden und den Temu 40% Rabatt Gutschein an. Es gibt zahlreiche Möglichkeiten, von diesen Angeboten zu profitieren! Was ist der Temu Gutscheincode 40% Rabatt? Der Temu Gutschein 40% Rabatt ermöglicht es sowohl neuen als auch bestehenden Kunden, fantastische Vorteile zu genießen. Wenn Sie unseren Gutschein auf der Temu-App oder der Website verwenden, profitieren Sie von einem 40% Rabatt Temu Gutschein. Hier sind einige Vorteile, die Sie mit dem acu639380 Gutscheincode erhalten: 40% Rabatt für neue Nutzer: Genießen Sie einen großzügigen Rabatt auf Ihren ersten Einkauf. 40% Rabatt für bestehende Nutzer: Auch treue Kunden können von diesem Rabatt profitieren. $100 Gutschein-Paket für mehrfachen Gebrauch: Verwenden Sie den Gutschein für mehrere Einkäufe. $100 flacher Rabatt für neue Kunden: Ein zusätzlicher Vorteil für Neulinge auf der Plattform. Zusätzliche $100 Rabatt-Aktion für bestehende Kunden: Belohnung für Loyalität und wiederholte Käufe. Temu Gutscheincode 40% Rabatt für neue Nutzer Neue Nutzer können mit unserem Gutscheincode auf der Temu-App die besten Vorteile genießen. Nutzen Sie den Temu Gutschein 40% Rabatt und den Temu Gutschein-Code 40 Rabatt für bestehende Nutzer, um maximal zu sparen. Hier sind einige Vorteile, die Sie mit dem acu639380 Gutscheincode erhalten: 40% Rabatt für neue Nutzer: Sparen Sie beim ersten Einkauf kräftig. $100 Gutschein-Paket für neue Kunden: Ideal für Ihre ersten Käufe. Bis zu $100 Gutschein-Paket für mehrfachen Gebrauch: Nutzen Sie es mehrmals für zusätzliche Ersparnisse. Kostenloser Versand nach Deutschland: Genießen Sie eine stressfreie Lieferung. Zusätzliche 30% Rabatt auf jeden Einkauf für Erstkäufer: Ein attraktives Angebot für neue Kunden. Wie löse ich den Temu 40% Rabatt Gutschein für neue Kunden ein? Um den Temu 40% Rabatt und den Temu 40 Rabatt Gutschein-Code erfolgreich einzulösen, befolgen Sie diese einfachen Schritte: Besuchen Sie die Temu-Website oder öffnen Sie die App. Wählen Sie Ihre gewünschten Produkte aus und legen Sie sie in den Warenkorb. Gehen Sie zur Kasse und geben Sie den Gutscheincode acu639380 im entsprechenden Feld ein. Klicken Sie auf "Einlösen" und überprüfen Sie den Rabatt. Schließen Sie Ihre Bestellung ab! Temu Gutscheincode 40% Rabatt für bestehende Nutzer Auch bestehende Nutzer können von unserem Gutscheincode auf der Temu-App profitieren. Verwenden Sie den Temu 40 Rabatt Gutschein-Code und den Temu Gutschein-Code für bestehende Kunden, um von tollen Rabatten zu profitieren. Hier sind einige Vorteile, die Sie mit dem acu639380 Gutscheincode erhalten: 40% zusätzlicher Rabatt für bestehende Temu-Nutzer: Profitieren Sie von einem exklusiven Angebot. $100 Gutschein-Paket für mehrere Käufe: Nutzen Sie es für weitere Einkäufe. Kostenloses Geschenk mit Expressversand in ganz Deutschland: Ideal für schnelle Lieferungen. Zusätzliche 30% Rabatt auf den bestehenden Rabatt: Maximieren Sie Ihre Ersparnisse. Kostenloser Versand nach Deutschland: Genießen Sie eine sorgenfreie Bestellung. Wie verwende ich den Temu Gutscheincode 40% Rabatt für bestehende Kunden? Um den Temu Gutschein-Code 40 Rabatt und den Temu Rabatt-Code für bestehende Nutzer zu verwenden, befolgen Sie diese Schritte: Melden Sie sich in Ihrem Temu-Konto an oder erstellen Sie ein neues Konto. Wählen Sie die Produkte aus, die Sie kaufen möchten. Gehen Sie zur Kasse und geben Sie den Gutscheincode acu639380 ein. Bestätigen Sie den Rabatt und schließen Sie Ihre Bestellung ab. Wie finde ich den Temu Gutscheincode 40% Rabatt? Um den Temu Gutschein-Code 40% Rabatt für die erste Bestellung und die neuesten Temu Coupons 40 Rabatt zu finden, können Sie sich einfach für den Temu-Newsletter anmelden. So erhalten Sie geprüfte und getestete Gutscheine direkt in Ihr Postfach. Besuchen Sie auch die sozialen Medien von Temu, um die aktuellsten Gutscheine und Angebote zu entdecken. Zudem können Sie vertrauenswürdige Coupon-Websites besuchen, um die neuesten und funktionierenden Temu-Gutscheincodes zu finden. Wie funktionieren Temu 40% Rabatt Coupons? Der Temu Gutschein-Code 40% Rabatt für Erstbenutzer bietet eine direkte Möglichkeit, beim Einkaufen zu sparen. Wenn Sie den Gutschein verwenden, wird der Rabatt direkt auf Ihren Einkauf angewendet, sodass Sie sofortige Ersparnisse genießen können. Der Prozess ist einfach: Sie geben den Gutscheincode an der Kasse ein, und der Rabatt wird von Ihrem Gesamtbetrag abgezogen. Dies macht das Einkaufen nicht nur günstiger, sondern auch einfacher und schneller. Wie kann ich 40% Rabatt Coupons in Temu als neuer Kunde verdienen? Der Temu Gutschein-Code 40% Rabatt und der Temu 40 Rabatt Gutschein-Code für die erste Bestellung bieten eine einfache Möglichkeit, Geld zu sparen. Um die Gutscheine zu verdienen, melden Sie sich einfach bei Temu an und nutzen Sie die speziellen Angebote für neue Kunden. Mit jedem Kauf und durch das Teilen von Temu auf sozialen Medien können Sie zusätzliche Rabatte und Coupons erhalten. So können Sie kontinuierlich sparen und von tollen Angeboten profitieren. Was sind die Vorteile der Nutzung von Temu 40% Rabatt Coupons? Die Verwendung unserer Gutscheincodes auf der Temu-App und der Website hat viele Vorteile. Mit dem Temu 40% Rabatt Gutschein-Code legitim und dem Gutschein-Code für Temu 40 Rabatt können Sie folgende Vorteile genießen: 40% Rabatt auf die erste Bestellung $100 Gutschein-Paket für mehrfachen Gebrauch Bis zu 70% Rabatt auf beliebte Artikel Zusätzliche 30% Rabatt für bestehende Temu-Kunden Bis zu 90% Rabatt auf ausgewählte Artikel Kostenloses Geschenk für neue Nutzer Kostenloser Versand nach Deutschland Temu kostenloses Geschenk und spezielle Rabatte für neue und bestehende Nutzer Die Verwendung unseres Temu 40% Rabatt Gutscheincodes und 40% Rabatt Temu Gutscheincodes bietet viele Vorteile. Mit dem Gutscheincode acu639380 erhalten Sie zahlreiche Vorteile: 40% Rabatt auf die erste Bestellung 40% Rabatt für bestehende Kunden Zusätzliche 30% Rabatt auf jeden Artikel Kostenloses Geschenk für neue Temu-Nutzer Bis zu 70% Rabatt auf Artikel in der Temu-App Kostenloses Geschenk mit kostenlosem Versand nach Deutschland Vor- und Nachteile der Verwendung des Temu Gutscheincodes 40% Rabatt Bei der Nutzung des Temu Gutscheincodes 40% Rabatt und des Temu kostenlosen Gutscheincodes 40 Rabatt gibt es sowohl Vorteile als auch Nachteile. Hier sind einige der wichtigsten Punkte: Vorteile: Hohe Einsparungen auf die erste Bestellung. Verfügbarkeit von Gutscheinen für mehrere Käufe. Zugang zu exklusiven Rabatten und Geschenken. Kostenloser Versand nach Deutschland. Einfache Einlösung der Gutscheincodes. Nachteile: Mögliche Einschränkungen bei bestimmten Produkten. Einige Gutscheine können zeitlich begrenzt sein. Nicht alle Angebote sind für bestehende Kunden verfügbar. Bedingungen und Konditionen des Temu 40% Rabatt Gutscheincodes 2024 Bei der Verwendung des Temu Gutscheincodes 40% Rabatt für kostenlosen Versand und des Temu Gutscheincodes 40% Rabatt Reddit gelten folgende Bedingungen: Unsere Gutscheincodes haben kein Ablaufdatum und können jederzeit verwendet werden. Die Gutscheine sind sowohl für neue als auch bestehende Nutzer in Deutschland gültig. Es gibt keine Mindestkaufanforderungen zur Verwendung der Temu-Gutscheincodes. Abschließende Anmerkung Zusammenfassend lässt sich sagen, dass der Temu Gutschein-Code 40% Rabatt eine hervorragende Möglichkeit ist, beim Einkaufen zu sparen. Nutzen Sie diese Chance, um von den vielen Vorteilen zu profitieren! Mit dem Temu 40% Rabatt Gutschein stehen Ihnen zahlreiche Möglichkeiten offen, um beim Einkaufen in Deutschland Geld zu sparen. FAQs zum Temu 40% Rabatt Gutschein 1. Wie oft kann ich den Temu Gutscheincode verwenden? Sie können den Temu Gutscheincode mehrmals verwenden, solange er gültig ist und Sie die Bedingungen einhalten. Ist der Gutscheincode für internationale Bestellungen gültig? Der Gutscheincode ist in erster Linie für Nutzer in Deutschland gedacht und kann Einschränkungen für internationale Bestellungen haben. Wo finde ich die neuesten Gutscheincodes? Die neuesten Gutscheincodes finden Sie auf der Temu-Website, im Newsletter oder auf vertrauenswürdigen Coupon-Websites. Kann ich den Gutscheincode mit anderen Rabatten kombinieren? In der Regel sind Gutscheincodes nicht mit anderen Angeboten kombinierbar, es sei denn, dies wird ausdrücklich angegeben. Was soll ich tun, wenn mein Gutscheincode nicht funktioniert? Überprüfen Sie, ob der Gutscheincode korrekt eingegeben wurde und ob er noch gültig ist. Wenn das Problem weiterhin besteht, kontaktieren Sie den Kundensupport von Temu.
Last updated: 2024-10-26
Post by couponsah on كود خصم لبيه 50 رمز : (MA250) تخفيض قوي
CODESYS Forge
talk
(Post)
كود خصم لبيه 50 رمز : (MA250) تخفيض قوي ## كود خصم لبيه 50 رمز : (MA250) تخفيض 15% أكبر كود خصم لبيه 50 اليوم لعام 2024 هو “MA250” والذي يمنحك خصم يصل إلى 60% على جميع المنتجات عند تطبيق الكود قبل إتمام عملية الدفع في متجر لبيه. كود خصم لبيه 50 رمز (MA250) 👗 احصلي على خصم 20% من لبيه مع رمز MA250 👗 . لبيه هى الحل المتكامل لتقديم خدمات الرعاية النفسية أونلاين، عبر الجلسات والمحاضرات من المختصين بكل سهولة وسرية من خلال منصة لبيه. كوبونات لبيه توفر لبيه مجموعة من أكواد الخصم على خدماتها، والتي يمكن استخدامها للحصول على خصومات على الطلبات: كود خصم لبيه (MA250) يمنح خصمًا بنسبة 25% على جميع الطلبات. كود خصم لبيه 50 (MA250) يمنح خصمًا بقيمة 50 ريالًا سعوديًا على الطلبات التي تزيد عن 200 ريال سعودي. كود خصم تطبيق لبيه (MA250) يمنح خصمًا بنسبة 10% على الطلبات الأولى عند استخدام تطبيق لبيه. كود خصم لبيه تويتر (MA250) يمنح خصمًا بنسبة 15% على الطلبات التي تتم من خلال مشاركة تغريدة لبيه على تويتر. كود خصم لبيه ريما أم يوسف (MA250) يمنح خصمًا حصريًا للمتابعين ريما أم يوسف على Instagram. كود خصم لبيه اليوم الوطني (MA250) يمنح خصمًا خاصًا خلال اليوم الوطني للمملكة العربية السعودية. كود خصم لبيه 50 رمز : (MA250) تخفيض 15% هل تعاني من ضغوط الحياة اليومية؟ 😥 لبيه الحل الأمثل لك! لبيه هو المنصة الرائدة في تقديم خدمات الرعاية النفسية أونلاين في المملكة العربية السعودية. من خلال جلساتنا و محاضراتنا المباشرة مع مختصين معتمدين، نضمن لك السرية التامة في منصة سهلة الاستخدام. 👍 استمتع بخصم خاص بمناسبة انضمامك لنا! باستخدام كود خصم "MA250"، يمكنك الحصول على خصم 50% على جلسة الرعاية النفسية الأولى الخاصة بك. 🤑 ما تنتظر؟ انضم إلى لبيه اليوم واحصل على المساعدة التي تستحقها. دعنا نساعدك على العيش بصحة نفسية أفضل! 💪 جميع كوبونات متجر لبيه موقع كوبونات شهير يقدم عروض خصم متجر لبيه 🌐🛒 يُمكنك الآن الاستفادة من خصومات هائلة عند التسوّق من متجر لبيه عبر استخدام كوبونات الخصم المتوفرة على موقع كوبونات شهير. أهم كوبون خصم متوفر حاليًا: كوبون خصم (MA250) 🤑 يُوفر خصمًا بنسبة 10% من قيمة الطلبية الإجمالية. كيفية استخدام الكوبون: قم بزيارة متجر لبيه الإلكتروني واختر المنتجات التي ترغب في شرائها. انتقل إلى صفحة الخروج وأدخل رمز الكوبون (MA250) في حقل "كود الخصم". اضغط على "تطبيق" وستُطبق الخصم على طلبك تلقائيًا. شروط وأحكام استخدام الكوبون: الحد الأقصى للخصم هو 10% من قيمة الطلبية. لا يُمكن الجمع بين هذا الكوبون مع أي عروض أو خصومات أخرى. الكوبون صالح لفترة محدودة فقط. للحصول على أحدث كوبونات الخصم وعروض التخفيضات، يرجى زيارة موقع كوبونات الشهير بانتظام. 🛍️💰 معلومات عن متجر لبيه و كود خصم لبيه 50 لبيك: حلول رعاية نفسية شاملة عبر الإنترنت راحة وخصوصية: استمتع بمواعيد الرعاية النفسية الخاصة بك بسهولة وسرية تامة من خلال منصة لبيك المريحة. وداعًا للتنقلات المرهقة وأوقات الانتظار الطويلة! 🌐 جلسات الاستشارات: تواصل مع أفضل المتخصصين النفسيين المعتمدين لمناقشة مخاوفك، وإنشاء خطط العلاج المخصصة، والحصول على الدعم اللازم في أي وقت ومكان. 👷♀️👷♂️ المحاضرات التوعوية: حضر محاضرات تثقيفية مليئة بالمعلومات القيمة حول مواضيع الصحة العقلية، وشارك بصوتك في الجلسات الحوارية الجماعية. 📚💡 الوصول السريع للدعم: استفد من خدمة الخط الساخن التي تعمل على مدار الساعة طوال أيام الأسبوع للحصول على المساعدة الفورية والطوارئ. نحن هنا دائمًا للاصغاء إليك. 📞✨ لبيه: منصة الرعاية النفسية الشاملة 💆♀️💆♂️💻 نظرة عامة تُقدم منصة "لبيه" حلولاً متكاملة للرعاية النفسية عن بعد. توفر جلسات فردية ومحاضرات جماعية مع متخصصين مرخصين من خلال منصة افتراضية آمنة وسرية. العروض الجلسات الفردية: استشارات خاصة مع معالجين نفسيين وأخصائيين اجتماعيين مرخصين. المحاضرات الجماعية: ندوات عبر الإنترنت حول مجموعة واسعة من الموضوعات المتعلقة بالصحة النفسية، بما في ذلك: إدارة التوتر والقلق تحسين احترام الذات التعامل مع العلاقات التأقلم مع الحزن وفقدان الأحبة الموارد التعليمية: مقالات ومقاطع فيديو ودورات مصممة لدعم رحلة الصحة النفسية الخاصة بك. المميزات: الراحة: يمكنك الوصول إلى خدمات الرعاية النفسية من أي مكان في أي وقت. الخصوصية: تحافظ منصة "لبيه" على سرية معلوماتك الشخصية وجلساتك. الملاءمة: يمكنك حجز الجلسات وإدارتها عبر الإنترنت بسهولة. الأسعار المعقولة: تقدم "لبيه" خيارات تسعير مرنة لتناسب مختلف الميزانيات. ابدأ رحلة شفائك اليوم مع لبيه! لبيه: منصتك المتكاملة للرعاية النفسية عبر الإنترنت 👋 مرحبًا بك في لبيه، المنصة الرائدة للرعاية النفسية عبر الإنترنت التي تجعل الوصول إلى المساعدة أسهل من أي وقت مضى. خدماتنا نقدم في لبيه مجموعة شاملة من الخدمات لمساعدتك على تحسين صحتك العقلية، بما في ذلك: جلسات علاجية فردية عبر الفيديو مع معالجين مرخصين ومدربين جيدًا 👩⚕️👨⚕️ محاضرات تفاعلية عبر الإنترنت حول موضوعات الصحة العقلية الهامة 📚💻 مدونة غنية بالموارد والمقالات حول الرفاهية العقلية 📝 لماذا تختار لبيه؟ تتميز لبيه بمجموعة من المزايا تجعلها الخيار الأمثل لاحتياجاتك في مجال الرعاية النفسية: سهولة الوصول: يمكن الوصول إلى خدماتنا بسهولة من أي مكان وفي أي وقت 🌎 السرية: نضمن السرية التامة لجميع بياناتك الشخصية 🔒 الجودة: يعمل معنا فقط معالجين مرخصين وذوي خبرة في مختلف مجالات الصحة العقلية 🧠 الأسعار المعقولة: نقدم مجموعة متنوعة من الخطط لتناسب جميع الميزانيات 💸 كيف تبدأ رحلتك ابدأ رحلتك نحو الصحة العقلية المثلى مع لبيه اليوم: قم بزيارة موقعنا الإلكتروني: [رابط الموقع الإلكتروني] حدد الموعد الذي يناسبك استمتع بتجربة رعاية نفسية لا مثيل لها! لا تتردد في التواصل معنا إذا كانت لديك أي أسئلة أو احتياجات خاصة. فريقنا هنا لمساعدتك في كل خطوة على الطريق. لبيه #الرعاية_النفسية_عبر_الإنترنت #الصحة_العقلية #العلاج_نفسي #المحاضرات_التفاعلية طريقة استخدام كود خصم لبيه 50 طريقة استخدام كود خصم لبيه 🇱🇧 إليك طريقة سهلة خطوة بخطوة لاستخدام كود خصم في لبيه: 1️⃣ اختر كود الخصم الخاص بك: ازر موقع كوبونات (مثلاً كوبوناتو) لإيجاد أحدث أكواد خصم لبيه. نسخ الكود. 2️⃣ انتقل إلى موقع لبيه: انتقل إلى موقع لبيه (https://libyapp.com/). 3️⃣ حدد الخدمة التي تريدها: استعرض الخدمات على الموقع واختر الخدمة التي تناسب احتياجاتك (على سبيل المثال، جلسة استشارة أو محاضرة). 4️⃣ أدخل المعلومات الخاصة بك: املأ النموذج بالمعلومات الشخصية الخاصة بك واختر وقت الجلسة. 5️⃣ إدخال كود الخصم: في صفحة الدفع، ابحث عن حقل "كود الخصم". ألصق الكود الذي نسخته في الحقل. 6️⃣ تطبيق الخصم: انقر فوق "تطبيق" لرؤية الخصم يطبق على إجمالي طلبك. 7️⃣ إكمال الدفع: اكمل عملية الدفع باستخدام طريقة الدفع المفضلة لديك. ملاحظة: قد تخضع أكواد الخصم لشروط وأحكام معينة، مثل الحد الأدنى لقيمة الطلب أو تاريخ انتهاء الصلاحية. تحقق دائمًا من التفاصيل قبل استخدامها. اقسام متجر لبيه أقسام متجر "لبيه" يوفر متجر "لبيه" مجموعة شاملة من الخدمات لتلبية احتياجات الصحة النفسية للأفراد، وتشمل هذه الخدمات: جلسات رعاية نفسية اونلاين: جلسات فردية وجماعية مع معالجين نفسيين مرخصين. جلسات عبر مكالمات الفيديو أو الرسائل النصية أو الهاتف. 📞 مرونة في تحديد الجلسات بما يناسب جدولك الزمني. محاضرات عن الصحة النفسية: محاضرات مباشرة وعند الطلب من خبراء في مجال الصحة النفسية. مواضيع تغطي مجموعة واسعة من القضايا النفسية. فرصة لطرح الأسئلة والتفاعل مع الخبراء. 💡 خدمات أخرى: تقييمات الصحة النفسية عبر الإنترنت. موارد ودعم إضافي مثل مجموعات الدعم عبر الإنترنت. برامج توعوية ووقاية من الأمراض النفسية. فوائد استخدام خدمات "لبيه": الراحة والسرية: تقديم خدمات الرعاية النفسية من المنزل أو أي مكان مناسب. 🏠 مختصون مؤهلون: معالجون مرخصون وخ خبراء لديهم خبرة في مجموعة واسعة من القضايا النفسية. 👩⚕️ خدمات ميسورة التكلفة: مجموعة واسعة من الخدمات بأسعار في متناول الجميع. 💰 الوصول السريع: حجز الجلسات والوصول إلى الموارد بسهولة من خلال منصة "لبيه". 📱 أهم الاسئلة الشائعة حول كود خصم لبيه 50 أسئلة شائعة حول كود خصم لبيه 50 🧐 ما هو كود خصم لبيه 50؟ 💰 كود خصم يمكنك استخدامه للحصول على خصم 50% على خدمات لبيه عبر الإنترنت. كيف أحصل على كود خصم لبيه 50؟ 🤷♀️ يمكنك الحصول على الكود من خلال متابعة صفحات لبيه على مواقع التواصل الاجتماعي أو الاشتراك في القائمة البريدية الخاصة بهم. هل يمكنني استخدام كود خصم لبيه 50 أكثر من مرة؟ 🙅♀️ لا، يمكنك استخدام الكود مرة واحدة فقط. ما هي الخدمات التي يشملها كود خصم لبيه 50؟ 💻 يشمل الكود جميع خدمات لبيه عبر الإنترنت، بما في ذلك الجلسات والمحاضرات مع المختصين. كيف يمكنني استرداد كود خصم لبيه 50؟ Redeem عند تسجيل الدخول إلى حساب لبيه الخاص بك، أدخل الكود في حقل "كود الخصم" قبل إكمال عملية الدفع. متى ينتهي صلاحية كود خصم لبيه 50؟ 📅 تختلف مدة صلاحية الكود حسب الحملة الترويجية. يرجى التحقق من شروط وأحكام الحملة لمعرفة تاريخ انتهاء الصلاحية. لم يتم تطبيق كود خصم لبيه 50. ماذا أفعل؟ ⁉️ تأكد من إدخال الكود بشكل صحيح. تأكد من أن الكود لا يزال صالحًا. اتصل بخدمة عملاء لبيه للحصول على المساعدة. مميزات كود خصم لبيه 50 مميزات متجر لبيه 🤝 يوفر متجر لبيه مجموعة من الميزات الفريدة لعملائه، مما يجعله الخيار الأمثل لتلقي خدمات الرعاية النفسية عبر الإنترنت 😊: سهولة الوصول: 💻 يمكن للمستخدمين الوصول إلى الخدمات بسهولة من أي مكان وفي أي وقت، من خلال منصة لبيه المريحة. لا حاجة للسفر أو الانتظار لمواعيد شخصية. الخصوصية والسرية: 🔒 تُجرى جميع الجلسات والمحاضرات عبر الإنترنت، مما يضمن أعلى مستوى من الخصوصية والسرية للمستخدمين. بيانات المستخدمين محمية بموجب إجراءات أمنية صارمة. جودة عالية: 🎓 يقدم المتجر خدمات عالية الجودة من قبل متخصصين معتمدين ومختصين في مجال الصحة النفسية. تتضمن الخدمات جلسات فردية وجماعية، ومحاضرات وورش عمل تغطي مجموعة واسعة من الموضوعات المتعلقة بالصحة النفسية. مرونة: 📅 يوفر المتجر مرونة في مواعيد الجلسات، مع إمكانية اختيار وقت مناسب يناسب جدول المستخدمين. يمكن للمستخدمين أيضًا إلغاء الجلسات أو إعادة جدولتها بسهولة من خلال المنصة. تلبية الاحتياجات الفردية: 👤 يتم تخصيص خدمات المتجر لتلبية الاحتياجات الفردية لكل مستخدم. يقدم المتخصصون الدعم والإرشاد بناءً على أهداف ومخاوف المستخدمين الفريدة. توفير الوقت والتكلفة: ⏰💰 يوفر متجر لبيه على المستخدمين الوقت والتكلفة المرتبطة بالخدمات الشخصية التقليدية. يمكن للمستخدمين توفير الوقت والجهد من خلال الحصول على الدعم النفسي من راحة منازلهم. سياسة الإرجاع في متجر لبيه مرحبا بك في متجر لبيه، منصة الرعاية النفسية الشاملة التي توفر لك جلسات ومحاضرات من مختصين، بكل سهولة وسرية. نحن في لبيه ملتزمون بتقديم خدمات عالية الجودة تلبي احتياجاتك. ومع ذلك، فإننا نتفهم أن هناك ظروف قد تتطلب منك استرداد الأموال مقابل الخدمات التي اشتريتها. شروط الإرجاع يمكنك استرداد الأموال مقابل الجلسات والمحاضرات التي اشتريتها في غضون 14 يومًا من تاريخ الشراء. يجب أن تكون الخدمة التي ترغب في استرداد الأموال مقابلها غير مستخدمة ولم يتم الوصول إليها. يجب إرسال طلب الإرجاع عبر البريد الإلكتروني إلى support@liby.app. خطوات عملية الإرجاع اتبع الخطوات التالية لطلب الإرجاع: راسلنا عبر البريد الإلكتروني على support@liby.app. ارفق في الرسالة رقم الطلب واسم الدورة أو الجلسة التي ترغب في استرداد الأموال مقابلها. وضح سبب رغبتك في استرداد الأموال. معالجة طلب الإرجاع سنراجع طلب الإرجاع الخاص بك في غضون 48 ساعة. وإذا تمت الموافقة على طلبك، فسنقوم برد المبلغ إلى طريقة الدفع الأصلية الخاصة بك. ملاحظة: لا يمكن استرداد الأموال مقابل الاشتراكات المتكررة بمجرد معالجة الدفعة. لا يمكن استرداد الأموال مقابل الخدمات التي تم استخدامها أو الوصول إليها. نحن في لبيه ملتزمون بتوفير أفضل تجربة لك. إذا كانت لديك أي أسئلة بخصوص سياسة الإرجاع، فلا تتردد في الاتصال بنا على support@liby.app. كوبونات مشابهة لكود خصم لبيه 50 كود خصم ترينديول الكويت كود خصم ترينديول للطلبات اقل من ١٥٠ كود خصم نون فود السعودية اقوى كود خصم نون
Last updated: 2024-10-26
To search for an exact phrase, put it in quotes. Example: "getting started docs"
To exclude a word or phrase, put a dash in front of it. Example: docs -help
To search on specific fields, use these field names instead of a general text search. You can group with AND or OR.