Search talk: case OF

 
<< < 1 .. 36 37 38 39 40 .. 103 > >> (Page 38 of 103)

Post by ph0010421 on Help with __SYSTEM.VAR_INFO CODESYS Forge talk (Post)
hi all I have a FB with IN/OUT variable. Inside the FB, I want to get the address of the IN/OUT variable. If I use __SYSTEM.VAR_INFO, I get the address of the FB copy rather than 'external' variable. VAR_IN_OUT MyVar: bool; END_VAR VAR Info: __SYSTEM.VAR_INFO; END_VAR Info := __VARINFO(MyVar); This give me the address of MyVar but I actually want the address of the variable passed to MyVar Any clues please?? thanks, ph
Last updated: 2025-01-24

Post by id0mrzl on Track position of dialog CODESYS Forge talk (Post)
Hi, do you already find out the way? Syaiful
Last updated: 2025-02-25

Post by imdatatas on Problem of assigning physical addresses to variables of type ARRAY OF ARRAY as MW and QW CODESYS Forge talk (Post)
Hello, I am encountering an interesting problem as below in SP20patch5 variable definition area. I think this is a bug. As can be seen in the attached screenshot, it assigns the same %MW or %QW address to all elements of the array. I hope Codesys team can solve this problem in the next version. Best regards, Imdat
Last updated: 2025-03-17

Post by nz-dave on MC_HOMING CODESYS Forge talk (Post)
also get this error in place of the other from time to time.
Last updated: 2025-04-04

Post by mondinmr on Something of strange in the trace CODESYS Forge talk (Post)
Double message sorry
Last updated: 2025-05-17

Post by andrecavalcante on Warning code C0373 CODESYS Forge talk (Post)
Same thing. Anybody has a clue of this warning?!
Last updated: 2025-05-23

Automation Server 🇬🇧 CODESYS Forge talk (Discussion)
The Industry 4.0 administration platform for users and operators of CODESYS compatible controllers
Last updated: 6 days ago

Post by mondinmr on Direct Pointers in IOMapping for EtherCAT with IoDrvEthercatLib.ETCSlave_Dia CODESYS Forge talk (Post)
I have found a very interesting solution using: IoConfigTaskMap IoConfigConnectorMap IoConfigChannelMap The first is the list of IO tasks. The second is the connector for each IO module in the IOMap. The third is the individual input or output on the IOMap. One of the properties of the connector is another pointer to a connector, which corresponds with the connector of the EtherCAT slave. Through this information, it is possible to understand to which EtherCAT slave an IO connectormap corresponds. I am attaching an FB that allows for the construction of an IO map and finding the pointer to the actual IOs in the IOMap based on the bitoffset. FUNCTION_BLOCK IOExplorer VAR_INPUT END_VAR VAR_OUTPUT END_VAR VAR inputChannels: COL.LinkedList; outputChannels: COL.LinkedList; ulintFactory: COL.UlintElementFactory; END_VAR METHOD inputAtBitOffsetOfConnector : POINTER TO BYTE VAR_INPUT conn: POINTER TO IoConfigConnectorMap; bitOffset: UDINT; END_VAR VAR it: COL.LinkedListIterator; itf: COL.IElement; elem: COL.iUlintElement; channelInfo: POINTER TO ADVChannelInfo; bitOffsetR: UDINT; END_VAR inputChannels.ElementIterator(it); WHILE it.HasNext() DO it.Next(itfElement => itf); __QUERYINTERFACE(itf, elem); {warning disable C0033} channelInfo := TO___UXINT(elem.UlintValue); {warning restire C0033} IF channelInfo^.connectorField = conn THEN IF bitOffsetR = bitOffset THEN inputAtBitOffsetOfConnector := channelInfo^.addr; RETURN; END_IF bitOffsetR := bitOffsetR + channelInfo^.size; ELSE bitOffsetR := 0; END_IF END_WHILE inputAtBitOffsetOfConnector := 0; END_METHOD METHOD outputAtBitOffsetOfConnector : POINTER TO BYTE VAR_INPUT conn: POINTER TO IoConfigConnectorMap; bitOffset: UDINT; END_VAR VAR it: COL.LinkedListIterator; itf: COL.IElement; elem: COL.iUlintElement; channelInfo: POINTER TO ADVChannelInfo; bitOffsetR: UDINT; END_VAR outputChannels.ElementIterator(it); WHILE it.HasNext() DO it.Next(itfElement => itf); __QUERYINTERFACE(itf, elem); {warning disable C0033} channelInfo := TO___UXINT(elem.UlintValue); {warning restire C0033} IF channelInfo^.connectorField = conn THEN IF bitOffsetR = bitOffset THEN outputAtBitOffsetOfConnector := channelInfo^.addr; RETURN; END_IF bitOffsetR := bitOffsetR + channelInfo^.size; ELSE bitOffsetR := 0; END_IF END_WHILE outputAtBitOffsetOfConnector := 0; END_METHOD METHOD scanIO VAR_INPUT END_VAR VAR numTasks: DINT := IoConfig_Globals.nIoConfigTaskMapCount; tType: WORD; ioTask: POINTER TO IoConfigTaskMap; numCon: WORD; connector: POINTER TO IoConfigConnectorMap; numCh: DWORD; channelInfo: POINTER TO ADVChannelInfo; iTsk: DINT; iCon: WORD; iCh: DWORD; i: DINT; _tmpConnList: COL.IList; elem: COL.IUlintElement; itf: COL.IElement; tmpCh: POINTER TO ADVChannelInfo; lastE: DINT; e: COL.COLLECTION_ERROR; e1: Error; END_VAR VAR_INST lF: COL.ListFactory; END_VAR IF outputChannels.CountElements() > 0 OR inputChannels.CountElements() > 0 THEN RETURN; END_IF _tmpConnList := lF.CreateDynamicList(16, 16); //Iterate through all IO tasks FOR iTsk := 0 TO numTasks - 1 DO ioTask := ADR(IoConfig_Globals.pIoConfigTaskMap[iTsk]); //Store the type of the task (Input or Output) tType := ioTask^.wType; numCon := ioTask^.wNumOfConnectorMap; //Iterate through all connectors of the task FOR iCon := 0 TO numCon - 1 DO connector := ADR(ioTask^.pConnectorMapList[iCon]); numCh := connector^.dwNumOfChannels; //Iterate through all channels of the connector FOR iCh := 0 TO numCh - 1 DO //Create a new channel info object and fill it with the address, connector and size of the channel //Connectors is address of field connector in this case like EtherCAT slave //Address is the address of the IOMap //Size is the size of channel data in bits in IOMap channelInfo := __NEW(ADVChannelInfo); channelInfo^.addr := connector^.pChannelMapList[iCh].pbyIecAddress; channelInfo^.connectorField := connector^.pConnector; channelInfo^.size := connector^.pChannelMapList[iCh].wSize; //We put the channel info a temporary ordered list //Order is based on the address of IOMap lastE := TO_DINT(_tmpConnList.CountElements()) - 1; FOR i := 0 TO lastE DO _tmpConnList.GetElementAt(udiPosition := TO_UDINT(i), itfElement => itf); __QUERYINTERFACE(itf, elem); {warning disable C0033} tmpCh := TO___UXINT(elem.UlintValue); {warning restire C0033} //If the address of the channel is smaller than the address of the channel in the list IF tmpCh^.addr > channelInfo^.addr THEN //Insert the channel in the list at the current position _tmpConnList.InsertElementAt(TO_UDINT(i), ulintFactory.Create(TO_ULINT(channelInfo))); //Clear the channel info pointer channelInfo := 0; //Exit the loop i := lastE + 1; END_IF END_FOR //If the channel info is not 0, it means that the channel was not inserted in the list IF channelInfo <> 0 THEN //Add the channel to the end of the list elem := ulintFactory.Create(TO_ULINT(channelInfo)); _tmpConnList.AddElement(elem); END_IF END_FOR //Iterate temporary list and add the channels to the input or output list lastE := TO_DINT(_tmpConnList.CountElements()) - 1; FOR i := 0 TO lastE DO _tmpConnList.GetElementAt(udiPosition := TO_UDINT(i), itfElement => itf); __QUERYINTERFACE(itf, elem); {warning disable C0033} tmpCh := TO___UXINT(elem.UlintValue); {warning restire C0033} //If type is input, add the channel to the input list IF tType = TaskMapTypes.TMT_INPUTS THEN e := inputChannels.AddElement(ulintFactory.Create(TO_ULINT(tmpCh))); //If type is output, add the channel to the output list ELSIF tType = TaskMapTypes.TMT_OUTPUTS THEN e := outputChannels.AddElement(ulintFactory.Create(TO_ULINT(tmpCh))); ELSE __DELETE(tmpCh); END_IF END_FOR //Clear the temporary list _tmpConnList.RemoveAllElements(); END_FOR END_FOR END_METHOD
Last updated: 2024-02-13

Post by t-probst on Strong Private Key Protection for Encryption Certificates CODESYS Forge talk (Post)
Hello, We are trying to implement an automated method of adding of a certificate and private key to the Windows certificate store for encrypting CODESYS projects. We want to do this so that users do not have to deal with details of certificates at all and to prevent user error. We are keen on enforcing strong private key protection since it ensures that a password is required for the certificate to be used to decrypt a CODESYS project. When we add a certificate to the certificate store and enable strong key protection using the Microsoft Management Console Certificates snap-in, it works as expected. However, through this method the user may mistakenly not enable strong private key protection. For the certificates we create programmatically (using Microsoft’s Cryptography Next Generation API in .Net 7) bag attributes are added to the certificate and key by the API. These bag attributes are as follows: Bag Attributes localKeyID: 01 00 00 00 subject=C = xx, ST = xxx, O = xxx, OU = xxx, CN = xxx issuer=C = xx, ST = xxx, L = xxx, O = xxx, OU = xxx, CN = xxx -----BEGIN CERTIFICATE----- [encoded certificate] -----END CERTIFICATE----- After using this certificate with bag attributes to encrypt a CODESYS project, it can’t be decrypted, showing this error: "The specified project could not be loaded. Possible reasons might be: - The project file is corrupted or invalid - The project has been saved with a newer version of the programming system. If this is the case, you can open the project in the corresponding version. Choose "Save as..." with the appropriate storage version, and retry again. - You may not have the necessary permissions to lad the project" We know that the bag attributes are causing the issue because if we manually edit the certificate file to remove them before using the certificate to encrypt a project, the project can be decrypted as expected. However, we are unable to automatically enforce strong key protection using this method. Here is a link to a StackOverFlow question that we have posted recently for this issue: https://stackoverflow.com/questions/76922355/enforcing-strong-private-key-protection-for-x509certificate2-objects-in-net-mod Any help is greatly appreciated.
Last updated: 2023-08-22

Post by ofey on EtherCAT fieldbus CODESYS Forge talk (Post)
Hi, everyone! I'm trying to set up a PLC controller and a connection to an EtherCAT slave device in Codesys. I want to create a flexible program that I can upload to multiple controllers with different remote IO connected (same program). On one plant i may have 5 AI-cards and 3 DO-cards, and on another I may have 4 AI-cards and 2 DO-cards. For not needing to maintain several different programs wih different devices defined in the program (one for each set up) I thought that using a remote IO would make it easier having a single program. That way I could refer to different memory addresses instead of predefined slots/channels and IO's, that would give me errors if there was a different IO on the plant than what the program expected. When I tried setting up the etherCAT master, I saw that I had to define the etherCAT slave devices with the different IO'cards for me to be able to refer to the memory addresses in a PRG. Exactly what I was trying to avoid. My setup is something like a program that can handle 16 separate pump controls. In a year maybe 6 plans get deployed, and depending on how large the project is, the number of pumps can vary between 4 and 16. And the managers dont want to have IO's for all 16 pumps on every cabinet, and I dont want to maintain 16 separate projects files in case of updates etc. I thought the best way to tackle this was having a single project that read/write data to the different pump IO's by remote IO (fieldbus ethercat) addresses. And the number of pump controls are activated by an external GUI. If pump 1-6 is activated by the GUI, then the PLC-program tries to read/write input/outputs from predefined addresses for the expected IO's. My test setup is a PFC200 WAGO controller and a EtherCAT fieldbus coupler (750-354) with some IO. I hope I didn't explain this too horrible, and if there is a more easy and elegant solution for this challenge I appreciate a feedback on this.
Last updated: 2024-04-08

Post by janber0206 on Gateway doesn't come online, regarding a working internet connection CODESYS Forge talk (Post)
Solved EN: The Problem is that the Codesys Edge-Gateways have a License with a runtime of an half year, as long the Gateways are online they will self renew themselfs. In my Case the RevPi was more than a year offline and so the Edge-Gateway was not working anymore. The solution: I accessed a laptop that was directly connected to the RevPi. I installed the Codesys service tool and renewed the certificate manual. DE: Das Propblem ist das die Codesys Edge-Gatways eine Lizenz haben die nur ein halbes Jahr gültig ist. Solange das Gateway eine Internet verbindung hat aktualisiert sich das Zertifikat von alleine. In meinem Fall war das Gateway aber über ein Jahr offline und hat somit nicht mehr funktioniert. Die Lösung: Ich hab auf einen Laptop von Kunden mit TeamViewer zugegriffen, der Laptop wurde mit Kabel direkt mit RevPi verbunden. Codesys Service Tool installiert und dann das Gatewayzertifikat aktualisiert.
Last updated: 2023-10-26

Post by spiessli on Softmotion axis to CANopen Maxon IDX drive CODESYS Forge talk (Post)
Thanks for the advise, indeed, this was somewhat, what my intention was. I tried around again with EDSes and DCFs, anyway. It appears that the DCFs end up in a subfolder in the attach device dialog. Astonishingly, when attaching the DCF version I get a device in the device tree, where I can add a SoftMotion axis, whereas when I attach the device not in the subfolder, then I cannot. Further astonishingly, when looking in the CANopen parameters in supported profiles, "402" is listed in the case of the DCF variant, whereas in the EDS variant "0" is shown. Comparing EDS and DCF files I cannot guess, where the difference is coming from. I cannot tell either why I have always attached the EDS variant and apparantly never the DCF variant. As I am not in the lab right now, I cannot test if the connection actually is working. Thanks again, spiessli
Last updated: 2024-01-07

Post by goki on WAGO RS485 (753-652) on a 750-362 CODESYS Forge talk (Post)
hi guys Maybe someone can help me in this case. Im working with codesys 3.5 with an PFC200 (750-8212) with a Modbus TCP conection to the 750-362. On the 750-362 i have a 4DO, 8DI and a RS485 interface card. the 4DO and 8DI cards a working fine but im strugling with the rs485 card. Does someone have a example for this?
Last updated: 2024-02-08

Post by rossanoparis on RevPi CONNECT+, CODESYS, EtherCAT master "Filedbus lost synchronicity" CODESYS Forge talk (Post)
Hello @rmaas I assume, you've already verified and tuned everything regarding the EtherCAT network. In my case the problem was due to a wrong core assignement. I suggest to not use the core #0 for your EtherCAT task. The OS realtime patch, which is present on RevPi OS, uses the core #0 for its porpouses and it mustn't be used by any other task which requires realtime and deterministic features. regards Rossano
Last updated: 2024-04-11

Post by stuartjr on POU Private variables CODESYS Forge talk (Post)
Pretty sure I know the answer, but thought I would ask just in case. Is there a way to set variables declared in a POU to private so that they can not be accessed from other POUs. I tried using the library pragma, but that just stops the variables being displayed in the selection tree. My compiler version is 2.3.9.62 if that's relevant, and I'm using an ABB AC500 V2 PLC. Cheers
Last updated: 2024-07-31

Post by shawn-plc on Return value from a tag given a string literal CODESYS Forge talk (Post)
Good afternoon everyone, I am looking for a way to return a value given a string tag path. I put together a pseudo-example to illustrate my use-case and was wondering if anyone in this forum can help. The function fnValueFromTagPath is the function I am looking to either create or use from existing library. I would greatly appreciate it. Please see the attachment for additional detail. -Shawn
Last updated: 2024-08-13

Post by warrumungi on Opening a Dialog on a specific Client from ST CODESYS Forge talk (Post)
Hi Thanks, Manuel, for providing this solution and insight. I too had exactly the same problem as you did. While I did implement a custom filter, I'd also like to point out what jinlee mentioned above...I see no reference to VU.PublicVariables.Clients.Current anywhere?? In my case I only needed to show a dialog on a "master" client, not all the clients, so I filtered by IP address to do this.
Last updated: 2024-11-05

Post by wayne-riesterer on Assignment Efficiency - Repetitive Assignment vs IF statement CODESYS Forge talk (Post)
Hello Can anyone see any problems with constant assignment as in the following statement: Coils[0] := Coils[0] OR (Buttons[0] AND Sensors[0] > 6); Rather than using the more verbose and vertically-larger: IF NOT Coils[0] AND Buttons[0] AND (Sensors[0] > 6) THEN Coils[0] := TRUE; END_IF Also, is the test expression short-circuited in the latter case? In other words, will the runtime move on after it sees Coils[0] = FALSE AND? Thanks
Last updated: 2025-03-07

Post by lookingforhelp on CODESYS v3.5 SP18 CODESYS Forge talk (Post)
Hello @community, i hope i will get a solution for following problem. I am using CODESYS v3.5 SP18. At the visualization i dont see the action for the element which i could set below the InputConfiguration-Section. I found a topic about that, but this could be resolved through activate the Advanced Checkbox. But in my case it did not work. See the screenshots. I hope someone know this problem and have a solution. Thank you in advance.
Last updated: 2025-04-17

Post by lookingforhelp on CODESYS v3.5 SP18 CODESYS Forge talk (Post)
Hello @community, i hope i will get a solution for following problem. I am using CODESYS v3.5 SP18. At the visualization i dont see the action for the element which i could set below the InputConfiguration-Section. I found a topic about that, but this could be resolved through activate the Advanced Checkbox. But in my case it did not work. See the screenshots. I hope someone know this problem and have a solution. Thank you in advance.
Last updated: 2025-04-17

Post by jvfred on Reading a negative number CODESYS Forge talk (Post)
I have a Codesys-based Eurotherm E+PLC400 connected to Codesys HMI SL for visualization. I am also bringing in several Pressure Indicators via the Ethernet. Everything works; however, the Pressure indicators sometimes read a negative value. When they do, the displayed value on the screen reads "65532." While I know what it represents, the customer freaks out and wants it to read "0" or a negative number. The value comes in as an integer, just in case that matters. Does anyone have any ideas?
Last updated: 2025-05-22

Post by mubeta on Strange problem with the ‘MC_SetPosition’ function CODESYS Forge talk (Post)
How are the servo drives controlled? EtherCAT, step/dir pulses, other? CANOpen, 1 Mb/s, bus load 35%, cycle time 2ms. Another thought is that - if it's step/dir pulse based control - the pulses from the PLC to the drive are getting missed/lost at high frequencies? If that's the case then there would be multiple troubleshooting steps/corrections that could be investigated. Here, it seems to me that we are getting completely off track with the observed problem. You could try to create a simplified program I had already written this elsewhere. The program before being brought into machines was exhaustively tested in SW emulation and the problem did not occur. However, in emulation I was interested in checking other aspects of the process, not this specific one which is for real a correction made necessary after the fact. The part of the program that does this correction with the function mentioned in the topic, came up from its origins, but I didn't know or didn't think it was really useful. A scruple that later turned out to be necessary. However, for now I do not think I will spend any more time on this verification, already lacking any to do my normal. I remain amazed, however, that a function intended to correct the axis position with the motor in motion and that it should not interfere with this, in fact instead changes behavior as the motor speed changes. Mah! When you manually control the motor directly from the servo drive software at the speeds you are calling for, does it move precisely to the target position? The drive and motor have been working fine for about 10 years. In replacing the machine control system, I opted for CoDeSys where before there was something else. But this is not the subject of the problem. What I need to resolve is the fact that a clutch specially placed at a certain point can slip and, therefore, I have the undeniable need to phase the 'prime mover' to the mechanical position of the machine, detected by a cam for each turn, in order to properly stop at its optimum point. Which for now I have ruled out doing. In fact, if I really have to say, since we have now gone brutally OT, I originally thought that this clutch should only come into action in cases of extreme necessity, as happens in most trials. But this one, the way it is made, slips more easily than I could estimate and the servo-controlled 'prime mover,' and the machine, get out of phase, maybe by a little, but frequently, and when the machine work at it's high speed, (in fact all of the time), I can't adjust properly the 'prime mover' position at fly.
Last updated: 2025-01-18

Post by timvh on Sorting array of any-sized structure CODESYS Forge talk (Post)
Look all the way at the end of the link below. This provides a way to use arrays with various lengths: https://content.helpme-codesys.com/en/CODESYS%20Development%20System/_cds_datatype_array.html
Last updated: 2023-08-18

After un upgrade of "CODESYS Control for Raspberry Pi MC SL" from v4.7 to v4.9 SysFileOpen function stopped working CODESYS Forge talk (Thread)
After un upgrade of "CODESYS Control for Raspberry Pi MC SL" from v4.7 to v4.9 SysFileOpen function stopped working
Last updated: 2023-08-22

Post by janderson on OPC UA Server limitations, large array crashes runtime CODESYS Forge talk (Post)
when using an array of structs, the runtime crashes. but when using an array of LREALS, it'll do 100k at least
Last updated: 2023-08-23

<< < 1 .. 36 37 38 39 40 .. 103 > >> (Page 38 of 103)

Showing results of 2553

Sort by relevance or date