Use a Global Constant as timeout value in Test Action
CODESYS Forge
talk
(Thread)
Use a Global Constant as timeout value in Test Action
Last updated: 2015-11-27
Constant error in logs "SysEthernetGetPortConfigAndStatus: Adapter Not Found"
CODESYS Forge
talk
(Thread)
Constant error in logs "SysEthernetGetPortConfigAndStatus: Adapter Not Found"
Last updated: 2024-02-05
How to put four bytes into a DWORD
CODESYS Forge
talk
(Thread)
How to put four bytes into a DWORD
Last updated: 2013-01-12
Fehler 4010: "Kann REAL nicht in DWORD konvertieren" ??????
CODESYS Forge
talk
(Thread)
Fehler 4010: "Kann REAL nicht in DWORD konvertieren" ??????
Last updated: 2012-03-01
Convert STRING to DWORD for TCP/IP client
CODESYS Forge
talk
(Thread)
Convert STRING to DWORD for TCP/IP client
Last updated: 2022-06-11
Is DWORD considered signed or unsigned?
CODESYS Forge
talk
(Thread)
Is DWORD considered signed or unsigned?
Last updated: 2017-07-26
Table Control on an array using a constant for its size.
CODESYS Forge
talk
(Thread)
Table Control on an array using a constant for its size.
Last updated: 2016-01-08
Cannot pass array of constant size to a function as a reference
CODESYS Forge
talk
(Thread)
Cannot pass array of constant size to a function as a reference
Last updated: 2024-01-09
Post by apurv on Cannot pass array of constant size to a function as a reference
CODESYS Forge
talk
(Post)
I have a Array of constant size defined like this Var Constant MAX_SIZE :UINT := 10; End_var VAR array : ARRAY[0..MAX_SIZE] OF INT; END_VAR Now I want to pass this array to a function by reference, Function fun : INT VAR_IN_OUT CONSTANT MAX_SIZE : UINT; END_VAR VAR_INPUT array : REFERENCE TO ARRAY[0..MAX_SIZE] OF INT; END_VAR but when I run this it gives strange Errors Error : Cannot Convert type 'ARRAY [0..MAX_SIZE] OF INT' to type 'ARRAY[0..MAX_SIZE] OF INT'
Last updated: 2024-01-07
Post by patch914 on Constant error in logs "SysEthernetGetPortConfigAndStatus: Adapter Not Found"
CODESYS Forge
talk
(Post)
Did you find a solution for this? I am seeing the same errors.
Last updated: 2024-02-05
Post by tvm on Cannot pass array of constant size to a function as a reference
CODESYS Forge
talk
(Post)
maybe this would be a better approach, then you don't have to pass the constant at all. FUNCTION fun : INT VAR_IN_OUT arr: ARRAY[*] OF INT; END_VAR VAR lower: DINT; upper: DINT; END_VAR lower:= LOWER_BOUND(arr, 1); upper:= UPPER_BOUND(arr, 1); see here as well https://help.codesys.com/api-content/2/codesys/3.5.12.0/en/_cds_datatype_array/
Last updated: 2024-01-08
Post by struccc on Release SP20 - Changes in behaviour?
CODESYS Forge
talk
(Post)
Dear all, I've just started to migrate some of my ancient projects to SP20. There is one strange error (?) I have noticed so far. In a method call, depending on the circumstances I would like to return reference to an object, or an invalid reference: METHOD Add_EVT_OUT : REFERENCE TO FB_MSG VAR END_VAR IF __ISVALIDREF(refMSG_Entry) THEN Add_EVT_OUT REF= MANAGER.AddMsg_EVT_OUT( refMSG_Entry, _Get_EVT_Message(MSG_EVENT.OUT), _Get_EVT_AddCode(MSG_EVENT.OUT) )^; ELSE Add_EVT_OUT := 0; END_IF So far setting a reference variable to 0, did this. But now, the expression Add_EVT_OUT := 0; gives an error: [ERROR] DB_WTP_370: Add_EVT_ACK MSG_TRIGGER_EXT: C0032: Cannot convert type 'BIT' to type 'REFERENCE TO FB_MSG' Naturally... I can write: Add_EVT_OUT := DWORD#0; But is this the correct way? Is there any constant I could use instead, like "NULL"? Or this is totally wrong and to be avoided?
Last updated: 2024-03-24
Post by apurv on Cannot pass array of constant size to a function as a reference
CODESYS Forge
talk
(Post)
Could not find the solution to this issue but I have side stepped this by creating a global variable MAX_SIZE.
Last updated: 2024-01-08
Post by apurv on Cannot pass array of constant size to a function as a reference
CODESYS Forge
talk
(Post)
okay but will this pass the array by copying it or it will be a reference to original array only.
Last updated: 2024-01-09
Post by pietrobalint on Retain / Persistent Variables in Codesys for Raspberry Pi
CODESYS Forge
talk
(Post)
If I select "Update boot aplication" while I download the code the persistent variables got a constant startup value. But during the running I am still not able make the persistent variables to hold they actual value.
Last updated: 2024-09-01
Post by jeroenaero on CodeSys Raspberry pi I2C driver not found
CODESYS Forge
talk
(Post)
I also installed your codesys version with the codesys for raspberry pi package version 4.7.0. but with no succes, only the TCA multiplexer has a constant green turning circle, the ADS1115 still changing from running to not running.
Last updated: 2024-11-11
Post by ara32 on CODESYS 4 Linux:
CODESYS Forge
talk
(Post)
Hello! I managed to correctly launch CODESYS Developer Studio 3.5.17, almost all functionality works. The only issue remaining is that when connecting to a device and obtaining its public key, the NCryptEncrypt function is called, which is not fully implemented in the DLL source code, resulting in the connection not being established. Currently, the code of this function in the Wine repository looks like this: SECURITY_STATUS WINAPI NCryptEncrypt(NCRYPT_KEY_HANDLE key, BYTE *input, DWORD insize, void *padding, BYTE *output, DWORD outsize, DWORD *result, DWORD flags) { struct object *key_object = (struct object *)key; TRACE("(%#Ix, %p, %lu, %p, %p, %lu, %p, %#lx)\n", key, input, insize, padding, output, outsize, result, flags); if (flags & ~(NCRYPT_NO_PADDING_FLAG | NCRYPT_PAD_OAEP_FLAG | NCRYPT_PAD_PKCS1_FLAG | NCRYPT_SILENT_FLAG)) { FIXME("Flags %lx not supported\n", flags); return NTE_BAD_FLAGS; } if (flags & NCRYPT_NO_PADDING_FLAG || flags & NCRYPT_PAD_OAEP_FLAG) { FIXME("No padding and oaep padding not supported\n"); return NTE_NOT_SUPPORTED; } if (key_object->type != KEY) return NTE_INVALID_HANDLE; return map_ntstatus(BCryptEncrypt(key_object->key.bcrypt_key, input, insize, padding, NULL, 0, output, outsize, result, flags)); } The program crashes due to the NCRYPT_PAD_OAEP_FLAG flag. I'm not proficient in C++, but I attempted to add handling myself, and here's the result: SECURITY_STATUS WINAPI NCryptEncrypt(NCRYPT_KEY_HANDLE key, BYTE *input, DWORD insize, void *padding, BYTE *output, DWORD outsize, DWORD *result, DWORD flags) { struct object *key_object = (struct object *)key; TRACE("(%#Ix, %p, %lu, %p, %p, %lu, %p, %#lx)\n", key, input, insize, padding, output, outsize, result, flags); if (flags & ~(NCRYPT_NO_PADDING_FLAG | NCRYPT_PAD_OAEP_FLAG | NCRYPT_PAD_PKCS1_FLAG | NCRYPT_SILENT_FLAG)) { FIXME("Flags %lx not supported\n", flags); return NTE_BAD_FLAGS; } if (flags & NCRYPT_NO_PADDING_FLAG) { FIXME("No padding not supported\n"); return NTE_NOT_SUPPORTED; } BCRYPT_OAEP_PADDING_INFO oaepInfo = { 0 }; oaepInfo.pszAlgId = BCRYPT_SHA1_ALGORITHM; NTSTATUS status = BCryptEncrypt(key_object->key.bcrypt_key, input, insize, &oaepInfo, NULL, 0, output, outsize, result, flags); if (key_object->type != KEY) return NTE_INVALID_HANDLE; return map_ntstatus(BCryptEncrypt(key_object->key.bcrypt_key, input, insize, padding, NULL, 0, output, outsize, result, flags)); } Now, when calling the connection, it crashes with the error "bcrypt:BCryptEncrypt flags 0x4 not implemented." Can anyone help with enhancing this functionality or at least point me in the right direction?
Last updated: 2024-03-22
Post by marekxc on Little endian to Float from Modbus RTU
CODESYS Forge
talk
(Post)
Maybe try going back to step one and: Var Reg1: WORD; Reg2: WORD; Reg12: DWORD; Value: REAL; end_var // program Reg1:= 4096; Reg2:= 14884; Reg12:= (reg2 * 65536) + reg1; Value:= DWORD_TO_REAL(Reg12);
Last updated: 2023-12-28
Post by struccc on Bibliothek: floatingpointutils
CODESYS Forge
talk
(Post)
The issue s the byte order typically in this case. Can be especially problematic with floating point numbers - even more tricky if transferred with a word based protocol. It is a peasant way to try out the alternatives, dword order can be a-b-c-d, b-a-d-c, c-d-a-b, d-c-b-a where a is the most significant, d is the least significant byte. So all you need is to swap the bytes in your dword, until you get the expected result. If you don't want to mess writing code for this, I'd recommend CAA_Memory library for that: MEM.ReverseBYTEsInDWORD and MEM.ReverseWORDsInDWORD functions would definitively do the trick. Otherwise, can do like this: VAR dwIn : DWORD := 16#11223344; dwOut : DWORD; rOut : REAL; pIN : POINTER TO BYTE; pOUT : POINTER TO BYTE; END_VAR pIN := ADR(dwIn); //pOUt := ADR(dwOut); pOUt := ADR(rOut); pOut[0] := pIN[3]; pOut[1] := pIN[2]; pOut[2] := pIN[1]; pOut[3] := pIN[0]; Ugly, but does the job...
Last updated: 17 hours ago
Post by ulad on SPI Communication
CODESYS Forge
talk
(Post)
Hello. I created a project that uses SPI. This project is working well. I can see with an oscilloscope that the SPI pins are actually changing. But when I resave this project in the IDE and open it later in the system, I see a constant error. What do I need to fix? What am I doing wrong? Thank you.
Last updated: 2023-12-23
Post by tvm on Cannot pass array of constant size to a function as a reference
CODESYS Forge
talk
(Post)
It will be a reference, because it's a VAR_IN_OUT. it's a little weird debugging the array online. It just shows as a POINTER TO INT, and you can't actually see the array from the function side. But you can still work with it as a normal array, not a pointer.
Last updated: 2024-01-09
Post by reinier-geers on Swap Output in frame
CODESYS Forge
talk
(Post)
How can i swap an output in a frame ? Ive got a frame of a mixer. use this twise. I want to turn these on and of. i can Get in the frame as dwAdr_Mixer : DWORD; . as Var_IN_OUT. Then Adress as Adr(Output ) But in the frame i cant swap dwAdr_Mixer^ :-= not dwAdr_Mixer^ ;
Last updated: 2024-03-11
Post by jmfernandes on OpenDir always in error
CODESYS Forge
talk
(Post)
Hello just to give more feedback the error I get is "ERROR_UNKNOWN :represents raw value of 5110" in File.DirOpen. The xDone never gets true, and I never get the listing of files (csv files in this case). In the hDir i get the value of 0 for a DWord!?
Last updated: 2024-07-31
Post by agilename on J1939 manager DM1 message reading
CODESYS Forge
talk
(Post)
https://content.helpme-codesys.com/en/CODESYS%20CANbus/_can_f_j1939_diagnosis_application.html you need this : VAR J1939_ECU:j1939.J1939RemoteECUDiag; DM1_ :j1939.DM1_Read; DTCliste : J1939.idtchandlerList; DTCWriter : j1939.DTCBufferWriter; arDTC:ARRAY[0..MaxDTC]OF j1939.DTC; END_VAR VAR CONSTANT MaxDTC:UDINT :=100; END_VAR DM1_( xEnable:=TRUE, xDone=> , xBusy=> , xError=> , itfSourceECU:= J1939_ECU, //My CAN J1939 ECU itfDTCHandlerList=> DTCListe , udiDTCCount=> , MalfunctionIndicatorLamp=> , RedStopLamp=> , AmberWarningLamp=> , ProtectLamp=> , xReceived=> , eError=> ); DTCWriter( xEnable:= TRUE, itfDTCHandlerList:=DM1_, eError=> , pDTCBuffer:=ADR(arDTC) , udiDTCBufferCount:=MaxDTC , udiDTCReceiveCount=> , udiDTCLostCount=> , xReceived=> );
Last updated: 2024-09-05
Post by sebastianrapi on Bibliothek: floatingpointutils
CODESYS Forge
talk
(Post)
Hallo Zusammen, ich versuche die Bibliothek FloatingPointUtils.compiled-library-v3 zu benutzen. leider kommt dabei folgende Fehlermeldung: Kein Quellcode fΓΌr dieses Objekt... (siehe Anhang) Wie kann ich diese Bib einbinden? Kann ich diese irgendwo herunterladen? Mein Ziel ist es ein DWORD (float) in ein REAL umzuwandeln. ICh hoffe, dass ich dies mit der Funktion HexStrToReal machen kann. So wie hier: https://gregstoll.com/~gregstoll/floattohex/ convert to float... Oder gibt es bei Codesys einen anderen Weg? Ich verwende v3.5 SP20 Patch 1 + (32Bit) GrΓΌΓe Sebastian
Last updated: 2024-10-17
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
.