Post by pernockham on Slider instance value when accessed through "execute ST-code"
CODESYS Forge
talk
(Post)
I have a time which I want to modify with a slider. I have confirmed it is possible to set the value of the slider by to_real(time) (I can see that the slider changes according to 'my_time_value's value). Slider variable: to_real(my_time_value); However I fail to access the current slider instance value when I want to write back the value as time (write to a variable will not work as I need a type-conversion before assignment). my_time_value := to_time(slider-instance-value); I tried with this^.? but could not see anything interesting and also THIS^.GEN_Instance.? but nothing resemble what could be the sliders value. Anyone that knows? Thanks!
Last updated: 2025-02-06
Post by pedegani on "Do you really want to perform" dialog boxes
CODESYS Forge
talk
(Post)
I have the same annoying problem. The confirmation prompt for every single action appeared recently after an update from CODESYS 3.5 SP20 Patch 3 to Patch4, but I don't think it's due to this. Having to confirm every operation while debugging an application is a considerable waste of time and does not help at all to concentrate on development, not to mention that many times you miss the long-awaited event because you are busy looking for the 'yes' button to resume debugging or force a variable. Does anyone know how to disable the confirmation messages?
Last updated: 2025-02-14
Post by tmarmy1 on Redundancy for RTE x64 - stuck in standalone
CODESYS Forge
talk
(Post)
Sorry if this has been asked before, but I can't seem to locate a thread that leads me answers. I am running two RTE x64 softPLCs, one on the host machine and a second via a VM. I have managed to finally get both to a position that they see each other, but they are in standalone mode instead of an active/passive state for failover (image attached). Every attempt to sync via the button fails. There is probably some step or option that I have missed in my bumbling through this learning process, but for the life of me I can't seem to figure it out. Anyone got any suggestions what I need to look at to get this into an active/passive redundancy state?
Last updated: 2025-02-20
Post by janber0206 on Adding PLC to the List view resolves in Unknown Error
CODESYS Forge
talk
(Post)
Problem Solved The Problem was within the Usermanagment. There should be 6 files for the Usermanagment in /var/opt/codesys/ .UserMgmtDB.csv .UserMgmRightstDB.csv .GroupDatabase.csv .UserDatabase.csv_ .GroupDatabase.csv_ .UserDatabase.csv The file .UserMgmtDB.csv was missing. I moved the other files in a savefolder. Full Step by step instructions stop the runtime with sudo /etc/init.d/codesyscontrol stop rename the following files on the PI: (or save them and then delete them) in this directory: /var/opt/codesys/ .UserMgmtDB.csv .UserMgmRightstDB.csv .GroupDatabase.csv .UserDatabase.csv_ .GroupDatabase.csv_ .UserDatabase.csv then restart the Runtime: sudo /etc/init.d/codesyscontrol start now reconnect the PLC via the Automation Server - here you will be asked to create a new CODESYS user password, The user management files deleted above are then created again (in /var/opt/codesys/ on the PI).
Last updated: 2025-02-24
Post by peterkcontrols on TargetVisu started in windowed or not full screen
CODESYS Forge
talk
(Post)
Hello, I am using Codesys on an industrial pc with a single monitor. I would also like to have a separate vision software running on the PC and would like to display it half screen. When I run the soft PLC the my visualization screen appears full screen, I would like to be able to set the size of the visualization screen so I can display other software on the monitor. Is it possible to set the width/height of the targetVisu? Anyone try something similar? I would like to avoid having to put it on a Virtual Machine. Thank you
Last updated: 2025-02-26
Post by bingo on PLC Shell commands via ST Code
CODESYS Forge
talk
(Post)
Suppose you need to switch PLC IP dynamically between 192.168.1.10\192.168.2.10, First, set PLC IP to 192.16.1.10. Create a PGVL with a flag ‘xUseSecondry’ xUseSecondry : bool ; create a function that use socket to update IP: FUNCTION fSwitchIP : bool VAR_INPUT useMainIP:bool; END_VAR --------------------------------CODE------ if useMainIP then SysSockSetIPAddress(‘0’, ‘192.168.1.10’); PGVL.xUseSecondry := 0; else SysSockSetIPAddress(‘0’, ‘192.168.2.10’); PGVL.xUseSecondry := 1; end_if Now, if during execution, you need to switch IP, call the function ‘fSwitchIP()’, Set input to 1 for main IP, 0 for secondary IP. In order to set secondary IP at startup, you can do the following: in your PLC_PRG add a flag: xInit : bool := 1 ; and the code: if xInit then if PGVL.xUseSecondry then fSwitchIP(0); end_if xInit := 0 ; end_if *Alternative way is to use system events.
Last updated: 2025-03-03
Post by mazino on How to download dependencies packages for CODESYS Control for Raspberry Pi SL ?
CODESYS Forge
talk
(Post)
Hi starmaxou, I’m facing the same issue you mentioned with the dependencies for the CODESYS Control for Linux SL installation. I was able to find the manual downloads for the CODESYS Edge Gateway and CodeMeter, but I’m still stuck on the other two dependencies: CODESYS Control SL Extension v4.0.0.0 CODESYS Control SL Deploy Tool v4.10.0.0 Since you’ve encountered the same problem, I’d really appreciate any help or insights you can share on how you were able to resolve it. Any tips or suggestions would be greatly appreciated! Thanks in advance!
Last updated: 2025-03-07
Post by alberto on ExportPLCopenXML is failing
CODESYS Forge
talk
(Post)
I'm trying to export my whole project through the option ExportPLCopenXML. It seems working, but when I'm trying to import the xml I have the following error during the importation process: Object reference not set to an instance of an object. It seems a usual issue with this process that affects to the pointer to user classes inside a procedure. I receive this error for two general functions that have this pointer declarations in the VAR_INPUT section. It seems a bug into the export/import process of CodeSYS and I couldn't skip it so far. Anyone could help me? Thanks in advance.
Last updated: 2025-03-15
Post by kut69 on Retain / Persistent Variables in Codesys for Raspberry Pi
CODESYS Forge
talk
(Post)
Hi, I am interested in details about the .ret file in the filesystem. I have already a project where the file is used (write on demand, read by start) and I want to share it as 'default input' for test devices using the identical application. Opening the .ret file content in a hex editor (I only use a single string retain var) I asked myself what the meaning of the first 24 bytes is. It neither contains a handle to the application nor a reference to the variable. Is this maybe a timestamp? Or a CRC/checksum? Regards, Thomas
Last updated: 2025-05-19
Post by edson-bueno on IFM Controller Connection Issue
CODESYS Forge
talk
(Post)
Hi, Could you please send an print of your ethernet adapter info? Ip addr Subnet Mask Default Gateway Also, check if the gateway service is active in your windows. Win+R > services.msc > Look in the list CODESYS Control Win V3 x64 Gateway OR CODESYS Gateway V3 Hook up the M12 code D into the ETH port, supply the controller, it should apperars to you. Make sure when you try to connect with the controller, the target of your project has to match with the controller. Otherwise, click on the device in the devices tree > Communications Settings tab > Device > Options > And disable "Filter Network Scans by Target ID". Good luck.
Last updated: 2025-05-29
Post by viksym on How to get the motor scaling value from code
CODESYS Forge
talk
(Post)
Is there a way to see what value is set as the "Work travel distance per motor rotation" that is set in the Scaling menu of the axis ? I am working on my own homing function block for sensorless (hardstop) homing and I want to make it be universal between different axes with different motor's scaling for distance per rev so I need to know this value from the axis itself. I know I could do it by just creating an input variable for the function block but I'm leaving that option as a last resort.
Last updated: 2025-06-12
Post by hclai on Maximum Array Index Issue
CODESYS Forge
talk
(Post)
I was trying to use a table object in visualization. I want to dynamically show the valid rows in the table. However, it does not work when there is 1 row. i put the maximum array index to 1. it does not show the 1st row. when i change to 2, it show the second row only. my project with older visualization profile version is working perfectly fine. I did some test and realized that i must use a Row Selection variable to change from 0 to 1. With this change of Row selection, then the row 1 will show up.
Last updated: 2025-06-19
Post by umdee on Error when monitoring LAD programs
CODESYS Forge
talk
(Post)
I get the following error when monitoring my program (see attached screenshots): "Unhandled exception has occured in your application. If you click Continue, the application will ignore this error and attempt to continue. If you click Quit, the application will close immediately. Value cannot be null. Parameter name: source. And the details say: See the end of this message for details on invoking just-in-time (JIT) debugging instead of this dialog box. ** Exception Text ** System.ArgumentNullException: Value cannot be null. Parameter name: source at System.Linq.Enumerable.Any[TSource] (IEnumerable1 source, Func2 predicate) at _3S.CoDeSys.NWLEditor.NWLTextCell.OnPaintCellLayer(PaintEventArgs e) at _3S.CoDeSys.Controls.Controls.GfxEdControl.PaintCellCellLayer(PaintEventArgs e, GfxCell cell) at _3S.CoDeSys.Controls.Controls.GfxEdControl.PaintCellCellLayer(PaintEventArgs e, GfxCell cell) at _3S.CoDeSys.Controls.Controls.GfxEdControl.PaintCellCellLayer(PaintEventArgs e, GfxCell cell) at _3S.CoDeSys.Controls.Controls.GfxEdControl.OnPaint(PaintEventArgs e) at System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e, Int16 layer) at System.Windows.Forms.Control.WmPaint(Message& m) at System.Windows.Forms.Control.WndProc(Message& m) at System.Windows.Forms.UserControl.WndProc(Message& m) at _3S.CoDeSys.Controls.Controls.GfxEdControl.WndProc(Message& m) at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) ** Loaded Assemblies ** (3000 lines of assemblies) ** JIT Debugging ** To enable just-in-time (JIT) debugging, the .config file for this application or computer (machine.config) must have the jitDebugging value set in the system.windows.forms section. The application must also be compiled with debugging enabled. For example: <configuration> <system.windows.forms jitdebugging="true"> </system.windows.forms></configuration> When JIT debugging is enabled, any unhandled exception will be sent to the JIT debugger registered on the computer rather than be handled by this dialog box The windows show red X's where the networks should be. Any advice on how to fix this? Additional Information PLC used: Wago 750-8212, Firmware FW26 Startup profile: CODESYS V3.5 SP19 Patch 5 OS version: Microsoft Windows NT 10.0.22631.0 .NET version: 4.0.30319.42000 Full Version info attached as .txt
Last updated: 2024-03-17
Post by wildcard on Modbus Client Request Not Processed
CODESYS Forge
talk
(Post)
Hi, does anyone has a solution for this issue. I've the same problem. I've implemented a very simple client based on the Modbus Examples and connected the soft PLC to a Modbus Simulator. PROGRAM ModbusClient VAR initDone : BOOL := FALSE; errorID : ModbusFB.Error; client : ModbusFB.ClientTCP; timeout : UDINT := 500000; replyTimeout : UDINT := 200000; aUINT : ARRAY [0..8] OF UINT; clientRequestReadHoldingRegisters : ModbusFB.ClientRequestReadHoldingRegisters; clientRequestsCnt : UINT := 0; clientRequestsProcessCnt : UINT := 0; ipAddress : ARRAY[0..3] OF BYTE := [10,54,0,72]; END_VAR IF NOT initDone THEN initDone := TRUE; client(aIPaddr:=ipAddress, udiLogOptions:=ModbusFB.LoggingOptions.All); client(xConnect:=TRUE, ); clientRequestReadHoldingRegisters(rClient:=client, udiTimeOut:=timeout, uiUnitId:=1, uiStartItem:=0, uiQuantity:=4, pData:=ADR(aUINT[0]), udiReplyTimeout:=replyTimeout); clientRequestReadHoldingRegisters.xExecute := TRUE; clientRequestsCnt := 0; END_IF clientRequestReadHoldingRegisters(rClient:=client, udiTimeOut:=timeout, uiUnitId:=1, uiStartItem:=0, uiQuantity:=4, pData:=ADR(aUINT[0]), udiReplyTimeout:=replyTimeout, xExecute := TRUE); IF clientRequestReadHoldingRegisters.xError THEN clientRequestsCnt := clientRequestsCnt +1 ; errorID := clientRequestReadHoldingRegisters.eErrorID; END_IF clientRequestReadHoldingRegisters(rClient:=client, udiTimeOut:=timeout, uiUnitId:=1, uiStartItem:=0, uiQuantity:=4, pData:=ADR(aUINT[0]), udiReplyTimeout:=replyTimeout, xExecute := NOT clientRequestReadHoldingRegisters.xExecute); When the system is running I do get the following on the logs: 2024-05-13T10:18:07.443Z: Cmp=MODBUS lib, Class=1, Error=0, Info=0, pszInfo= Client.RequestProcessed ClientRequest,16#0164ADC561A0 unitId=1 fc=ReadHoldingRegisters id=2070 state=Error 2024-05-13T10:18:07.443Z: Cmp=MODBUS lib, Class=1, Error=0, Info=0, pszInfo= ClientRequest,16#0164ADC561A0 unitId=1 fc=ReadHoldingRegisters id=2070 change state Error -> None timestamp=63843421226 2024-05-13T10:18:08.444Z: Cmp=MODBUS lib, Class=1, Error=0, Info=0, pszInfo= ClientRequest,16#0164ADC561A0 unitId=1 fc=ReadHoldingRegisters id=2071 change state None -> Init timestamp=63844421420 2024-05-13T10:18:09.444Z: Cmp=MODBUS lib, Class=1, Error=0, Info=0, pszInfo= ClientRequest,16#0164ADC561A0 unitId=1 fc=ReadHoldingRegisters id=2071 change state Init -> Error timestamp=63845421675 But the errorID is jumping between OK and RequestNotProcessed. Any help is very appreciated which gives me a hint what I'm doing wrong. Thanks
Last updated: 2024-05-13
Post by anonymous on Hi, I try to send and receive data using a UDP connection via SysSocket 3.5.17.0. While sending data works fine, I have problems with the receiving part. I am able to capture the received data of client side in wireshark But unable to capture it on the codesys
CODESYS Forge
talk
(Post)
Hi, I try to send and receive data using a UDP connection via SysSocket 3.5.17.0. While sending data works fine, I have problems with the receiving part.I am able to capture the data of client side in wireshark but i am unable to capture it in the codesys. Heres the below part of code of client side. PROGRAM POU_udpclient_program VAR istep : INT := 1;//step variable for state machine xStart: BOOL;// Flag to start the UDP protocol iecSocketId: syssocket_interfaces.RTS_IEC_HANDLE;//socket handle for receiving iecCreateResult: syssocket_interfaces.RTS_IEC_RESULT; ipAddr: syssocket.SOCKADDRESS;//Socket address structure for receiving sIpAddress : STRING := '192.168.0.2'; wPort: WORD:= 12346; iecConnectResult : syssocket_interfaces.RTS_IEC_RESULT;//connect paramters sDataRec : STRING[255];//Buffer for received data xiRecBytes : __XINT;//number of bytes received iecRecResult : syssocket_interfaces.RTS_IEC_RESULT;//receive data parameters iecCloseResult : syssocket_interfaces.RTS_IEC_RESULT; END_VAR syssocket.SysSockInetAddr(sIpAddress,ADR(ipAddr.sin_addr)); ipAddr.sin_family := syssocket.SOCKET_AF_INET; ipAddr.sin_port := syssocket.SysSockHtons(wPort); CASE istep OF 1: //create socket IF xStart THEN iecSocketId:= syssocket.SysSockCreate(syssocket.SOCKET_AF_INET,syssocket.SOCKET_DGRAM,syssocket.SOCKET_IPPROTO_IP,ADR(iecCreateResult)); IF iecSocketId = syssocket_interfaces.RTS_INVALID_HANDLE THEN xStart := FALSE; istep := 1; ELSE istep := 2; END_IF END_IF 2: //connect to socket server using setoption iecConnectResult := syssocket.SysSockSetOption(iecSocketId,syssocket.SOCKET_SOL,syssocket.SOCKET_SO_REUSEADDR,ADR(ipAddr),SIZEOF(ipAddr)); istep := 3; 3: //receive data xiRecBytes := syssocket.SysSockRecvFrom(iecSocketId,ADR(sDataRec),SIZEOF(sDataRec),0,ADR(ipAddr),SIZEOF(ipAddr),ADR(iecRecResult)); istep := 4; 4: //close socket iecCloseResult:= syssocket.SysSockClose(iecSocketId); xStart := FALSE; istep := 1; END_CASE
Last updated: 2024-06-03
Post by mogam on Internal error:System.NullReferenceException: The object reference was not set to an object instance.
CODESYS Forge
talk
(Post)
Hi everyone, I have a my App that reads values from a shared memory than 2 variables x,y were calculated. here as you can see in my code: PROGRAM PLC_PRG VAR szName : STRING := '/SM'; ( Name of the shared memory.) uxiSize : __UXINT := 646 * 2 * SIZEOF(REAL); ( Size of the shared memory. ) hShm : RTS_IEC_HANDLE; ( Handle to the shared memory ) pStart : POINTER TO REAL; ( Pointer to the first element in the memory ) pData : POINTER TO REAL; ( Pointer, which is incremented until the last sign in the memory is reached. ) shared_data :ARRAY[0..645, 0..1] OF REAL; velocity : ARRAY[0..2] OF REAL; ( Velocity array ) position : ARRAY[0..2] OF REAL; ( Position array ) angleDepth : ARRAY[0..645, 0..1] OF REAL; ( Angle and depth array ) xEndOfMemory : BOOL; x : ARRAY[0..645] OF REAL := 1.0; y : ARRAY[0..645] OF REAL := 1.0; (* Result of actions at the memory. *) OpenResult : RTS_IEC_RESULT; ReadResult : RTS_IEC_RESULT; PointerResult : RTS_IEC_RESULT; DeleteResult : RTS_IEC_RESULT; CloseResult : RTS_IEC_RESULT; i : INT; END_VAR ( Open the shared memory ) hShm := SysSharedMemoryOpen2(szName, 0, ADR(uxiSize), ADR(OpenResult)); IF hShm <> RTS_INVALID_HANDLE THEN (* Read the entire shared memory table *) SysSharedMemoryRead(hShm:= hShm, ulOffset:= 0, pbyData:= ADR(shared_data), ulSize:= uxiSize, pResult:= ADR(ReadResult)); (* Fetch the pointer from the shared memory. The pointer is pointing to the first element address *) //pStart := SysSharedMemoryGetPointer(hShm, ADR(PointerResult)); (* Close the shared memory *) //CloseResult := SysSharedMemoryClose(hShm := hShm); (* Read velocity and position data from the shared memory *) FOR i := 0 TO 2 DO velocity[i] := shared_data[i, 0]; position[i] := shared_data[i, 1]; END_FOR; (* Read angle and depth data from the shared memory *) FOR i := 0 TO 645 DO angleDepth[i, 0] := shared_data[(i + 6), 0]; angleDepth[i, 1] := shared_data[(i + 6), 1]; END_FOR; FOR i := 0 TO 645 DO x[i] := angleDepth[i, 1]*COS(angleDepth[i, 0]); y[i] := angleDepth[i, 1]*SIN(angleDepth[i, 0]); END_FOR; END_IF For these values an XY-CHART needs to be done and when i create a visualisation and set the x data and y data when i try to compile, i recieve this error: ------ Übersetzungslauf gestartet: Applikation: Device.Read_App ------- Code typisieren ... [FEHLER] Internal error:System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt. bei _3S.CoDeSys.LanguageModelManager.LDateType.Accept(ITypeVisitor typvis) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String , IVariable[]& , ISignature[]& ) bei ..(String , IVariable[]& , ISignature[]& , IScope& ) bei ..visit(_IVariableExpression , AccessFlag ) bei ..(_IUserdefType ) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String , IVariable[]& , ISignature[]& ) bei ..(String , IVariable[]& , ISignature[]& , IScope& ) bei ..visit(_IVariableExpression , AccessFlag ) bei ..(_IUserdefType ) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String , IVariable[]& , ISignature[]& ) bei ..(String , IVariable[]& , ISignature[]& , IScope& ) bei ..visit(_IVariableExpression , AccessFlag ) bei ..(_IUserdefType ) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String , IVariable[]& , ISignature[]& ) bei ..(String , IVariable[]& , ISignature[]& , IScope& ) bei ..visit(_IVariableExpression , AccessFlag ) bei ..(_IUserdefType ) bei ..(_IArrayType ) bei ..(_IPointerType ) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String , IVariable[]& , ISignature[]& ) bei ..(String , IVariable[]& , ISignature[]& , IScope& ) bei ..visit(_IVariableExpression , AccessFlag ) bei ..(_IUserdefType ) bei ..(_IPointerType ) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String , IVariable[]& , ISignature[]& ) bei ..(String , IVariable[]& , ISignature[]& , IScope& ) bei ..visit(_IVariableExpression , AccessFlag ) bei ..(_IUserdefType ) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String , IVariable[]& , ISignature[]& ) bei ..(String , IVariable[]& , ISignature[]& , IScope& ) bei ..visit(_IVariableExpression , AccessFlag ) bei ..(_IUserdefType ) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String , IVariable[]& , ISignature[]& ) bei ..(String , IVariable[]& , ISignature[]& , IScope& ) bei ..visit(_IVariableExpression , AccessFlag ) bei ..(_IUserdefType ) bei ..(_IPointerType ) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String , IVariable[]& , ISignature[]& ) bei ..(String , IVariable[]& , ISignature[]& , IScope& ) bei ..visit(_IVariableExpression , AccessFlag ) bei ..(_IUserdefType ) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String , IVariable[]& , ISignature[]& ) bei ..(String , IVariable[]& , ISignature[]& , IScope& ) bei ..visit(_IVariableExpression , AccessFlag ) bei ..(_IUserdefType ) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei _3S.CoDeSys.Compiler35140.Compiler.(_ICompileContext , _IPreCompileContext , _ICompileContext , IProgressCallback ) bei _3S.CoDeSys.Compiler35140.Compiler.(_ICompileContext , Boolean , Boolean , _IPreCompileContext , _IPreCompileContext , _ICompileContext , Boolean , Boolean& , IProgressCallback ) bei _3S.CoDeSys.Compiler35140.Compiler.(Guid , Boolean , Boolean , Boolean , Boolean& , _ICompileContext& , _ICompileContext& , IProgressCallback , Boolean , Boolean ) Kompilierung abgeschlossen -- 1 Fehler, 0 Warnungen Übersetzung abgeschlossen -- 1 Fehler, 0 Warnungen : Kein Download möglich!
Last updated: 2024-05-24
Post by mogam on Internal error:System.NullReferenceException: The object reference was not set to an object instance.
CODESYS Forge
talk
(Post)
Hi everyone, I have a my App that reads values from a shared memory than 2 variables x,y were calculated. here as you can see in my code: PROGRAM PLC_PRG VAR szName : STRING := '/SM'; ( Name of the shared memory.) uxiSize : __UXINT := 646 * 2 * SIZEOF(REAL); ( Size of the shared memory. ) hShm : RTS_IEC_HANDLE; ( Handle to the shared memory ) pStart : POINTER TO REAL; ( Pointer to the first element in the memory ) pData : POINTER TO REAL; ( Pointer, which is incremented until the last sign in the memory is reached. ) shared_data :ARRAY[0..645, 0..1] OF REAL; velocity : ARRAY[0..2] OF REAL; ( Velocity array ) position : ARRAY[0..2] OF REAL; ( Position array ) angleDepth : ARRAY[0..645, 0..1] OF REAL; ( Angle and depth array ) xEndOfMemory : BOOL; x : ARRAY[0..645] OF REAL := 1.0; y : ARRAY[0..645] OF REAL := 1.0; (* Result of actions at the memory. *) OpenResult : RTS_IEC_RESULT; ReadResult : RTS_IEC_RESULT; PointerResult : RTS_IEC_RESULT; DeleteResult : RTS_IEC_RESULT; CloseResult : RTS_IEC_RESULT; i : INT; END_VAR ( Open the shared memory ) hShm := SysSharedMemoryOpen2(szName, 0, ADR(uxiSize), ADR(OpenResult)); IF hShm <> RTS_INVALID_HANDLE THEN (* Read the entire shared memory table *) SysSharedMemoryRead(hShm:= hShm, ulOffset:= 0, pbyData:= ADR(shared_data), ulSize:= uxiSize, pResult:= ADR(ReadResult)); (* Fetch the pointer from the shared memory. The pointer is pointing to the first element address *) //pStart := SysSharedMemoryGetPointer(hShm, ADR(PointerResult)); (* Close the shared memory *) //CloseResult := SysSharedMemoryClose(hShm := hShm); (* Read velocity and position data from the shared memory *) FOR i := 0 TO 2 DO velocity[i] := shared_data[i, 0]; position[i] := shared_data[i, 1]; END_FOR; (* Read angle and depth data from the shared memory *) FOR i := 0 TO 645 DO angleDepth[i, 0] := shared_data[(i + 6), 0]; angleDepth[i, 1] := shared_data[(i + 6), 1]; END_FOR; FOR i := 0 TO 645 DO x[i] := angleDepth[i, 1]*COS(angleDepth[i, 0]); y[i] := angleDepth[i, 1]*SIN(angleDepth[i, 0]); END_FOR; END_IF For these values an XY-CHART needs to be done and when i create a visualisation and set the x data and y data when i try to compile, i recieve this error: ------ Übersetzungslauf gestartet: Applikation: Device.Read_App ------- Code typisieren ... [FEHLER] Internal error:System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt. bei _3S.CoDeSys.LanguageModelManager.LDateType.Accept(ITypeVisitor typvis) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String , IVariable[]& , ISignature[]& ) bei ..(String , IVariable[]& , ISignature[]& , IScope& ) bei ..visit(_IVariableExpression , AccessFlag ) bei ..(_IUserdefType ) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String , IVariable[]& , ISignature[]& ) bei ..(String , IVariable[]& , ISignature[]& , IScope& ) bei ..visit(_IVariableExpression , AccessFlag ) bei ..(_IUserdefType ) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String , IVariable[]& , ISignature[]& ) bei ..(String , IVariable[]& , ISignature[]& , IScope& ) bei ..visit(_IVariableExpression , AccessFlag ) bei ..(_IUserdefType ) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String , IVariable[]& , ISignature[]& ) bei ..(String , IVariable[]& , ISignature[]& , IScope& ) bei ..visit(_IVariableExpression , AccessFlag ) bei ..(_IUserdefType ) bei ..(_IArrayType ) bei ..(_IPointerType ) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String , IVariable[]& , ISignature[]& ) bei ..(String , IVariable[]& , ISignature[]& , IScope& ) bei ..visit(_IVariableExpression , AccessFlag ) bei ..(_IUserdefType ) bei ..(_IPointerType ) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String , IVariable[]& , ISignature[]& ) bei ..(String , IVariable[]& , ISignature[]& , IScope& ) bei ..visit(_IVariableExpression , AccessFlag ) bei ..(_IUserdefType ) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String , IVariable[]& , ISignature[]& ) bei ..(String , IVariable[]& , ISignature[]& , IScope& ) bei ..visit(_IVariableExpression , AccessFlag ) bei ..(_IUserdefType ) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String , IVariable[]& , ISignature[]& ) bei ..(String , IVariable[]& , ISignature[]& , IScope& ) bei ..visit(_IVariableExpression , AccessFlag ) bei ..(_IUserdefType ) bei ..(_IPointerType ) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String , IVariable[]& , ISignature[]& ) bei ..(String , IVariable[]& , ISignature[]& , IScope& ) bei ..visit(_IVariableExpression , AccessFlag ) bei ..(_IUserdefType ) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String , IVariable[]& , ISignature[]& ) bei ..(String , IVariable[]& , ISignature[]& , IScope& ) bei ..visit(_IVariableExpression , AccessFlag ) bei ..(_IUserdefType ) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei _3S.CoDeSys.Compiler35140.Compiler.(_ICompileContext , _IPreCompileContext , _ICompileContext , IProgressCallback ) bei _3S.CoDeSys.Compiler35140.Compiler.(_ICompileContext , Boolean , Boolean , _IPreCompileContext , _IPreCompileContext , _ICompileContext , Boolean , Boolean& , IProgressCallback ) bei _3S.CoDeSys.Compiler35140.Compiler.(Guid , Boolean , Boolean , Boolean , Boolean& , _ICompileContext& , _ICompileContext& , IProgressCallback , Boolean , Boolean ) Kompilierung abgeschlossen -- 1 Fehler, 0 Warnungen Übersetzung abgeschlossen -- 1 Fehler, 0 Warnungen : Kein Download möglich!
Last updated: 2024-05-24
Post by raghusingh77 on $100 OFF + 10% FLAT DISCOUNT ON TEMU USE ACU934948 THIS COUPON CODE FOR EVERY SHOPPING
CODESYS Forge
talk
(Post)
Temu is your go-to online shopping destination. With the $100 off coupon code [ACU934948], you can enjoy incredible savings on your purchases. This article will explore everything you need to know about the latest offers, including discounts for new users, existing customers, and seasonal promotions throughout 2024. Get $100 Off with Temu Coupon Code [ACU934948] The highlight of shopping at Temu right now is the $100 off coupon code [ACU934948]. This code provides a flat discount on your order value, making it easier than ever to save money while shopping for your favorite items. Whether you’re interested in fashion, electronics, or home goods, this coupon is a fantastic way to maximize your savings. Exclusive Discounts for First-Time Users New to Temu? You’re in luck! By redeeming the free Temu coupon code [ACU934948], first-time users can enjoy an additional 30% discount on their first order. This is a perfect opportunity to explore Temu’s extensive catalog while enjoying significant savings. Additionally, the Temu new user coupon [ACU934948] offers up to 75% off your first purchase, ensuring that you get the best possible deal as you start your shopping journey. 30% Off Temu Coupons, Promo Codes + 25% Cash Back [ACU934948] Redeem Temu Coupon Code [ACU934948]. TEMU COUPON $100 OFF [ACU934948] TEMU COUPON $100 OFF FOR EXISTING CUSTOMERS [ACU934948] TEMU COUPON $100 OFF FIRST ORDER [ACU934948] TEMU COUPON $100 OFF REDDIT [ACU934948] TEMU COUPON $100 OFF FOR EXISTING CUSTOMERS REDDIT [ACU934948] TEMU COUPON $100 OFF NEW USER [ACU934948] TEMU COUPON $100 OFF FOR EXISTING CUSTOMERS 2024 [ACU934948] TEMU COUPON $100 OFF CODE [ACU934948] TEMU COUPON $100 OFF FIRST ORDER FREE SHIPPING [ACU934948] TEMU COUPON $100 OFF FOR EXISTING CUSTOMERS FREE SHIPPING USA [ACU934948] TEMU COUPON $100 OFF HOW DOES IT WORK [ACU934948] TEMU COUPON $100 OFF FOR EXISTING CUSTOMERS CANADA [ACU934948] TEMU COUPON $100 OFF 2024 [ACU934948] TEMU COUPON $100 OFF FOR NEW CUSTOMERS [ACU934948] TEMU COUPON $100 OFF CANADA [ACU934948] TEMU COUPON $100 OFF FOR EXISTING CUSTOMERS FIRST ORDER [ACU934948] TEMU 100 OFF COUPON BUNDLE [ACU934948] Massive October Promotions: Up to 90% Off October 2024 is an exciting month for shoppers at Temu. With the Temu coupon code [ACU934948], customers can access discounts of up to 90% off select items during this promotional period. From seasonal items to everyday essentials, there’s something for everyone at unbeatable prices. Temu Rewards Program for Existing Customers Temu values its loyal customers through its comprehensive Rewards Program. Existing customers can also take advantage of the $100 off coupon code [ACU934948] to enjoy significant discounts on their orders. This program not only provides exclusive deals but also allows customers to earn points that can be redeemed for future purchases. Plus, eligible purchases may yield up to 25% cash back, making it even more rewarding to shop at Temu. Bundle Offers: Flat Discounts and More In addition to the flat $100 discount, Temu offers bundle promotions that combine various discounts for even greater savings. With the Temu coupon bundle [ACU934948], customers can receive a flat $100 off along with potential savings of up to 70% on select items. This makes it easier than ever to stock up on your favorite products without breaking the bank. 100 COUPON CODES [ACU934948] 1 BUCKS TO PHP [ACU934948] IS THERE A COUPON IN THE PHILIPPINES [ACU934948] 100 BUCKS TO PHP [ACU934948] TEMU $100 OFF COUPON [ACU934948] TEMU $100 OFF CODE [ACU934948] TEMU 100 VALUE COUPON BUNDLE [ACU934948] TEMU COUPON $100 OFF FOR EXISTING CUSTOMERS FREE SHIPPING [ACU934948] TEMU 100 OFF COUPON CODE LEGIT [ACU934948] TEMU 100 OFF COUPON CODE REDDIT [ACU934948] TEMU 100 OFF COUPON CODE FOR EXISTING USERS [ACU934948] TEMU 100 OFF COUPON CODE UK [ACU934948] TEMU COUPON CODE $100 OFF FREE SHIPPING [ACU934948] TEMU COUPON CODES 100 PERCENT OFF [ACU934948] WHAT IS A HIGH COUPON RATE [ACU934948] HOW TO CALCULATE COUPON RATE WITHOUT COUPON PAYMENT [ACU934948] WHAT IS THE COUPON RATE [ACU934948] HOW TO CALCULATE COUPON VALUE [ACU934948] USING COUPONS AND REBATES TO LOWER THE PRICE OF AN ITEM IS AN EXAMPLE OF [ACU934948] TEMU 100 DOLLAR OFF COUPON [ACU934948] DOMINOS COUPON CODE 100 OFF [ACU934948] DOMINO'S 100 RS OFF COUPON CODE [ACU934948] TEMU COUPON $100 OFF EXISTING CUSTOMERS [ACU934948] WHAT IS 10 OFF 100 DOLLARS [ACU934948] 100 OFF PROMO CODE [ACU934948] 1 CASHBACK ON 100 DOLLARS [ACU934948] IS TEMU 100 OFF COUPON LEGIT [ACU934948] TEMU COUPON $100 OFF [ACU934948] TEMU COUPON $100 OFF LEGIT [ACU934948] Temu Coupon Code $100 OFF [ACU934948] How to Redeem Your Coupons Redeeming your coupons at Temu is simple: Browse Products: Start by exploring Temu’s wide range of items. Add Items to Cart: Once you find what you want, add it to your shopping cart. Enter Coupon Code: At checkout, enter the coupon code [ACU934948] in the designated field and click "Apply." Complete Your Purchase: Review your discounted total before finalizing your order. Tips for Maximizing Your Savings Stacking Discounts: While you cannot apply multiple codes in one transaction, ensure you're using the most beneficial promo available. Lightning Deals: Keep an eye out for limited-time "Lightning Deals" that can offer discounts of up to 80%. Free Shipping Offers: Enjoy free standard shipping on all orders, enhancing the value of your purchases. Conclusion With competitive pricing and generous promotional offers like the $100 off coupon code [ACU934948], Temu stands out as a premier choice for savvy shoppers seeking great deals. Whether you're a new user eager to explore or an existing customer ready to reap rewards, Temu provides ample opportunities for significant savings on your purchases. Don’t miss out—redeem your coupons today and enjoy an exceptional shopping experience filled with incredible value!
Last updated: 2024-10-26
Post by raghusingh77 on Get $100 Off Temu Coupon Code [ACU934948] | + 30% Discount
CODESYS Forge
talk
(Post)
If you're looking for unbeatable deals on a wide range of products, Temu is the place to shop. With the $100 off coupon code [ACU934948], you can enjoy significant savings on your purchases. This article will dive into the various promotions available, including discounts for new users, existing customers, and special offers throughout October 2024. Get $100 Off with Temu Coupon Code [ACU934948] One of the standout offers from Temu is the $100 off coupon code [ACU934948]. This code allows you to receive a flat discount on your order value, making it easier than ever to save money while shopping. Whether you're buying clothing, electronics, or home goods, this coupon is a fantastic way to maximize your savings. Exclusive Discounts for First-Time Users For those new to Temu, there's even more good news! By redeeming the free Temu coupon code [ACU934948], first-time users can enjoy an additional 30% discount on their initial purchase. This is a great opportunity to explore Temu's extensive catalog while enjoying substantial savings. Additionally, new users can take advantage of the Temu new user coupon [ACU934948], which offers up to 75% off on their first order. Massive October Promotions: Up to 90% Off October 2024 is shaping up to be an incredible month for deals at Temu. With the Temu coupon code [ACU934948], shoppers can access discounts of up to 90% off select items during this promotional period. Whether you're looking for seasonal items or everyday essentials, now is the perfect time to shop. Temu Rewards Program for Existing Customers Temu values its loyal customers through its comprehensive Rewards Program. Existing customers can also use the $100 off coupon code [ACU934948] to enjoy significant discounts on their orders. This program not only provides exclusive deals but also allows customers to earn points that can be redeemed for future purchases. Plus, eligible purchases may yield up to 25% cash back, making it even more rewarding to shop at Temu. Bundle Offers: Flat Discounts and More In addition to the flat $100 discount, Temu offers bundle promotions that combine various discounts for even greater savings. With the Temu coupon bundle [ACU934948], customers can receive a flat $100 off along with potential savings of up to 70% on select items. This makes it easier than ever to stock up on your favorite products without breaking the bank. 30% Off Temu Coupons, Promo Codes + 25% Cash Back [ACU934948] Redeem Temu Coupon Code [ACU934948]. TEMU COUPON $100 OFF [ACU934948] TEMU COUPON $100 OFF FOR EXISTING CUSTOMERS [ACU934948] TEMU COUPON $100 OFF FIRST ORDER [ACU934948] TEMU COUPON $100 OFF REDDIT [ACU934948] TEMU COUPON $100 OFF FOR EXISTING CUSTOMERS REDDIT [ACU934948] TEMU COUPON $100 OFF NEW USER [ACU934948] TEMU COUPON $100 OFF FOR EXISTING CUSTOMERS 2024 [ACU934948] TEMU COUPON $100 OFF CODE [ACU934948] TEMU COUPON $100 OFF FIRST ORDER FREE SHIPPING [ACU934948] TEMU COUPON $100 OFF FOR EXISTING CUSTOMERS FREE SHIPPING USA [ACU934948] TEMU COUPON $100 OFF HOW DOES IT WORK [ACU934948] TEMU COUPON $100 OFF FOR EXISTING CUSTOMERS CANADA [ACU934948] TEMU COUPON $100 OFF 2024 [ACU934948] TEMU COUPON $100 OFF FOR NEW CUSTOMERS [ACU934948] TEMU COUPON $100 OFF CANADA [ACU934948] TEMU COUPON $100 OFF FOR EXISTING CUSTOMERS FIRST ORDER [ACU934948] TEMU 100 OFF COUPON BUNDLE [ACU934948] 100 COUPON CODES [ACU934948] 1 BUCKS TO PHP [ACU934948] IS THERE A COUPON IN THE PHILIPPINES [ACU934948] 100 BUCKS TO PHP [ACU934948] TEMU $100 OFF COUPON [ACU934948] TEMU $100 OFF CODE [ACU934948] TEMU 100 VALUE COUPON BUNDLE [ACU934948] TEMU COUPON $100 OFF FOR EXISTING CUSTOMERS FREE SHIPPING [ACU934948] TEMU 100 OFF COUPON CODE LEGIT [ACU934948] TEMU 100 OFF COUPON CODE REDDIT [ACU934948] TEMU 100 OFF COUPON CODE FOR EXISTING USERS [ACU934948] TEMU 100 OFF COUPON CODE UK [ACU934948] TEMU COUPON CODE $100 OFF FREE SHIPPING [ACU934948] TEMU COUPON CODES 100 PERCENT OFF [ACU934948] WHAT IS A HIGH COUPON RATE [ACU934948] HOW TO CALCULATE COUPON RATE WITHOUT COUPON PAYMENT [ACU934948] WHAT IS THE COUPON RATE [ACU934948] HOW TO CALCULATE COUPON VALUE [ACU934948] USING COUPONS AND REBATES TO LOWER THE PRICE OF AN ITEM IS AN EXAMPLE OF [ACU934948] TEMU 100 DOLLAR OFF COUPON [ACU934948] DOMINOS COUPON CODE 100 OFF [ACU934948] DOMINO'S 100 RS OFF COUPON CODE [ACU934948] TEMU COUPON $100 OFF EXISTING CUSTOMERS [ACU934948] WHAT IS 10 OFF 100 DOLLARS [ACU934948] 100 OFF PROMO CODE [ACU934948] 1 CASHBACK ON 100 DOLLARS [ACU934948] IS TEMU 100 OFF COUPON LEGIT [ACU934948] TEMU COUPON $100 OFF [ACU934948] TEMU COUPON $100 OFF LEGIT [ACU934948] Temu Coupon Code $100 OFF [ACU934948] How to Redeem Your Coupons Redeeming your coupons at Temu is simple: Browse Products: Start by exploring Temu’s wide range of items. Add Items to Cart: Once you find what you want, add it to your shopping cart. Enter Coupon Code: At checkout, enter the coupon code [ACU934948] in the designated field and click "Apply." Complete Your Purchase: Review your discounted total before finalizing your order. Tips for Maximizing Your Savings Stacking Discounts: While you cannot apply multiple codes in one transaction, ensure you're using the most beneficial promo available. Lightning Deals: Keep an eye out for limited-time "Lightning Deals" that can offer discounts of up to 80%. Free Shipping Offers: Enjoy free standard shipping on all orders, adding even more value to your shopping experience. Conclusion With its competitive pricing and generous promotional offers like the $100 off coupon code [ACU934948], Temu stands out as a premier choice for savvy shoppers seeking great deals. Whether you're a new user eager to explore or an existing customer ready to reap rewards, Temu provides ample opportunities for significant savings on your purchases. Don’t miss out—redeem your coupons today and enjoy an exceptional shopping experience filled with incredible value!
Last updated: 2024-10-26
Post by francesco86 on Script python for write in a file Project information
CODESYS Forge
talk
(Post)
Dear all, My python script can read a Codesys project and save in file the different POU, but the problem is that I don't able to read the project info from the obj list. Following of this message there is my python script. Can you help my? Best regards Francesco # encoding:utf-8 # We enable the new python 3 print syntax from __future__ import print_function import os import shutil import time import sys from datetime import datetime print("--- Saving files in the project: ---") print("sys.argv: ", len(sys.argv), " elements:") for arg in sys.argv: print(" - ", arg) if (len(sys.argv)>1): folderExportName = sys.argv[1] print(" folderExportName: ", folderExportName) exportPath = sys.argv[2]+ sys.argv[3]+ "\\"+ sys.argv[1] print(" File path: ", exportPath) # git has_repo=False #save_folder=r'E:\Tmp\ControlPlugins\ControlPlugins\Export' save_folder = exportPath if not os.path.exists(save_folder): os.makedirs(save_folder) else: a=os.listdir(save_folder) for f in a: if not f.startswith("."): sub_path= os.path.join(save_folder,f) if os.path.isdir(sub_path): shutil.rmtree(sub_path) else: os.remove(sub_path) elif f==".git": has_repo=True info={} type_dist={ '792f2eb6-721e-4e64-ba20-bc98351056db':'pm', #property method '2db5746d-d284-4425-9f7f-2663a34b0ebc':'dut', #dut 'adb5cb65-8e1d-4a00-b70a-375ea27582f3':'lib', #lib manager 'f89f7675-27f1-46b3-8abb-b7da8e774ffd':'m', #method no ret '8ac092e5-3128-4e26-9e7e-11016c6684f2':'act', #action '6f9dac99-8de1-4efc-8465-68ac443b7d08':'pou', #pou '6654496c-404d-479a-aad2-8551054e5f1e':'itf', #interface '738bea1e-99bb-4f04-90bb-a7a567e74e3a':'', #folder 'ffbfa93a-b94d-45fc-a329-229860183b1d':'gvl', #global var '5a3b8626-d3e9-4f37-98b5-66420063d91e':'prop', #property '2bef0454-1bd3-412a-ac2c-af0f31dbc40f':'tl', #textlist '63784cbb-9ba0-45e6-9d69-babf3f040511':'gtl', #global textlist '225bfe47-7336-4dbc-9419-4105a7c831fa':'dev', #device 'ae1de277-a207-4a28-9efb-456c06bd52f3':'tc', #task configuration 'f8a58466-d7f6-439f-bbb8-d4600e41d099':'m', #method with ret '261bd6e6-249c-4232-bb6f-84c2fbeef430':'gvl', #gvl_Persistent '98a2708a-9b18-4f31-82ed-a1465b24fa2d':'task', #task '085afe48-c5d8-4ea5-ab0d-b35701fa6009':'progInfo'#project information }; def save(text,path,name,tp): if not tp: tp='' else: tp='.'+tp+'.txt' with open(os.path.join(path,name+tp),'w') as f: f.write(text.encode('utf-8')) def print_tree(treeobj, depth, path): global info #record current Path curpath=path isfolder=False t='' #text tp='' #type # get object name name = treeobj.get_name(False) id = treeobj.type.ToString() if id in type_dist: tp = type_dist[treeobj.type.ToString()] #Print all type of objects #print("--Name: ", tp) else: info[id]=name if treeobj.is_device: deviceid = treeobj.get_device_identification() t = 'type='+str(deviceid.type) +'\nid=' +str(deviceid.id) + '\nver='+ str(deviceid.version) if tp == "progInfo": print("-- There is prog info, ", tp) print("-- It has textual declaration: , ", treeobj.has_textual_declaration) print("-- It has textual implementation: , ", treeobj.has_textual_implementation) print("-- It is folder: , ", treeobj.is_folder) print("-- It is children: , ", treeobj.get_children(False)) print("-- It is children len: , ", len(treeobj.get_children(False))) print("-- It is progInfo type: , ", type(treeobj.ScriptProject)) #for child in treeobj.get_children(False): # print_tree(child, depth+1,curpath) try: if treeobj.is_folder : #system.ui.prompt('folder:'+u, PromptChoice.YesNo, PromptResult.Yes) isfolder=true pass except: pass if treeobj.has_textual_declaration : t=t+'(*#-#-#-#-#-#-#-#-#-#---Declaration---#-#-#-#-#-#-#-#-#-#-#-#-#*)\r\n' a=treeobj.textual_declaration t=t+a.text if treeobj.has_textual_implementation: t=t+'(*#-#-#-#-#-#-#-#-#-#---Implementation---#-#-#-#-#-#-#-#-#-#-#-#-#*)\r\n' a=treeobj.textual_implementation t=t+a.text if treeobj.has_textual_declaration and not treeobj.has_textual_implementation: t=t+'(*#-#-#-#-#-#-#-#-#-#---NOT Implementation visible---#-#-#-#-#-#-#-#-#-#-#-#-#*)\r\n' if treeobj.is_task : exports=[treeobj] projects.primary.export_native(exports,os.path.join(curpath,name+'.task')) if treeobj.is_libman: exports=[treeobj] projects.primary.export_native(exports,os.path.join(curpath,name+'.lib')) if treeobj.is_textlist: treeobj.export(os.path.join(curpath,name+'.tl')) children = treeobj.get_children(False) if children or isfolder: if tp: curpath=os.path.join(curpath,name+'.'+tp) else: curpath=os.path.join(curpath,name) if not os.path.exists(curpath): os.makedirs(curpath) if t: save(t,curpath,name,tp) for child in treeobj.get_children(False): print_tree(child, depth+1,curpath) for obj in projects.primary.get_children(): print_tree(obj,0,save_folder) with open(os.path.join(save_folder,'ExportInfo.txt'),'w') as f: now = datetime.now() infTimeExecution = now.strftime("%Y-%m-%d %H:%M:%S") f.write("Export date and time: "+infTimeExecution + "\r\n" + str(info)) print("--- Script finished. ---") #system.ui.info('save ok') projects.primary.close()
Last updated: 2024-04-30
Post by francesco86 on Script python for write in a file Project information
CODESYS Forge
talk
(Post)
Dear all, My python script can read a Codesys project and save in file the different POU, but the problem is that I don't able to read the project info from the obj list. Following of this message there is my python script. Can you help my? Best regards Francesco # encoding:utf-8 # We enable the new python 3 print syntax from __future__ import print_function import os import shutil import time import sys from datetime import datetime print("--- Saving files in the project: ---") print("sys.argv: ", len(sys.argv), " elements:") for arg in sys.argv: print(" - ", arg) if (len(sys.argv)>1): folderExportName = sys.argv[1] print(" folderExportName: ", folderExportName) exportPath = sys.argv[2]+ sys.argv[3]+ "\\"+ sys.argv[1] print(" File path: ", exportPath) # git has_repo=False #save_folder=r'E:\Tmp\ControlPlugins\ControlPlugins\Export' save_folder = exportPath if not os.path.exists(save_folder): os.makedirs(save_folder) else: a=os.listdir(save_folder) for f in a: if not f.startswith("."): sub_path= os.path.join(save_folder,f) if os.path.isdir(sub_path): shutil.rmtree(sub_path) else: os.remove(sub_path) elif f==".git": has_repo=True info={} type_dist={ '792f2eb6-721e-4e64-ba20-bc98351056db':'pm', #property method '2db5746d-d284-4425-9f7f-2663a34b0ebc':'dut', #dut 'adb5cb65-8e1d-4a00-b70a-375ea27582f3':'lib', #lib manager 'f89f7675-27f1-46b3-8abb-b7da8e774ffd':'m', #method no ret '8ac092e5-3128-4e26-9e7e-11016c6684f2':'act', #action '6f9dac99-8de1-4efc-8465-68ac443b7d08':'pou', #pou '6654496c-404d-479a-aad2-8551054e5f1e':'itf', #interface '738bea1e-99bb-4f04-90bb-a7a567e74e3a':'', #folder 'ffbfa93a-b94d-45fc-a329-229860183b1d':'gvl', #global var '5a3b8626-d3e9-4f37-98b5-66420063d91e':'prop', #property '2bef0454-1bd3-412a-ac2c-af0f31dbc40f':'tl', #textlist '63784cbb-9ba0-45e6-9d69-babf3f040511':'gtl', #global textlist '225bfe47-7336-4dbc-9419-4105a7c831fa':'dev', #device 'ae1de277-a207-4a28-9efb-456c06bd52f3':'tc', #task configuration 'f8a58466-d7f6-439f-bbb8-d4600e41d099':'m', #method with ret '261bd6e6-249c-4232-bb6f-84c2fbeef430':'gvl', #gvl_Persistent '98a2708a-9b18-4f31-82ed-a1465b24fa2d':'task', #task '085afe48-c5d8-4ea5-ab0d-b35701fa6009':'progInfo'#project information }; def save(text,path,name,tp): if not tp: tp='' else: tp='.'+tp+'.txt' with open(os.path.join(path,name+tp),'w') as f: f.write(text.encode('utf-8')) def print_tree(treeobj, depth, path): global info #record current Path curpath=path isfolder=False t='' #text tp='' #type # get object name name = treeobj.get_name(False) id = treeobj.type.ToString() if id in type_dist: tp = type_dist[treeobj.type.ToString()] #Print all type of objects #print("--Name: ", tp) else: info[id]=name if treeobj.is_device: deviceid = treeobj.get_device_identification() t = 'type='+str(deviceid.type) +'\nid=' +str(deviceid.id) + '\nver='+ str(deviceid.version) if tp == "progInfo": print("-- There is prog info, ", tp) print("-- It has textual declaration: , ", treeobj.has_textual_declaration) print("-- It has textual implementation: , ", treeobj.has_textual_implementation) print("-- It is folder: , ", treeobj.is_folder) print("-- It is children: , ", treeobj.get_children(False)) print("-- It is children len: , ", len(treeobj.get_children(False))) print("-- It is progInfo type: , ", type(treeobj.ScriptProject)) #for child in treeobj.get_children(False): # print_tree(child, depth+1,curpath) try: if treeobj.is_folder : #system.ui.prompt('folder:'+u, PromptChoice.YesNo, PromptResult.Yes) isfolder=true pass except: pass if treeobj.has_textual_declaration : t=t+'(*#-#-#-#-#-#-#-#-#-#---Declaration---#-#-#-#-#-#-#-#-#-#-#-#-#*)\r\n' a=treeobj.textual_declaration t=t+a.text if treeobj.has_textual_implementation: t=t+'(*#-#-#-#-#-#-#-#-#-#---Implementation---#-#-#-#-#-#-#-#-#-#-#-#-#*)\r\n' a=treeobj.textual_implementation t=t+a.text if treeobj.has_textual_declaration and not treeobj.has_textual_implementation: t=t+'(*#-#-#-#-#-#-#-#-#-#---NOT Implementation visible---#-#-#-#-#-#-#-#-#-#-#-#-#*)\r\n' if treeobj.is_task : exports=[treeobj] projects.primary.export_native(exports,os.path.join(curpath,name+'.task')) if treeobj.is_libman: exports=[treeobj] projects.primary.export_native(exports,os.path.join(curpath,name+'.lib')) if treeobj.is_textlist: treeobj.export(os.path.join(curpath,name+'.tl')) children = treeobj.get_children(False) if children or isfolder: if tp: curpath=os.path.join(curpath,name+'.'+tp) else: curpath=os.path.join(curpath,name) if not os.path.exists(curpath): os.makedirs(curpath) if t: save(t,curpath,name,tp) for child in treeobj.get_children(False): print_tree(child, depth+1,curpath) for obj in projects.primary.get_children(): print_tree(obj,0,save_folder) with open(os.path.join(save_folder,'ExportInfo.txt'),'w') as f: now = datetime.now() infTimeExecution = now.strftime("%Y-%m-%d %H:%M:%S") f.write("Export date and time: "+infTimeExecution + "\r\n" + str(info)) print("--- Script finished. ---") #system.ui.info('save ok') projects.primary.close()
Last updated: 2024-04-30
Post by alex-at-xana on EThercat Dynamic configuration
CODESYS Forge
talk
(Post)
Hi Everyone, For a fast monitoring system I am using Ethercat oversampling and timestamping inputs. As the customers has a lot of different configurations out in the field, we went for a dynamic Ethercat configuration. Already got the whole detection chain working but now I am stuck since two days in debugging the configuration. Here are my quesitons: I extended the dynamic config example for the EL3632 16#0E303052: //EL3632 pSlave^.SetDCSettings(TRUE,TRUE,80,80,TRUE,4000,0,0); pSlave^.AddSyncManager(16#1000,128,16#26,TRUE,3); pSlave^.AddSyncManager(16#1080,128,16#22,TRUE,2); pSlave^.AddSyncManager(16#1100,0,16#4,TRUE,1); pSlave^.AddSyncManager(16#1110,214,16#20,TRUE,0); pSlave^.AddFMMU(0,214,0,7,16#1110,0,1,1); pSlave^.AddFMMU(0,1,0,0,16#80D,0,1,1); xKnown := TRUE; This leads to a PLL Error for these devices. I double and triple checked the configuraton, but cannot find the issue. There seems to be one difference: the config dialog creates a startup parameter: 16#10F3:16#05, Name: Command_0, Value:0. Bitlen: 16, Stop on fault: false, jumpt at fault: false: next line: 0 a) I do not find information on how to set this in my code. Can you help me there? b) Without trying to set the value, I get a PLL error for these devices in the master log. Is the config wrong? c) Do I need to set the Master to Autoconfigure or Manual? I used autoconfigure for my tests. The stack creates input data addresses for the slaves input data range (pSlaves[i].InputData) which are different from those created when I use the Engineering tools dialogs to configure Ethercat. Specifically, the addresses seem to be aligned at 16 byte boundaries when they are created using the engineering tool, but may appear at uneven addresses when I use the script in dynamic config. I did not try to access ULINT at uneven addresses yet, but I am suspecting this may be a problem. Do I need to manually align the addresses ? Any help is appreciated...
Last updated: 2024-09-10
Post by george32 on CSV file and string manipulation.
CODESYS Forge
talk
(Post)
Dear folks, I think I have a rather simple question but I could not find the right answer to my question: I have made with Excel a CSV file where I would like to have some general data regarding my program variables. I have made an program what let me read the file. The string I am currently get is at follows: 'IP_Adres;192.168.45.12$R$NPort_number;2000$R$NCycle_time;43$R$NStart_Standard_IO;20$R$N' Now I want to split the string in multiple part, which I later would connect to the right variable. By Google and experimenting I have reached to the following code for the first part of the splitting proces: // Splitting the BOM of the string: Received_string := FileReadString; IF LEFT(STR:=New_string,3)= '' THEN Received_string_without_BOM :=RIGHT(STR:= Received_string,SIZE:= (LEN(STR:= Received_string))-3); END_IF //Splitting the remaining string in part for later declaration. WHILE index = 0 DO index_split_part := FIND(STR1:= Received_string_without_BOM,STR2:= '$R$N'); Part_of_String[index]:=LEFT(STR:=Received_string_without_BOM, SIZE:= index_split_part); index := index + 1; END_WHILE However in the splitting proces I could not understand what is really happening. I understand that the Find() function returns the first value the $R$N in the Received_string_without_BOM. This would mean that the index_split_part := 23 I|P| _ |A |d|r|e|s|;|1_|9 |2 |. |1 |6 |8 |. |4 |5 |. |1 |2 |$ |R |$ |N |P | 1|2| 3 |4 |5|6|7|0|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27| So the next part is to read the first 23 characters of the Received_string_without_BOM with the LEFT() function. I expected that the outcome the following was: 'IP_Adres;192.168.45.12$'. However the outcome is: 'IP_Adres;192.168.45.12$R'. I do not understand where the R after the $ sign comes from, because its place is 24 so it would not be added to the part_of the_string[index]. If I hard coded value 24 for the size it gives me the following return: 'IP_Adres;192.168.45.12$R$N'. I would expect everything till the R but the code adds the $N also to the string. I hope someone could explain to my what I am seeing wrong in my point of view? With kind regards, George
Last updated: 2024-09-27
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
Post by captaincookie on increase default string length in queue
CODESYS Forge
talk
(Post)
Hello, I'm using Codesys V3.5 SP18 Patch 4. In the ElementCollectionExample Project from Codesys, I test the SimpleQueueExample in a Control Win V3 x64 environment. I try to add a string of 95 characters length to a queue. The default length of strings is defined as 80 characters. In the initialization of a string variable, it is possible to increase the length by the definition of e.g. STRING(1000). But when I write the string defined like this to the queue, only 80 characters are written to it and the rest is missing. I think the default length is still set in the queue definition, so it is necessary to change this, isn't it? Is there any option to increase the default length of strings in the queue? Attached you can find the used project. Thanks in advance. If any information are missing or my description unclear please let me know.
Last updated: 2023-10-05
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
.