Search talk: dynamic values display

 
<< < 1 .. 19 20 21 22 23 > >> (Page 21 of 23)

Post by fredsta on Unable to load dynamic modules (Download failed: Application=Application) CODESYS Forge talk (Post)
Hey there, I am currently trying to find a good solution for the communication between CODESYS Control on Raspberry Pi and "the rest of the world", i. e. the things apart from CODESYS on my linux. My first approach was to use the c-integration. So I created a lib, defined extern fbs, compiled the code on my Pi using the SDK and put the .so into my lib project. When I try to log into the Pi and load the program, I get the error message which you can see in the attached picture. "Die dynamischen Module der C-Integration konnten nicht auf das Laufzeitsystem geladen werden" is german and means roughly "the modules from the c-integration could not be loaded onto the runtime system." Is this normal? Am I doing something wrong? I will have a look at the unix domain socket thing next, as I am still in the process of finding the best solution for the communication.
Last updated: 2024-02-15

Post by mxj262 on FB having single input but initialized with Array CODESYS Forge talk (Post)
I am adding elements of an ARRAY using pointer to access each element inside a FOR loop and the FOR loop does not stop! What is the right way to use pointers in such case?? I have another loop that is not using pointer and it stops but the loop using pointer keep on adding. METHOD FB_Init: BOOL VAR_INPUT bInitRetains: BOOL; // TRUE: the retain variables are initialized (reset warm / reset cold) bInCopyCode: BOOL; // TRUE: the instance will be copied to the copy code afterward (online change) END_VAR VAR_IN_OUT // basically REFERENCE TO window_buffer: ARRAY [*] OF INT; // array of any size END_VAR THIS^.windowPtr := ADR(window_buffer[0]); THIS^.windowSize := UPPER_BOUND(window_buffer, 1) - LOWER_BOUND(window_buffer, 1) + 1; FUNCTION_BLOCK FB500 VAR_INPUT END_VAR VAR_OUTPUT END_VAR VAR windowPtr: POINTER TO INT; windowSize: DINT; currentIndex: UINT; element1:INT; element2:INT; i:INT; j:INT; sum:DINT:=0; END_VAR element1:=windowPtr[0]; // read the first element of the Array dynamic memorry element2:=windowPtr[1]; FOR i:=0 TO (TO_INT(windowSize-1)) BY 1 DO // this loop does not stop Sum:=sum + windowPtr[i]; END_FOR FOR j:=0 TO 5 BY 1 DO // this loop stops j:=j+1; END_FOR https://ibb.co/k3DhkZT
Last updated: 2024-05-06

Post by andrea199403 on Assigning Modbus addresses to a structure in a dynamic way CODESYS Forge talk (Post)
Hello everyone, I am new to this forum and I am also new to Codesys programming. My problem is this: I have a STRUCT of 64 bool and 30 real, this STRUCT is assigned in the programme 9 times. Now I need to communicate with an HMI via Modbus and I have defined the slave device and created the holding registers for communication. I would like to declare the first call of the STRUCT on the Modbus registers %QX2000.0 to %QX2007.7 for the booleans and on the registers %QW1004 to %QW1034 for the real registers. That said, I would like to change an index and set an offset of 100 bytes for the calls of the other 8 assignments, so that the result is: %QX2100.0 to %QX2107.7 for the booleans and on the %QW1104 to %QW1134 registers for the Real registers, etc. Is there a way to declare this? Thank you very much.
Last updated: 2025-10-21

Post by imdatatas on MC_CamIn did not work properly with SMC_FreeEncoder on SoftMotion 4.17.0.0 CODESYS Forge talk (Post)
Hello, I am facing a problem with the new Softmotion 4.17.0.0 version. Has anyone encountered a similar problem, what is the solution? I would be happy if you could share it. Problem description: -- "SMC_FreeEncoder" encoder axis is the master, -- The motor of the servo driver on the EtherCAT bus is the slave axis. -- When the MC_CamIn block executed, the InSync output is activated. However, although the master encoder axis position value changes, there is no movement in the slave servo axis! Test steps: 1-) EtherCAT servo axis installed, configured and motion test was performed with MC_Jog. No problem. 2-) Softmotion general axis pool > SMC_FreeEncoder was added and pulse amount configuration was performed. No problem. 3-) Incremental encoder actual count value was transferred to the "SMC_FreeEncoder.diEncoderPosition" variable as DINT under the ethercat task in every cycle and the encoder axis position value was observed. No problem. 4-) A simple CAM table with a 1:1 ratio was created under the project tree. (For example: Simply, when the encoder rotates 1 turn, the motor will rotate 1 turn.) 5-) The SMC_FreeEncoder axis enabled with MC_Power and brought to the StandStill state. 6-) The MC_CamTableSelect block was run with default input values ​​(all absolute) and only the Cam table name was specified. The Done output was seen successfully. No problem. 7-) The MC_CamIn block was activated with default input values ​​(absolute) and only the master encoder axis name, slave servo axis name, CamTableID input pins was specified and then "Execute" input set to TRUE. 8-) The InSync output information of the MC_CamIn block observed as TRUE. However, although the encoder axis value changed, the position value of the slave axis did not change at all, it did not move. It always remained at 0.0mm. 9-) When I repeated the same steps above, only changing the master axis to SM_Drive_Virtual instead of FreeEncoder and gave movement to the virtual axis, this time the slave axis moved successfully. However, when the same steps and operations are performed with the same IDE just downgrade SoftMotion version from 4.17.0.0 to 4.10.0.0, everything works normally and without problems as expected in MC_CamIn block with FreeEncoder master. (By the way, The used IDE version is Codesys V3.5 SP20patch3.) Best Regards Imdat
Last updated: 2024-11-11

Post by toby on Ethercat Servo Setup CODESYS Forge talk (Post)
Hi Everyone, I have a simple project with a single servo, but its my first time using Codesys and motion, so I'm a little confused and lost, I've tried to read the tutorial online, but I'm not having much luck sorry. Can I please ask for some pointers. I have a ComfilePi HMI (Raspberry Pi) communicating to a Omron R88D-1SN08H-ECT amplifier. Please see the attached project file (which is better for sharing, the project file, or a archive?). This file was simply for testing the motion of the servo before anything else is tested with it. The project simply rotates the servo 1 rotation when called for, but the speed can vary based on user input. Nothing much fancy. As yet, I haven't had any servo movement, no errors on the amplifier display. How do I link the motion FBs to the physical drive? Thank you very much for any help you can offer. I'm sorry if I'm doing something very stupid or basic and getting it wrong. Have a good day. Toby
Last updated: 2023-09-20

Post by berto on Opening PDF in Web Browser in Target Visu HMI CODESYS Forge talk (Post)
Hi everybody, I've been facing problems with the PDF visualization in Web Browser. I am trying to open a pdf file called 'sample.pdf' which I manually saved inside PlcLogic/visu folder. I am setting the web browser URL as: 'http://127.0.0.1:8080/sample.pdf' but I get 'refused connection'. I got a similar error trying to open https sites and I discovered that I can only open http websites. Opening 'http://de.wikipedia.org' everything works fine. I also tried to check using code whether the sample.pdf is present in the directory. Unfortunately, when I try to read directories of 'PlcLogic' I get file FILE_OPERATION_DENIED (I am using File.DirList). I would like to be able to open PDF files in web browser. Possibly to move new PDF files in the folder as my customer wants to display different pdf manuals on the hmi. Here you find some screenshots and my .project. I am using Codesys 3.5.19.70. Best regards, Berto
Last updated: 2024-07-11

Post by etienneneu on Trend x-axis description incorrect display CODESYS Forge talk (Post)
Hello everyone, maybe someone can help me with the following problem. I wanted to insert a trend element in my visualization. The problem is that I have set fixed fonts with a scaling of 1.5 for the individual languages via the visualization manager. This setting means that I have this scaling in every element, which has been quite comfortable so far because I didn't have to set the individual properties in the text fields. But in the trend element, even if I select other font sizes or fonts in the element itself, this font is also overwritten and I get a label on the x-axis that is no longer displayed correctly. Is there a way to prevent the overwriting of the font properties in this element or similar behavior? I mean, I could change the font size of each element manually, but the Visu app is a bit larger and it would be easier to have another option. Best regards Etienne
Last updated: 2024-11-28

Post by abuckie on i2c master not running CODESYS Forge talk (Post)
Hello, I am trying to create an Ethernet/IP device that can read analog signals, do some basic logic on it and then hand communicate the results to an Ethernet/IP master. I am using the Raspberry Pi to experiment with this as I would ultimately like to drive a display as well. I have loaded up the runtime on the Pi and got the digital I/O working. I have an ADS1115 ADC to I2C board and I can't get it to work, I get a message telling me the i2c master is not running and I am not sure where to start with this. Is there a manual for running CODESYS on the Pi or something like that I am missing? I found this post and opening the project in CODESYS V3.5 SP21 it seems like tons of this wouldn't convert properly https://forge.codesys.com/forge/talk/Runtime/thread/f1400b71b6/ I have added in the library and device manually and copied the structured text program but lost at what to do if the core functionality of the master is not running. I appreciate any help, thanks.
Last updated: 2025-05-19

Post by beavel on Feature Request: Text List Formatting CODESYS Forge talk (Post)
Hi everyone, I'm working on a multilingual help system within a CODESYS visualization project and have run into a limitation with the current text list (.tlx) functionality. Right now, text list entries only support plain text, which makes it very difficult to format longer help texts in a readable way. For example, I’d like to: Use bold headers and larger font sizes for section titles Display variable names or keywords in italics Avoid having to split content into dozens of separate entries just to apply different styles This becomes especially unmanageable when supporting multiple languages — duplicating layout logic across languages is not scalable. Would it be possible to implement a Markdown text functionality for text list entries ? For example: #Header ##Sub-header 1.ordered 2.list 3.fun 4.times Alternatively, is there any existing workaround or planned feature that allows for styled text blocks without fragmenting the content? Thank you in advance and have a nice day :)
Last updated: 2025-09-23

Post by chalk on No source code available CODESYS Forge talk (Post)
Hello, This is my first time using Codesys, I am trying to add EtherNetIP communication to a Raspberry PI. I’ve added the EtherNetIP Adapter configured the network setting and added some modules to the pi but when I download the project it generates the following error: “There is no source code available for the object because it is in the compiled library ‘cip object, 4.5.1.0 (3s – smart software solution gmbh)’. Do you want to browse for the original library in order to display the source code? There are 2 errors in the log which are: SOURCEPOSITION App=[Application] area=3, offset=332760 EXCEPTION [Application] occurred: App=[Application], Task=[ENIPAdapterServiceTask] I can’t for the life of me work out how to get around this. I can’t find the source code anywhere or any information regarding this error. I’m using Codesys V3.5 SP19 Patch 3, the version of the Ethernet adapter is 4.5.1.0 and the version of the modules is 4.1.0.0. Any help on this will be greatly appreciated. Thanks
Last updated: 2024-02-02

Post by squiggleypuff on Can't Add New Version of Modbus TCP Master CODESYS Forge talk (Post)
I'm having a tough time trying to get Modbus working on a Festo CPX-E PLC; it throws these pre-compiler errors as soon as I add in my Modbus TCP Master 3.5.12.30 to my project: I'm confused about the C0046 error, as I have IODrvModbusTCP 4.3.0.0 Library installed. So I thought maybe I needed to use the newest Modbus TCP Master 4.3.0.0, which is in my device repository: However, whenever I go to add this underneath the Ethernet adapter (which is version 4.2.0.0), the only TCP Master version available is the old 3.5.12.30 one, even if I have Display all versions checked.: I even went so far as to delete the old version, but then there were no options to add a Modbus TCP Master under my Ethernet adapter. What needs to be done to use the newest Modbus TCP Master? Or are these pre-compiler errors unrelated and I'm missing something? Any help greatly appreciated.
Last updated: 2024-04-04

Post by wollvieh on Display minutes as hours & minutes CODESYS Forge talk (Post)
Here a code for an Operation Counter with : days,hours,minutes,seconds as an example, maybe it points you the right direction ? FUNCTION_BLOCK OperationDayHour VAR_INPUT IN : BOOL; // Betrieb Takt : BOOL; // 1Hz Systemtakt END_VAR VAR_OUTPUT BetrTag : UDINT; // Ausgabe Betriebstage Betrstd : UDINT; // Ausgabe Betriebsstunden Betrmin : UDINT; // Ausgabe Betriebsminuten Betrsec : UDINT; // Ausgabe Betriebsekunden BetrString : STRING; // Ausgabe als String END_VAR VAR ///Erkennung Taktflanke Flanke: R_TRIG; END_VAR VAR_IN_OUT BetrsecAbsolut: UDINT; //Ein/Ausgangsvariable Betriebssekunden RETAIN !!! END_VAR Flanke(CLK:= Takt, Q=> ); (*Erkennung Taktflanke*) IF (IN AND Flanke.Q) THEN (*Sekunden hochzählen*) BetrsecAbsolut := BetrsecAbsolut + 1; END_IF Betrsec := BetrsecAbsolut MOD 60; Betrmin := ( BetrsecAbsolut / 60) MOD 60; Betrstd := ( BetrsecAbsolut / 60 / 60 ) MOD 24; BetrTag := ( BetrsecAbsolut / 60 / 60 /24 ); BetrString := RIGHT ( UDINT_TO_STRING( BetrTag + 100000),5); BetrString := CONCAT (BetrString, 'd_'); BetrString := CONCAT (BetrString,RIGHT ( UDINT_TO_STRING( Betrstd + 100000),5)); BetrString := CONCAT (BetrString, 'h_'); BetrString := CONCAT (BetrString, RIGHT ( UDINT_TO_STRING( Betrmin + 100),2)); BetrString := CONCAT (BetrString, 'm_'); BetrString := CONCAT (BetrString, RIGHT ( UDINT_TO_STRING( Betrsec + 100),2)); BetrString := CONCAT (BetrString, 's');
Last updated: 2024-05-27

Post by caprez95 on Deleting the trend recording history CODESYS Forge talk (Post)
Hallo Ich möchte eine laufende Trendaufzeichnung stoppen, den Inhalt löschen und Trend-Diagramm auf 0 zurücksetzen. Laut Codesys soll das mit dem folgenden Code möglich sein: You can insert an input element in the visualization which the operator can use to delete the previous value recording in the trend visualization at runtime. The curve displayed until then is removed and the display starts over. In the application (example: in the program PLC_PRG), implement the following code: itfTrendRecording : ITrendRecording; itfTrendStorageWriter : ITrendStorageWriter; itfTrendStorageWriter3 : ITrendStorageWriter3; sTrendRecordingName : STRING := 'TrendRecording'; itfTrendRecording := GlobalInstances.g_TrendRecordingManager.FindTrendRecording(ADR(sTrendRecordingName)); xClearHistoryTrend: BOOL; IF xClearHistoryTrend THEN itfTrendRecording := GlobalInstances.g_TrendRecordingManager.FindTrendRecording(ADR(sTrendRecordingName)); IF itfTrendRecording <> 0 THEN itfTrendStorageWriter := itfTrendRecording.GetTrendStorageWriter(); IF __QUERYINTERFACE(itfTrendStorageWriter, itfTrendStorageWriter3) THEN itfTrendStorageWriter3.ClearHistory(); END_IF END_IF In the visualization of the trend recording, add a button for deleting the previous curve. Configure its Toggle property with the variable PLC_PRG.xClearHistoryTrend. ⇒ When xClearHistoryTrend is set to TRUE, the previously recorded curve is deleted. The recording immediately starts again. Dies löscht auch die Daten vom Trend, aber das Diagramm wird nicht auf 0 zurückgesetzt, sondern läuft einfach da weiter wo man gestoppt hat. Braucht es für den Diagramm-Reset noch einen zusätzlichen Befehl? Gruss
Last updated: 2024-06-11

Post by rk-gaw on Unhandled exception and refactoring error CODESYS Forge talk (Post)
Hello everyone. I hope this is the right place to ask for help, this error is causing me a great amount of time loss and I really would like to end this nightmare. I don't know why but at times if I try to Browse -> Display Cross Reference on a variable Codesys just crashes. I'll attach the file with the complete crash report hoping someone can figure why it happend. I think that the unhandled exception comes from the PersisranceManager Module and is connected with the other big problem I'm facing: I cannot refactor in my project, if I'll try to refactor a POU name the whole POU will become "frozen", it's like its desynchronizing from the project and the project cannot find the pointer to the POU once I refactor it. And when I open the project a warning pop-up will show up with the frozen POUs name, but I cannot figure out what the warning is telling me. I'll attach every warning and error pop up the project is showing me, and thanks in advance to anyone who can figure something out.
Last updated: 2025-12-10

Post by r-niedermayer on OPC UA subscriber not operational CODESYS Forge talk (Post)
Hi. As far as projects in "old version"s are concerned, these can be upgraded to newer versions at any time. To do this, the device must be updated accordingly and the copilers and library versions must be adapted. You can find instructions on how to proceed in the online help/FAQ: https://content.helpme-codesys.com/en/CODESYS%20Development%20System/_cds_changing_compiler_version.html https://content.helpme-codesys.com/en/CODESYS%20Development%20System/_cds_cmd_update_device.html See also 4.3.22.4 "How to open an Example Project" within the following pdf for more details on the single steps: https://forge.codesys.com/lib/counit/tickets/_discuss/thread/3e991befbc/ca97/attachment/Public%20FAQ-v13-20240610_075228.pdf Regaring your OPCUA connection state always showing just "DISABLED", without knowing both sides of the assembly in detail, one can only approach the problem theoretically. We can give a chekclist on how to proceed: Fist, please recheck the communication settings in the OPC UA connection function block to ensure that the server URL, endpoint URL, and other settings are correct and match the configuration of the OPC UA server. Verify that the OPC UA server is running and accessible. -You can try to connect to the OPC UA server using a separate client, such as UAExpert, to ensure that the issue is not related to the OPC UA server itself. Test the security settings in the OPC UA connection function block to ensure that the correct security policy and certificate are selected. If you are using a dynamic connection to the OPC UA server, probe that the connection settings are correctly configured and that the OPC UA client is able to establish a connection to the OPC UA server. Also, please loock into the log files for any errors related to the OPC UA connection function block, these should be listet there. The log files may also provide additional information about the issue and help you to further troubleshoot the problem. FYI - Please see https://content.helpme-codesys.com/en/CODESYS%20Communication/_cds_obj_data_source_communication_opc_ua_server.html: Her you can finde the Communication settings via OPC UA Server -> layout Browse Live Server: The client connects to the server and detects the existing variables and types. From Information Model The client reads the data structure (layout) of the OPC UA Server from the information model set here and as a result receives the information about available variables and types. A connection to the server is not required. The list contains the information models installed in the OPC UA Information Model Repository. "Read Connection" Settings from IEC Variable (option set): - The connection settings used by the device are not read here from the dialog, but at runtime from the IEC variable specified here. - For this possibility, please see the Using a Dynamic Connection to an OPC UA Server (https://content.helpme-codesys.com/en/CODESYS%20Communication/_comm_use_dynamic_opc_ua_server_comm_settings.html) The settings for the communication of a Client-data source to an OPC UA Server can also be dynamically configured from the IEC code and can also be changed at runtime. For such a purpose, a structure is available in the DatasourceOpcUAServer library (For a description of the OPC UA Server, there is one included in the standard installation of CODESYS, https://content.helpme-codesys.com/en/CODESYS%20Communication/_cds_encrypt_communication_data_sources_opc_ua_client.html)
Last updated: 2024-11-04

Post by serwis on Dynamic target position tracking CODESYS Forge talk (Post)
Hello, I am trying to control a servo drive and dynamically set its position. I control the drive via EtherCAT with a cycle time of 500us. I use the MC_MoveAbsolute block for this. The problem is that when using a PID controller, I generate the positions I want the drive to move to on an ongoing basis, and I would like the position to be set immediately. The MC_MoveAbsolute block must receive a rising edge to execute, and I would like the movement to be performed without waiting for this edge. I have created a function that generates a rising edge every 1 ms, but I am unable to change this time to 500 µs because the TON function does not support times shorter than 1 ms. Below is the code to call the rising edge: IF Exe = TRUE THEN delay1(IN:=TRUE, PT:=T#1MS); IF delay1.Q = TRUE THEN Exe := FALSE; delay1(IN:=FALSE); END_IF END_IF IF Exe = FALSE THEN delay(IN:=TRUE, PT:=T#1MS); IF delay.Q = TRUE THEN Exe := TRUE; delay(IN:=FALSE); END_IF END_IF END_IF Here is the code for calling the MC_MoveAbsolute function: MoveDegree( Axis:= Tilt, Execute:= Exe, Position:= position_target - (base_angle_real * feedforward_turn), Velocity:= vel, Acceleration:= acc, Deceleration:= dec, Jerk:= jerk, Direction:= MC_DIRECTION.shortest, BufferMode:= MC_BUFFER_MODE.Aborting, Done=> , Busy=> , Active=> , CommandAborted=> , Error=> , ErrorID=> ); I realize that there are probably better methods for performing this type of task. How can I implement motion with a dynamically changing setpoint? THANKS
Last updated: 2025-09-05

Post by egret on Issue with J1939, PGN 65267 (Vehicle Position) CODESYS Forge talk (Post)
I have a J1939 network (ISOBUS) connected to my PLC. I can receive various PGNs such as 65256 (Vehicle Direction/Speed) and 65254 (Time/Date). However, I cannot receive 65267 (Vehicle Position). PGN 65267 (VP) contains SPN 584 (Latitude) and SPN 585 (Longitude). On the network both SPNs return a value of -210 (meaning the CAN message payload is zero in both cases). The conversion settings are the default values and appear to be correct (see attached screenshot). Using a CAN analyser I can see that PGN 65267 (Vehicle Position) is being transmitted over the network with valid (non-zero) data that matches the latitude and longitude coordinates I would expect. I've created a program to read the raw J1939 data and this also returns valid data. It seems that the Codesys J1939 database has a problem with reading PGN 65267 messages. Can anybody else confirm this? I'm using Codesys Version 3.5 SP16 Patch 5.
Last updated: 2023-09-13

Post by ryusoup on JSONByteArrayWriter problem? CODESYS Forge talk (Post)
Hello, I am trying to implement a FB to make JSON formatted WSTRING type message using JSON Utilities 1.9.0.0 included in the IIoT library. In my case, I want to set some objects or arrays and set values to them later. But when I wrote as the sample below, // init builder builder(pJsonData:=pJsonData, diRootObj=>diRootObj); // set the 1st key to root diKey1 := builder.SetKeyWithArray(wsKey:="key1", diParentIndex:=diRootObj, eError=>eError); // set a value to the 1st key wsValue:="value01"; builder.SetValue(Value:=wsValue, diParentIndex:=diKey1, eError=>eError); // set the 2nd key to root diKey2 := builder.SetKeyWithArray(wsKey:="key2", diParentIndex:=diRootObj, eError=>eError); // set a value to the 2nd key wsValue:="value02"; builder.SetValue(Value:=wsValue, diParentIndex:=diKey2, eError=>eError); // set a value to the 1st key again wsValue:="value03"; builder.SetValue(Value:=wsValue, diParentIndex:=diKey1, eError=>eError); // set a value to the 2nd key again wsValue:="value04"; builder.SetValue(Value:=wsValue, diParentIndex:=diKey2, eError=>eError); // write build result writer(xExecute:=TRUE, pwData:=ADR(wsResult), udiSize:=SIZEOF(wsResult), xAsyncMode:=FALSE, jsonData:=pJsonData^); the result was: { "key1": ["value01"], "key2": ["value02", "value03", "value04"] } while my expection was: { "key1": ["value01", "value03"], "key2": ["value02", "value04"] } Inspecting pJsonData^, JSONData itself seems to be ok, so I believe the issue is something caused by the writer FB. Does anyone know how to fix it? Thanks,
Last updated: 2023-10-04

Post by vassilis91 on EtherCat-Rexroth Drive lost connection or no? CODESYS Forge talk (Post)
Hi all, i am encounter a mystery problem with a build with rexroth drives at my work. At my company we are make a machine with two Rexroth Indradrives . The two drives are goes by ethercat protocol . To be more specific i am going from my plc to the Beckoff El1100 coupler and after to the first drive and from the first drive to the second. The second drive works with no problem but the first(motor) sometimes without any pattern start to make a mysterious noise like stop and suddenly goes on again. If i couldn't hear the noise from the motor i couldn't Imagine that this happen. After a lot of research i see that sometime i have some strange zeros from the drive to the plc? Really i am in a deadlock and I don't know how to continue. From the other side the values on the other drive(second)are stable . The problem maybe: https://youtube.com/shorts/g7PCFLUaDUI?si=eiq0F2IzhQZax2e2
Last updated: 2023-10-25

Post by ofey on Testing of Codesys program CODESYS Forge talk (Post)
Hi! I thought to hear what you guys think is the best way to test the program in my scenario. I have some PLC programs that have been made and deployed on different PLC's. The program has added the specific devices and IO that is applicable. I have made a test environment for everything outside of the PLC, ie. the same SCADA system that is talking to the PLC, and a program running locally is simulating the plant (level regulation of different tanks). Pr. now I have had to manually change the variables that are reading/writing values from the IO so they read/write via OPC instead. I also have to change the device tree from the specific PLC rack, to the soft PLC. So I kind of end up with two different programs that I have to maintain. I was just wondering if you believe there is an easier way to do this. So I can have the exactly same program and kind of switch between the soft mode, and the "real" mode.
Last updated: 2023-12-07

Post by trusty-squire on CNC - How to manipulate SMC_GeoInfo objects CODESYS Forge talk (Post)
I have an application using CNC GCode interpolation, but I need to modify the GCode provided to the PLC based on certain parameters. I am currently attempting to modify the SMC_GeoInfo objects in the SMC_OutQueue using the code below. Note that all the other code is pretty standard and works fine, but when I add the below it errors. PROGRAM TEST VAR fbReadCncFile : SMC_ReadNCFile2; fbCncInterpreter : SMC_NCInterpreter; arrCncInterpreter : ARRAY[1..99] OF SMC_GeoInfo; pGeoInfo: POINTER TO SMC_GeoInfo; giGeoInfo: SMC_GeoInfo; // ... END_VAR // ... Some code here in order to read CNC file using SMC_ReadNCFile2 and provide to SMC_NCInterpreter pGeoInfo := SMC_GetObj(poq:=ADR(fbCncInterpreter.poqDataOut), n:=1); IF pGeoInfo <> 0 THEN giGeoInfo := pGeoInfo^; // Do some manipulation here, then update the queue at the same position MC_SetObj(poq:=ADR(fbCncInterpreter.poqDataOut) , n:=0 , pgi:=ADR(giGeoInfo) ); END_IF It throws an error when I get to the line giGeoInfo := pGeoInfo^; Error: EXCEPTION [AccessViolation] occured: App=[Sim.Device.Application], Task=[PathTask] How do I use SMC_GetObj and access the data? It creates a pointer with the value as shown in the photo, but all the dereferenced values say dereference of invalid pointer.
Last updated: 2024-07-26

Post by bruceae on Ethernet/IP Scan CODESYS Forge talk (Post)
Hello, I have a robot configured as a Generic Ethernet Module under Ethernet/IP Scanner. I can not see the change of state of the outputs coming from the robot on the codesys side in real-time. (The robot has it's own internal program that would changes the values of remote outputs 0-3 off and on). Also when I send data down to the inputs of the robot it doesn't transfer over as expected. As an example I'll send to the robot's input bit 0 a value of 1. It doesn't see that value change. However, when I write that input bit 0 back to a value of 0, the robot changes state and shows a value of 1. And if I change the state of a different bit, the other bits update properly, except for the bit that I changed. Any advice would be greatly appreciated, and if anything else is needed let me know.
Last updated: 2024-09-10

Post by hyys12 on Help understanding analog in-/outputs CODESYS Forge talk (Post)
Hello. I am currently working on a WAGO PLC, where I am trying to wrap my head around how the analog inputs and outputs work in codesys. I have looked far and wide on the internet, for a general introduction to the whole concept, but I have not had any luck with finding anything that helped me understand it better. The whole goal is for me to be able to read an analog input from a temperature sensor, as well as using an analog output, to control a frequency inverter. I know these have nothing to do with each other, but that is all I have on hand right now. I am trying to program this using Ladder Diagram. The only thing is, that every video/guide I have seen/read using LD, just adds a whole lot of function blocks, to do all kinds of stuff they don't explain. My general question is, how would one go ahead and read the analog input, as well as transmit an analog output? Is there some kind of specific function block I would have to use for this, or some great video I can watch, to understand the inner workings. Is it somehow possible to see the values the PLC recieved/sends? Regards.
Last updated: 2024-12-11

Post by mubeta on Strange problem with the ‘MC_SetPosition’ function CODESYS Forge talk (Post)
CoDeSys 3.5.19.7 Target Berghof MX6 In a simple SoftMotion programme with two stepperless modular axes from CMZ, one is simply controlled in speed, but a spot must perform a positioning. I use the function MC_SetPosition() both to reference the axis at power-up and also to correct the actual position to a fixed machine reference detected with proximity. The function has only one instance and I actually use a booelan variable to control the ‘Execute’ input. Well, I cannot correctly change the axis position on the fly if it is running at high speed. The servomotor works in a speed range between 0°/s and 720°/s, (gearbox output with a 1:6 ratio). As long as the servomotor is operating at speeds below about 400 °/s, the function is able to correct the position correctly even when forcing values far apart, but at high speeds, from 400 °/s upwards, the correction no longer takes place. For example, trying to correct the position of 280° into 300° with absolute mode, the axis that is moving at speed actually shifts the position by a few degrees, not the expected 20. I don't understand why with the servo drive running slowly the position shift occurs correctly, while increasing in speed it no longer works.
Last updated: 2025-01-09

Post by pistola on C0357: "GetNextClient" is obsolete, use VisuUtils instead CODESYS Forge talk (Post)
I'm having some troubles with this same issue and I'm wondering if someone can help me out. On a settings visual I allow the operator to enter some values however if they activate the page change button it will change the change with the Numpad dialog open. Since I'm using Visuelems.CURRENTVISU to change the pages I came across this code noted below for determining if the Numpad dialog was active. This code worked great however now in 3.5.19 it's now obsolete. I've tried following the directions in the attached program above however I can't see to get it to work in my program. Can anyone provide some help to determine if a dialog is open? FUNCTION Check_Dialog_Open : Bool VAR_INPUT sDialogName : STRING; // Input variable for the name of the dialog END_VAR VAR pstClientData : POINTER TO VisuElems.VisuStructClientData; // Pointer to the client data structure itfDialogManager : VisuElems.IDialogManager; // Interface for the dialog manager itfMyDialog : VisuElems.IVisualisationDialog; // Interface for the specific visualisation dialog END_VAR // Begin the iteration over the client manager VisuElems.g_ClientManager.BeginIteration(); // Loop through each client until no more clients are found WHILE (pstClientData := VisuElems.VisuElemBase.g_ClientManager.GetNextClient()) <> 0 DO // Get the dialog manager interface itfDialogManager := VisuElems.g_VisuManager.GetDialogManager(); // Get the specific dialog interface using the dialog name itfMyDialog := itfDialogManager.GetDialog(sDialogName); // Check if the dialog is open for the current client Check_Dialog_Open := VisuDialogs.VisuDlgUtil_IsDialogOpen(itfMyDialog, pstClientData, itfDialogManager); // If the dialog is open, exit the loop IF Check_Dialog_Open THEN EXIT; END_IF END_WHILE
Last updated: 2025-03-27

<< < 1 .. 19 20 21 22 23 > >> (Page 21 of 23)

Showing results of 572

Sort by relevance or date