Post by corriibme on JSON Utilities and SetArray
CODESYS Forge
talk
(Post)
Hello @florian, Could you please help with how to set an array value? I've been trying to use the with the setKeyWithArray method which creates the key with an empty array value. But I have been unable to set items in this array? objindex:= fb_JBuilder.SetKeyWithArray("Key6", diParentIndex := diRootIndex); objindex2:= fb_JBuilder.SetValue(value:= iValue2, diParentIndex:= objindexx); //iValue: array[0..n] of int; Best regards
Last updated: 2024-05-11
Post by damian177 on Persistence variables PFC200
CODESYS Forge
talk
(Post)
Hi, I using persistence variables like below: VAR_GLOBAL PERSISTENT RETAIN id_worker1: ARRAY [0..3] OF INT := [231,234,176,222]; id_worker2: ARRAY [0..3] OF INT := [211,129,125,221]; Initial values can cause some problems?
Last updated: 2023-12-08
How to use matlab to send parameters to codesys
CODESYS Forge
talk
(Thread)
How to use matlab to send parameters to codesys
Last updated: 2018-10-10
Post by squale on URL jumps between different visualizations behind a reverse proxy
CODESYS Forge
talk
(Post)
Hi kevinrn, I have the same question as yours. On my side I try to make nginx work but it doesn't goes well. I think the sub_filter doesn't work int this case.
Last updated: 2024-07-26
Post by macros8 on Alarm Management - latched variable represented as Text list
CODESYS Forge
talk
(Post)
Hi, I haven´t noticed you put the comment here. I thing it´s a bit different. What I want is to have detail errors of technology in data type e.g. INT. This variable I would latch to the corresponding error msg but I would like to get it convert to text from the text list and not keep it in INT form. Example. Main error Valve Error: SubErrors 1 - Both sensors 2 - Not retracted in time 3 - Not pulled out in time In HMI Main error + latch SubErrors => "Valve Error: Both sensors" The benefit is that text lists are part of translation and can be easily manipulated. I know I can create whole string msg in PLC but then, it lose advantage of Alarm management. Thanks. M.
Last updated: 2023-11-07
Post by mondinmr on Jitter problems on imx8
CODESYS Forge
talk
(Post)
SOLVED!!! In this imx8 max_cstate=1 in kernel boot parameters is not working! We found a workaround: #include <stdio.h> #include <fcntl.h> #include <unistd.h> #include <stdint.h> int main(void) { int fd; uint32_t value = 0; fd = open("/dev/cpu_dma_latency", O_WRONLY); if (fd < 0) { perror("Error opening /dev/cpu_dma_latency"); return 1; } if (write(fd, &value, sizeof(value)) != sizeof(value)) { perror("Error writing to /dev/cpu_dma_latency"); close(fd); return 1; } while (1) { pause(); } } This simple code launched before CODESYS do the same work! Now jitter is identical as measured by cyclictest!
Last updated: 2023-10-19
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 garmusd on Raspberry Pi 5 GPIO not working.
CODESYS Forge
talk
(Post)
Hi, Codesyscontrol 4.13.0.0 Raspberry Pi5 64bit with latest updates. Cant get working GPIO - no output and no input. SPI/I2C not tested. GPIOs B+/Pi2, Input/Output is set in the parameters, assigned variables int the Mapping. Absolutely no reaction. Do I need to configure anything else to make it work? Thanks!
Last updated: 2024-09-26
Post by timvh on Converting each character to a string into ASCII
CODESYS Forge
talk
(Post)
Nice puzzle for a Saturday afternoon :-). Here my suggestion: VAR sInput : STRING := 'R123'; byChar : BYTE; sOutput : STRING; i: INT; END_VAR sOutput := ''; IF LEN(sInput) = 0 THEN RETURN; END_IF FOR i := 0 TO LEN(sInput) - 1 DO byChar := sInput[i]; sOutput := Concat(sOutput, TO_STRING(byChar)); END_FOR
Last updated: 2024-11-09
VAR_IN_OUT, POINTER TO and REFERENCE TO
CODESYS Forge
talk
(Thread)
VAR_IN_OUT, POINTER TO and REFERENCE TO
Last updated: 2021-11-16
Unable to connect to this device
CODESYS Forge
talk
(Thread)
Unable to connect to this device
Last updated: 2024-06-28
Post by corriibme on Setting array values with JSON Utilities SL
CODESYS Forge
talk
(Post)
I have been trying to set an array value to a JSON structure of this form: {"key": [1,2,3,4]} While I have been able to create the key and set its value to an empty array, I've not had any luck in putting any value in that array. objindex:= fb_JBuilder.SetKeyWithArray("Key6", diParentIndex := diRootIndex); objindex2:= fb_JBuilder.SetValue(value:= iValue2, diParentIndex:= objindex); iValue2: ARRAY[0..3] OF INT:= [1,2,3,4]; The two lines of code above produce {"key6": []} . The second line essentially has no effect.
Last updated: 2024-05-12
Post by talhaali on Create an alarm list without use of Alarm config
CODESYS Forge
talk
(Post)
Hi, I am trying to access active alarms in code(As alarm count variable updates only when we go to to alarm table frame in visualization). I wrote following code but it is not working: VAR iCountActiveAlarms : INT; parritfActiveAlarms : POINTER TO ARRAY[0..0] OF IAlarm; itfAlarmManagerClientAll : IAlarmManagerClient; END_VAR AlarmManager.g_AlarmHandler.GetActiveAlarms( itfAlarmManagerClient :=itfAlarmManagerClientAll, iCountActiveAlarms => iCountActiveAlarms, parritfActiveAlarms => parritfActiveAlarms); The Value is always 0. Please help.
Last updated: 2024-06-06
Post by talhaali on Create an alarm list without use of Alarm config
CODESYS Forge
talk
(Post)
Hi, I am trying to access active alarms in code(As alarm count variable updates only when we go to to alarm table frame in visualization). I wrote following code but it is not working: VAR iCountActiveAlarms : INT; parritfActiveAlarms : POINTER TO ARRAY[0..0] OF IAlarm; itfAlarmManagerClientAll : IAlarmManagerClient; END_VAR AlarmManager.g_AlarmHandler.GetActiveAlarms( itfAlarmManagerClient :=itfAlarmManagerClientAll, iCountActiveAlarms => iCountActiveAlarms, parritfActiveAlarms => parritfActiveAlarms); The Value is always 0. Please help.
Last updated: 2024-06-06
Post by bjarne-pagaard on Codesys v3.5 Sint to byte
CODESYS Forge
talk
(Post)
Hi A SINT is a short (signed) integer. It is already only 1 byte - so you should have no problem casting it to a byte like so: bMyByte := TO_BYTE(sintMyShortInt); If you have a regular INT you want to put in 2 bytes - there are a lot of ways you can do this. A Union is certainly one of them. You could have a union with 2 memebers: An array of 2 bytes as one member, and an integer value as another member. Another way would be to look at MEMCPY to put the value into your CAN-message. .. or create a function to take your input value as input, and giving you 2 individual bytes as output. This could be handy if you need to change the byte-order. Integer data types: https://help.codesys.com/webapp/_cds_datatype_integer;product=codesys;version=3.5.17.0 -Bjarne
Last updated: 2024-04-24
Post by domoticom on multiply gives negatives
CODESYS Forge
talk
(Post)
Hi, Attached net gives sometimes negatives, what am I doing wrong ? PS: detectie_nalooptijd_s = INT
Last updated: 2024-01-04
Post by timvh on Alarm Configuration Notification Action
CODESYS Forge
talk
(Post)
If it is a BOOL, then use: ...Error_Active := ALARM BOOL: ALARM INT: STATE
Last updated: 2024-05-14
Post by svn123 on In Simulation Mode, logic is not executing
CODESYS Forge
talk
(Post)
Please check the attached snapshot. I am converting an int to real and storing in rVlv01_SV and then scaling the value using LIN_TRAFO. In the bottom Status Bar of Codesys, both RUN and SIMULATION are visible. When I enter value 100 as input to INT_TO_REAL instruction and press Ctrl-F7, the value can be seen at the input but the logic seems not to work. I searched for help but could not find anything relevant. What could be the reason. Codesys ver3.5.11 svn
Last updated: 2023-12-25
Post by ndzied2 on Rounding error in simple addition
CODESYS Forge
talk
(Post)
This is a consequence of how computers store floating point numbers. 0.1 cannot be exactly represented in a computer. This is not a CoDeSys thing. Here is a link to a converter to show you the exact value that is represented when you use a REAL data type (which is a 32 bit float). https://baseconvert.com/ieee-754-floating-point If you really need to keep track of 0.1 increments. use INT OR DINT and then add 1 each time and assume that there is one decimal place.
Last updated: 2024-05-24
Post by wiresplus on Display minutes as hours & minutes
CODESYS Forge
talk
(Post)
Hello, I have a counter that increments an INT value once per minute I want to display this value in Minutes until 60, then Hours/Minutes thereafter on the HMI Codesys V3.5 SP16 I can divide the minutes by 60 to get hours, but then the minutes is still more than 60. Example: a process has run for 350 Minutes. I need to display "5 Hours 50 Minutes" But if it's only been 45 Minutes, I don't want "0 Hours 45 Minutes" , just "45 Minutes"
Last updated: 2024-05-25
Post by alexgooi on Modbus writing on value change
CODESYS Forge
talk
(Post)
The way I usally tackle this is by syncing only words (then you are able to use the FB above). If you then want to write a Boolean simply type it like this. Value[1].0 := Bool1; Value[1].1 := Bool2; Value[1].2 := Bool3; Uints have the same number of bits than a INT/WORD so these ones will work as well (they are only represented diffrently). A Real will work but you will loose some infomration in the conversion. If you want to keep the information you can convert 2 words to a float with a function (for example with the IEEE-754 standard) . In this way the syncing to the server is very simple and in the Codesys Program you decide what part of the word you want to use.
Last updated: 2024-04-03
Post by r-niedermayer on C0564 Warning Message
CODESYS Forge
talk
(Post)
Please see or Online Help on how to initialize variable before using them: https://content.helpme-codesys.com/en/CODESYS%20Development%20System/_cds_pragma_attribute_global_init_slot.html Regarding the Attribute global_init_slot: You can use this pragma to influence the order in which signatures are processed during global initialization. It can only be applied to signatures. By default, the initialization sequence for variables from global variable lists is undefined! However, if, for example, variables from one list depend on variables from another list, it is necessary to initialize one before the other. (Aee OLH and Syntax) The placeholder <slot> must be replaced by an integer value that defines the position in the initialization sequence.</slot> The default value is 50000. A lower value causes an earlier initialization! If several signatures have the same value for the 'global_init_slot' attribute, the order of their initialization remains undefined! Cautious application should therefore be considered! Example: The project contains f.e. two global variable lists GVL_1 and GVL_2. The global variable "A" is part of the global variable list GVL_1: {attribute 'global_init_slot' := '300'} VAR_GLOBAL A : INT:=1000; END_VAR The initialization values of the variables "B" and "C" of GVL_2 are dependent on the variable "A". {attribute 'global_init_slot' := '350'} VAR_GLOBAL B : INT:=A+1; C : INT:=A-1; END_VAR So if you set the 'global_init_slot' attribute of the global variable list GVL_1 to 300, i.e. to the lowest initialization value in the example, then it is ensured that the expression "A+1" is well-defined at the time of initialization of "B".
Last updated: 2024-01-30
I want to convert a WORD to a hex string like 15.432 to '3C48'
CODESYS Forge
talk
(Thread)
I want to convert a WORD to a hex string like 15.432 to '3C48'
Last updated: 2024-04-19
How to allow a user to handle certificates without access to sourcecode?
CODESYS Forge
talk
(Thread)
How to allow a user to handle certificates without access to sourcecode?
Last updated: 2024-08-07
how to add module to raspberry pi
CODESYS Forge
talk
(Thread)
how to add module to raspberry pi
Last updated: 2020-11-24
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
.