Search talk: init array

 
<< < 1 .. 14 15 16 17 18 .. 22 > >> (Page 16 of 22)

Post by timvh on Readable IO names CODESYS Forge talk (Post)
IF you create an ENUM {attribute 'qualified_only'} {attribute 'strict'} TYPE E_IO : ( FIRST := 0, SECOND := 1 ); END_TYPE You should be able to access the array items like: IOCard_OUTPUT[E_IO.FIRST]
Last updated: 2024-09-28

Post by rckalex on Changing Trace Variable at Runtime CODESYS Forge talk (Post)
Is it possible to change the variable being traced during runtime? I would like to use the CURRENTCLIENTID in combination with an array of real numbers to alter the traced variable in a display window, without needing to create separate visualizations for each variable.
Last updated: 2025-01-22

Post by ton on Length of string and Array of bytes CODESYS Forge talk (Post)
When you use a string value 0 will be the end terminator. Everything after this will not be in the string. I guess byte 2394 has a value 0.
Last updated: 2025-04-01

Post by mariacugnier on Reading Devices ComState CODESYS Forge talk (Post)
Does anyone know how to access the ModbusTCPSlave_Diag.ComState without declaring each one by the device name? I attached them to an array but since I may have dozens of devices this is still a bad solution.
Last updated: 2025-05-22

Post by mariacugnier on Reading Devices ComState CODESYS Forge talk (Post)
Does anyone know how to access the ModbusTCPSlave_Diag.ComState without declaring each one by the device name? I attached them to an array but since I may have dozens of devices this is still a bad solution.
Last updated: 2025-05-22

Post by nxbp on Cam Editor And Cam Problem CODESYS Forge talk (Post)
I Created cam with 361 cam points ( 0,1,2.....360 ). The values in the Cam_A array do not match the Cam points entered in the Cam editor.
Last updated: 2025-06-22

Post by scoob on ModbusFB - Slow Response Time CODESYS Forge talk (Post)
Hello, I have been trying to use the ModbusFB functions so I can put some code into libraries, but it seems to be very slow for me. I have a Modbus device with 100ms registers. I previously setup 10 channels in the 'traditional' Modbus Slave with channels and mappings - and set a cyclic trigger at 100ms - this worked fine. I then tried the ModbusFB example, and setup reading the same 10 blocks of modbus addresses, copying the example and putting all of the requests into an array and triggering the requests sequentially. I timed how long the requests are taking to get round to each one, and it is around 1s 450ms. How do I speed this up to match the cyclic time? IF NOT(init) THEN init := TRUE; // Set the required IP address: ipAddress[0] := 192; ipAddress[1] := 168; ipAddress[2] := 1; ipAddress[3] := 10; // Pass the required IP address to the clinet FB: client_NetworkSwitch.aIPaddr := ipAddress; client_NetworkSwitch.udiLogOptions := (ModbusFB.LoggingOptions.ClientConnectDisconnect OR ModbusFB.LoggingOptions.ClientReceivedValidReplies); // Try to connect the client client_NetworkSwitch(xConnect:=TRUE); // Configure all the channels to read connecting them to the client: portStatus_Request(rClient := client_NetworkSwitch, uiStartItem := 4096, uiQuantity := 32, pData := ADR(portStatus), udiReplyTimeout := udiReplyTimeout); portSpeed_Request(rClient := client_NetworkSwitch, uiStartItem := 4352, uiQuantity := 32, pData := ADR(portSpeed)); flowControl_Request(rClient := client_NetworkSwitch, uiStartItem := 4608, uiQuantity := 32, pData := ADR(flowControl)); linkUpCounter_Request(rClient := client_NetworkSwitch, uiStartItem := 5888, uiQuantity := 32, pData := ADR(linkUpCounter)); txPacketCounter1_Request(rClient := client_NetworkSwitch, uiStartItem := 8192, uiQuantity := 100, pData := ADR(txPacketCounter1)); txPacketCounter2_Request(rClient := client_NetworkSwitch, uiStartItem := 8292, uiQuantity := 28, pData := ADR(txPacketCounter2)); rxPacketCounter1_Request(rClient := client_NetworkSwitch, uiStartItem := 8448, uiQuantity := 100, pData := ADR(rxPacketCounter1)); rxPacketCounter2_Request(rClient := client_NetworkSwitch, uiStartItem := 8548, uiQuantity := 28, pData := ADR(rxPacketCounter2)); txErrors_Request(rClient := client_NetworkSwitch, uiStartItem := 8704, uiQuantity := 64, pData := ADR(txErrors)); rxErrors_Request(rClient := client_NetworkSwitch, uiStartItem := 8960, uiQuantity := 64, pData := ADR(rxErrors)); // Trigger all client requests initially FOR clientRequestsCnt := 0 TO (SIZEOF(clientRequests)/SIZEOF(clientRequests[0]))-1 DO pClientRequest := clientRequests[clientRequestsCnt]; pClientRequest^.xExecute := TRUE; END_FOR // Prepare sequential trigger / control of client requests. clientRequestsCnt := 0; pClientRequest := clientRequests[clientRequestsCnt]; END_IF // Call the client to do request processing: client_NetworkSwitch(); // Now we trigger client request sequentially ... IF NOT pClientRequest^.xExecute AND NOT pClientRequest^.xDone AND run AND client_NetworkSwitch.xConnected THEN pClientRequest^.xExecute := TRUE; END_IF // .. and check result/error IF pClientRequest^.xExecute AND run AND client_NetworkSwitch.xConnected THEN IF pClientRequest^.xDone THEN // Prepare next trigger of client request (a rising edge of xExecute) pClientRequest^.xExecute := FALSE; IF clientRequestsCnt < SIZEOF(clientRequests)/SIZEOF(clientRequests[0])-1 THEN // next client request clientRequestsCnt := clientRequestsCnt + 1; ELSE clientRequestsIterationCounter := clientRequestsIterationCounter + 1; clientRequestsCnt := 0; END_IF pClientRequest := clientRequests[clientRequestsCnt]; END_IF END_IF I did try a semi-coded way using the IoDrvModbusTCP library, and setting the slave com settings, then 10 commands and 10 requests, then using a TP on xDone as a pause, before triggering another request - this is time the delay is around 120ms - so the device is fine with the speed, just something I am doing wrong in the ModbusFB method I am sure.
Last updated: 2024-04-26

Post by janderson on OPC UA Server limitations, large array crashes runtime CODESYS Forge talk (Post)
What are the limitations of the OPC UA Server? I am trying to get data off my PLC that is acquired at high rates (~50k samples/s) so I am storing them in arrays and trying to get the arrays off the PLC. When I attempt to read a ~200k element array through OPC UA the server and runtime crashes (requiring tools -> update linux arm64 -> start runtime). Is there a better way to get highspeed data off? The ACDatalog library seems a bit irritating to use so I would prefer to go through OPC UA.
Last updated: 2023-08-23

Post by simotion on Pointer to Softmotion axis CODESYS Forge talk (Post)
In my projet I use Softmotion. There are several Softmotion axis (type SM_Drive_Virtual). In the Global Variable List I have an array of pointers to the adress of the Axis. Axis : ARRAY[1..iMaxCntAxes] OF POINTER TO AXIS_REF_SM3 := ADR(AX01_Axis), // [1 ADR(AX02_Axis), // [2] This works, but when compiling I get the message : . [WARNING] E3D: GVL Device: PLC Logic: Application: C0564: A reference to uninitialized variable AX01_Axis is used for initialization of Axis. Accessing the uninitialized variable may result in unexpected behavior. [WARNING] E3D: GVL Device: PLC Logic: Application: C0564: A reference to uninitialized variable AX02_Axis is used for initialization of Axis. Accessing the uninitialized variable may result in unexpected behavior. Is there a way when initializing to force the hardware (softmotion axis) to first initialize and then the Global Variable List?
Last updated: 2023-10-25

Post by enginear on auf Feldbusvariablen über Array zugreifen CODESYS Forge talk (Post)
Hallo, ich würde gerne die Variablen, die ich mit Ethernet/IP übertrage gerne in meinem Programm möglichst einfach ansprechen. Ist es möglich die übertragenen Variablen über ein Array direkt anzusprechen? Ich kann zwar die Variablen alle händisch benennen und dann im Programm auf diese zugreifen, aber wenn es viele Variablen sind und ich diese alle der Reihe nach in einer Schleife durchgehen möchte, so ist das schon viel Code der dafür notwendig ist. Bei mir werden die Variablen in Codesys unter dem Ordner (kann man aufklappen) 'Exclusive Owner' angezeigt. Da klingt es doch naheliegend, dass man direkt über den Ordnernamen die Variablen per Indexierung oder ähnliches ansprechen kann. vielen Dank und viele Grüße enginear
Last updated: 2024-02-23

Post by paro on Modbus Client Request Not Processed CODESYS Forge talk (Post)
Hi, works in my case if I increase the timeout! to_udint(t#100ms) -> 100 -> 100us.. FUNCTION_BLOCK MODBUS_master_example_ST VAR initDone : BOOL := FALSE; aIPAddress : ARRAY [0..3] OF BYTE := [127,0,0,1]; clientTcp: ModbusFB.ClientTcp; // buffer to read input registers aDataInputRegisters : ARRAY[0..9] OF UINT; // some client requests clientRequestReadInputRegisters: ModbusFB.ClientRequestReadInputRegisters; xExecute: BOOL; uistart: UINT := 100; udiTimeout1: UDINT; END_VAR IF NOT initDone THEN initDone := TRUE; // configure clientTcp clientTcp(aIPaddr:=aIPAddress, uiPort:=502, udiLogOptions := ModbusFB.LoggingOptions.All); // configure clientRequestReadInputRegisters clientRequestReadInputRegisters(rClient:=clientTcp, uiUnitId:=1, udiTimeout:=1000000); // 1sec END_IF // call the client FB's clientTcp(); clientRequestReadInputRegisters(rClient:=clientTcp,xExecute := xExecute AND NOT clientRequestReadInputRegisters.xBusy ,uiStartItem:=uistart, uiQuantity:=3, pData:=ADR(aDataInputRegisters[0]));
Last updated: 2024-05-30

Post by zer0g on Modbus Client Request Not Processed CODESYS Forge talk (Post)
I'm using the code bellow which is based on the Codesys example: FUNCTION_BLOCK MODBUS_master_example_ST VAR initDone : BOOL := FALSE; aIPAddress : ARRAY [0..3] OF BYTE := [127,0,0,1]; clientTcp: ModbusFB.ClientTcp; // buffer to read input registers aDataInputRegisters : ARRAY[0..9] OF UINT; // some client requests clientRequestReadInputRegisters: ModbusFB.ClientRequestReadInputRegisters; xExecute: BOOL; END_VAR IF NOT initDone THEN initDone := TRUE; // configure clientTcp clientTcp(aIPaddr:=aIPAddress, uiPort:=502, udiLogOptions := ModbusFB.LoggingOptions.All); // configure clientRequestReadInputRegisters clientRequestReadInputRegisters(rClient:=clientTcp, uiUnitId:=1, udiTimeout:=TO_UDINT(T#1000MS)); END_IF // call the client FB's clientTcp(); clientRequestReadInputRegisters(rClient:=clientTcp,xExecute := xExecute AND NOT clientRequestReadInputRegisters.xBusy ,uiStartItem:=2, uiQuantity:=3, pData:=ADR(aDataInputRegisters[0])); As you can see the clientTCP is called cyclically with the same result.
Last updated: 2024-05-30

Post by gilbertamine on Comparing Arrays of structure CODESYS Forge talk (Post)
Hi Everybody, I'm looking for a simple way of comparing two array of a structure. My structure is define like this : TYPE Positions_T : STRUCT PosX: DINT; PosY: DINT; PosZ: DINT; END_STRUCT END_TYPE I have multiples Var : ARRAY [0..220] OF Positions_T, that I need to compare quickly. I don't really want to do a Loop that goes by every 220 points and compare each one of them so I was wondering if there is another way. I came accross the MEM.Compare function, but it require to know the size in Bytes of the memory, and I don't know how to do that... Has anybody an idea on how to do the comparing easily ? Thanks in advance
Last updated: 2024-08-22

Post by dkugler on Webvisu client connection monitoring CODESYS Forge talk (Post)
you can give this code snippet a try. It's extracted and simplyfied from my code: Install VisuElemBase lib if not installed yet. Execute in visu task: VAR pClientData : ARRAY [-1..100] OF POINTER TO VisuElemBase.VisuStructClientData; END_VAR VisuElemBase.g_ClientManager.BeginIteration(); pClientData := VisuElemBase.g_ClientManager.GetNextClient(); WHILE pClientData <> 0 DO pClientData[pClientData^.GlobalData.GlobalClientID] := pClientData; END_WHILE You have to make shure every no longer updated pointers in the array have to be deleted and no longer used by your code! Usage of this pointer access at your own risk :-) Works with SP16. From SP17 and newer there will be warnigs etc. using this solution as I remember. It will be great, if Codesys publishes a example or give a hint how to accesse this client values with the VisuUtil lib or other future-proof way!
Last updated: 2024-09-09

Post by imdatatas on String length issue in GetRecipeNames method CODESYS Forge talk (Post)
Hi, If the string length in the GetRecipeNames method is lower than the default value, there will be a problem with the resulting Recipe file names. For example; When the method in the link is called, let's say the defined string length is 19. In this case, the string content is corrupted as in the image. strArr: ARRAY[0..9] OF STRING(19); https://content.helpme-codesys.com/de/libs/Recipe%20Management/Current/pou-RecipeManCommands/GetRecipeNames.html The same problem does not occur when the string definition is made in the default size. strArr: ARRAY[0..9] OF STRING; FYI Regards, Imdat
Last updated: 2025-02-19

Post by imdatatas on String length issue in GetRecipeNames method CODESYS Forge talk (Post)
Hi, If the string length in the GetRecipeNames method is lower than the default value, there will be a problem with the resulting Recipe file names. For example; When the method in the link is called, let's say the defined string length is 19. In this case, the string content is corrupted as in the image. strArr: ARRAY[0..9] OF STRING(19); https://content.helpme-codesys.com/de/libs/Recipe%20Management/Current/pou-RecipeManCommands/GetRecipeNames.html The same problem does not occur when the string definition is made in the default size. strArr: ARRAY[0..9] OF STRING; FYI Regards, Imdat
Last updated: 2025-02-19

Post by jampid on Struct Literal CODESYS Forge talk (Post)
Bonjour Davidmic, Il n'est pas possible d'associer une méthode à une fonction. Cela est possible sur les Blocs fonctions. En utilisant ta DUT MyStruct, je créé une fonction avec en entrée un tableau de structure :** FUNCTION F_F3 : REAL VAR_IN_OUT // bien définir un type IN_OUT IN_ptrINT: ARRAY[*] OF MyStruct; // la taille sera définie ultérieurement/ END_VAR VAR _di: DINT; // Index de parcours du tableau pour l'écriture dans les cases ENDVAR ============== //Programme F_F3: FOR _di := LOWER_BOUND(IN_ptrINT,1) TO UPPER_BOUND(IN_ptrINT,1) DO IN_ptrINT[_di].som:=IN_ptrINT[_di].a + IN_ptrINT[_di].b; END_FOR J'utilise ensuite cette fonction dans un POU Programme : PROGRAM Test_F_Fx VAR _aiTAB9:ARRAY[0..3] OF MyStruct := [(a := 1, b := 1.2), (a := 2, b := 2.2), (a := 3, b := 3.3), (a := 4, b := 4.4)]; END_VAR ** ==========** F_F3(IN_ptrINT:=_aiTAB9 ); Voilà l'idée pour avancer. Une autre idée, est d'utiliser les pointeurs ou les références. Bon développement!
Last updated: 2025-04-07

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 ewi04 on Recipe Manager - RecipeManCommands, load & write wrong values, Bug? CODESYS Forge talk (Post)
It seems that there is a limitation with the STRUCTs. Does anybody know, what’s okay to save (add to the recipe) and what’s not okay? Or is there another problem with my project? If I have only an array in the recipe definition everything works perfectly (see project).
Last updated: 2023-11-15

Post by schorge on Modbus RTU Slave CODESYS Forge talk (Post)
Ich würde gerne bestimmt Modbus RTU Slave Adressen auslesen, leider bekomme ich keine Werte vom Bus. Verbindung erfolgt über einen Raspberry mit Modbus RS485 Adapter, welcher erfolgreich verbunden ist. Mit einem IOBroker kann ich die Daten erfolgreich auslesen. In der Modbus_COM_Port => Modbus_Serial_Device habe ich Input Register 4000 %QW und Startadressen auf Input Register 3000, als Variable ein Array[0..2999] of Word, kann aber keine Werte auslesen.
Last updated: 2023-12-06

Post by ph0010421 on TCP/IP client CODESYS Forge talk (Post)
Hello TCIS_Send needs to be longer than 4 bytes because idata is 28 bytes long. There may be other ways, but I would make a UNION with string/array of bytes. Write your STRING into the AsString part then copy the AsBytes part into TCIS_Send (Elements [3] to [30]) then 252 would be in [31] (I've assumed the idata is always the same length)
Last updated: 2023-12-19

Post by k2saki on How to define CONDITIONAL PRAGMA that effects all ST-POU in project. CODESYS Forge talk (Post)
I'd like to use same code/project in different devices. (RPi, PLC) I change some lines in some POU before compiling. (array size, file path, etc ) My question is How to define pragma that effects all ST-POU in project. Is it possible ? I've read this. https://help.codesys.com/api-content/2/codesys/3.5.12.0/en/_cds_pragma_conditional/
Last updated: 2024-05-12

Post by talhaali on Active alarm access in ST 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 Can't read Alarm Class from Alarm Storage 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 Can't read Alarm Class from Alarm Storage 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

<< < 1 .. 14 15 16 17 18 .. 22 > >> (Page 16 of 22)

Showing results of 528

Sort by relevance or date