Post by sawicpx on CANbus Remapping PDOs During Runtime
CODESYS Forge
talk
(Post)
Hello, I am working on an application where I need to remap PDOs to a different CANopen object during runtime depending on what value is at a specific register. I have gotten to the point where I put the device into Preoperational State using the CIA405.NMT function. I then reconfigure the PDO 180x and 1a0x obejcts usings SDOs to point to a new canopen object on the device however when I go to restart the Device from PREOP to OP using the CIA405.NMT function the device is reset back to the original configuration as per the initial setup. I am wondering is there any way to change the PDOs at runtime is there some more functionaility I can access to do this. Any direction is appreciated!
Last updated: 2023-12-22
Post by macros8 on Translation - How to get text as reference in Frames translated?
CODESYS Forge
talk
(Post)
Hi, thanks for the link. Maybe I create elements in incorrect way. I always use Interface Editor to create variables which are used inside element (see pics). After that I place element in my visu and use Reference property to link variable or set the value. In that case the value of string is not transferred to general text list for translation as I mentioned before. Do I have to all properties which influence behavior of my element create in Frame configuration instead? What´s the difference to the Interface editor? Thanks a lot. M.
Last updated: 2024-01-02
Post by joanm on Programmatically change the IP addresses of the Modbus TCP slave devices
CODESYS Forge
talk
(Post)
Hello all, I am working in a project in which there are multiple Modbus TCP slaves. I need to be able to change the IP addresses of those devices from the HMI and I was planning to use the process depicted here: https://faq.codesys.com/display/CDSFAQ/Modbus+TCP+Slave%3A+Dynamic+Setting+of+the+IP+Address I can see the port number is what is used to specify which slave device we want to modify the IP address of. This said, can I freely set arbitrary port numbers to each device? I mean, can I set the first device to be at port 502, the second one at port 503... Any drawback or restriction? Is there any other way to reference to the device without having to change the port numbers? Thank you all in advance.
Last updated: 2024-01-04
Post by jeroen on Ramp function
CODESYS Forge
talk
(Post)
Hi, Found a nice ramp function in the OSCAT lib (FT_RMP), but is there a nice way to 'set' the output to the current input as form of a reset. The reason for this, is that I want to set up a ramp for a pressure control input that should have x Bar/sec linear rise input. The only option (or code it by hand) I found is this OSCAT FB. Any other options? Just need to increase a value by x Bar/sec from let's say 250Bar (as start) to end 1500Bar. The Oscat ramp will always start at 0 when enable is off (FT_RMP.Rmp := FALSE)
Last updated: 2024-01-09
Post by yang123 on EtherCAT Can't reconnect to servo drive
CODESYS Forge
talk
(Post)
I am using Ethercat Master 4.6.0.0 and have use the automatic restart slaves feature. But we found of after the Ethercat communication normal and slave drive power-off and power-on the slave can't reconnect sucess. The PLC Log show the drive was al status "6#34 : Invalid DC Timeout Error" and its was reconnection sucess first but seconced later the drive will show the "16#2C : Fatal Sync error" and then drive will can't reconnection. Other slave are reconnect sucess which was link after the can't reconnect's drive the drive was OMRON R88D-1SN
Last updated: 2024-01-23
Post by matt-s on HMI Pushbutton/Move Instruction
CODESYS Forge
talk
(Post)
I am having an issue where the manual start/stop push buttons on the HMI are supposed to take the pumps/blowers out of auto. The logic I have attached works for the pumps, but not the blower. From what I can tell it is the exact same logic, but it is not writing a 0 to the Auto PB variable. Attached is the logic, cross reference list to show nothing else is writing to it, and the HMI screen. Any help? Am I missing something? I am using a Groov Epic PR1, my software version is 3.5 SP19 Patch 5 32 Bit.
Last updated: 2024-01-25
Post by alexgooi on Function Blocks and arrays of function blocks
CODESYS Forge
talk
(Post)
Hi Jack, I think you have to look at a FB in a different way. A Function block (Class) can contain its own data. In other words don't define loose data in your GVL, but define a instance of a FB (Object) in your GVL: Example: Function_Block Basic_Class VAR_INPUT Open_Command: BOOL; END_VAR VAR_OUTPUT Opened: BOOL; END_VAR if Open_Command then Opened := TRUE; ELSE Opened := FALSE; END_IF Global Variables Objects: ARRAY[1..100] OF Basic_Class; //Here you ar defining you objects END_VAR In your code you can directly acces the data and couple it to the IO: GVL.Objects[1].Open_Command := %IX0.0; %QX0.0 := GVL.Objects[1].Opened; //To call the code itself use: GVL.Objects[1](); If you want to take this a step further you are also able to add methods and properties to the FB/Class end thereby creating a OOIP program
Last updated: 2024-02-15
Post by ewi04 on How to upload application file to remote controller (offline) ?
CODESYS Forge
talk
(Post)
Thank you very much for your time and replay! Sounds like a good idea. Unfortunately, I have no other option to run the code from the running plc. So, I can’t stop any services. If anyone has the same problem, I've gotten a little closer to understanding it: Sometimes the copied files are empty after the restart. The update code checks if there are any empty files. Before I turn off the device, everything is okay. But after starting, some files are suddenly empty and that cause the problems. I don't know why this happens.
Last updated: 2024-02-16
Post by eschwellinger on Zielsystem stimmt nicht mit dem verbundenen Gerät überein
CODESYS Forge
talk
(Post)
na ja es gibt halt einfach die Möglichkeiten: 1. Man installiert Raspberry PI OS 32Bit -> dann geht PI SL und PI MC Multicore als Target 2. Man installiert Raspberry PI OS 64Bit dann muss es PI64Bit sein falls der Übersetzungsfehler nicht in einer Bibliothek ist (die du vielleicht nicht ändern kannst) https://faq.codesys.com/pages/viewpage.action?pageId=128253958 Hier der Hinweis was man tun muss das dein IEC Code für 32Bit als auch 64Bit Targets funktioniert Also entweder zurück auf Raspberry PI OS 32 Bit: nur zur Info noch was im Config file steht für welche Plattform/Produkt [CmpRasPi] Architecture=aarch64 (-> 64Bit PI) oder Architecture=armv7l (-> PI MC Multicore) oder Architecture=armv6l (-> PI SL Single Core)
Last updated: 2024-03-11
Post by bschraud on Zielsystem stimmt nicht mit dem verbundenen Gerät überein
CODESYS Forge
talk
(Post)
Zu der o.g. Fehlermeldung "cmperrors interfaces, 3.5.5.0 (system): C0338: Die Bibliothek 'cmperrors interfaces, 3.5.5.0 (system)' wird nur in 32-Bit-Applikationen unterstützt": Wie kann ich die Bibliothek finden, die den Fehler verursacht? Beim Doppelklick auf die Fehlermeldung würde ich einen entsprechenden Hinweis erwarten. Aber es passiert gar nichts. Wenn ich im Bibliotheksverwalter manuell den Baum durchsuche, finde ich nur Referenzen auf CmpErrors2Interfaces, die ja 64bit kompatibel sind. Leider konnte ich bisher nur eine SSD mit einem 64bit OS für den RPi zum Laufen bringen. Deswegen gehen mir langsam die Ideen aus. Vielen Dank für die Hilfe
Last updated: 2024-03-18
Post by mp9876 on Device logon problem following fresh install
CODESYS Forge
talk
(Post)
Yes it had been the case I believe as I have seen that message regarding they were not the same. I had update the device though to match them and that still did not fix the problem. I gotta say I wanted to get out of that situation and attempted a lot of things and then I did two things at the same time that fixed my problem: Wiped the 64 bit version and installed the 32 bit version Installed latest SP20 I wish I knew which one of these actions fixed the problem but now I gotta catch up on this IDE learning; it's been quite a learning experience I have to say! Thank you very much for your time and advice; much appreciated!
Last updated: 2024-03-19
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 bschraud on Zielsystem stimmt nicht mit dem verbundenen Gerät überein
CODESYS Forge
talk
(Post)
Dank umfangreicher Hilfe durch den Kontron Support kann ich nun wieder übersetzen. Es waren einige Bibliotheken auf einem älteren, nicht 64bit-kompatiblen Stand. Beim Öffnen des Projektes erscheint zwar ein Dialog zum Aktualisieren der Bibliotheken. Diesen hatte ich auch mit "Auf neueste setzen" bestätigt. Trotzdem waren etliche Bibliotheken im Projekt veraltet. Leider habe ich noch keine Stelle in der Online Hilfe gefunden, die die Zusammenhänge in der Bibliotheksverwaltung und das Vorgehen bei Fehlern erklärt. (Z.B. wie man vermeiden kann, dass eine Komponente automatisch eine ältere Bibliotheksversion lädt, obwohl eine aktuelle Version der gleichen Bibliothek schon hinzugefügt wurde.) Vielen Dank für die Hilfe!
Last updated: 2024-03-25
Post by ac-spr on Runtime variable that indicates a user is online to the code
CODESYS Forge
talk
(Post)
Looking to access a variable at runtime that indicates a user is online to the code. essentially want to use this value to feedback to the user on the HMI. we use turck and bosch rexroth devices if this information helps. I was hoping there was a variable at the application level, or a library that could be used but I was unable to find anything. I know there's a pop up when you try to login/ go online to the code when a user is already logged in, so the system does provide an indication that it knows already online, but has no access to a value from what I can see. Any help is appreciated
Last updated: 2024-04-22
Post by eurowolf on SoftMotionLight Lizenz nach Programmupdate weg
CODESYS Forge
talk
(Post)
Hallo, auf einer Sabo MKS855.20 habe ich die SoftMotionLight-Lizenz installiert. Zur Programmierung nutze ich V3.5 SP16.0. Die im Projekt verwendete SML 4.7.0.0, SML_Drive_CAN_GenericDSP42 3.5.7.0, CANopen_Manager_Softmotion 3.5.16.0. In der Regel habe ich keine Probleme mit der SoftMotionLight, nur bei dieser Anlage ist es mir jetzt zum Zweiten mal passiert, das ich ein Programmupdate einspiele und die SML in den Demo-Modus wechselt. Die Lizenz ist doch auf der SPS gespeichert, warum wird dann behauptet, dass die SML im Demo-Modus arbeitet. Da ich z. Zt. beim Kunden vor Ort bin und dieser sich im Ausland befindet, benötige ich kurzfristig eine Lösung. Auf E-Mails bekomme ich leider keine Rückmeldung.
Last updated: 2024-05-14
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 viksym on Get text from textlist
CODESYS Forge
talk
(Post)
Does anybody know how to get a specific text from a text list within a program. Obviously it works in a visualization, but because I will have an HMI that has it's own system and I will have to send variables to this HMI via an OPC UA connection, I need to be able to get a text into a string. I tried using the VisuElems like this, but it only returns an empty "" and nothing else. IF trig THEN sText := VisuElems.cmpDynamictext.DynamicTextGetDefaultText(ADR(sTextList), ADR(sAlarmID))^; //sText := VisuElems.cmpDynamictext.DynamicTextGetText(ADR(sTextList), ADR(sAlarmID))^; trig := FALSE; END_IF Any help and idea is highly appreciated because I am getting desperate here.
Last updated: 2024-05-31
Post by kazuhiro on Problems using MySql Library and SysProcessExecuteCommand2 together
CODESYS Forge
talk
(Post)
I use fbMsSQL_compact(FUN) of the MySQL Library to write data to the database. There is no problem when writing data using only fbMsSQL_compact(FUN). However, when I try to write data obtained using SysProcessExecuteCommand2 to the database using fbMsSQL_compact(FUN), an error message "Dest server on ip address:xxx.xxx.xxx.xxx and port:1433 is unreachable" appears and writing is not possible. From what I have researched, it seems that writing is not completed in one cycle of fbMsSQL_compact(FUN), and when SysProcessExecuteCommand2 is executed first in the second cycle, the work done in one cycle of fbMsSQL_compact(FUN) is reset. Could you please give me some advice?
Last updated: 2024-06-18
Post by kazuhiro on Problems using MySql Library and SysProcessExecuteCommand2 together
CODESYS Forge
talk
(Post)
I use fbMsSQL_compact(FUN) of the MySQL Library to write data to the database. There is no problem when writing data using only fbMsSQL_compact(FUN). However, when I try to write data obtained using SysProcessExecuteCommand2 to the database using fbMsSQL_compact(FUN), an error message "Dest server on ip address:xxx.xxx.xxx.xxx and port:1433 is unreachable" appears and writing is not possible. From what I have researched, it seems that writing is not completed in one cycle of fbMsSQL_compact(FUN), and when SysProcessExecuteCommand2 is executed first in the second cycle, the work done in one cycle of fbMsSQL_compact(FUN) is reset. Could you please give me some advice?
Last updated: 2024-06-18
Post by mikek10 on HTTP Client TCP Init Error
CODESYS Forge
talk
(Post)
Hi, I tried posting in the discussion for the HTTP Client example but perhaps that is not monitored? I have been using http client successfully for approximately 12 months, however in recent weeks I have begun to get TCP_INIT_ERROR when attempting to communicate. The only resolution seems to be power cycling and then the connection begins to work again for a time. I am not aware of any changes to code or libraries between working ok and now. Cold reset does not resolve, only power cycle. It seems the error from NBS.TCP_Client is 6002 which I think is invalid_addr However the address is the same when working and not working?
Last updated: 2024-07-04
Post by mubeta on parker servo and position
CODESYS Forge
talk
(Post)
Reading between the lines of what you did not specify, it therefore seems to appear that in the programme, at the end of the movement order, there is an order to remove power and switch off the pulse modulation. if this is the case, it is obvious that the motor then remains free. If the position is to be maintained at the end of the movement, the motor current modulator, which on the PLC side is controlled via the MC_Power method, must not be interrupted. Another possibility is that in the motor drive settings, the standstill torque current is set very low or zero and without position monitoring. You have to check this via the servo motor drive.
Last updated: 2024-08-05
Post by bernhardw on Probleme mit MC_HALT_SML und MC_STOP_SML
CODESYS Forge
talk
(Post)
Hallo … ich verwende: SoftMotionLight im Positions-Mode Ethercat-Bus Servoverstärker: Metronix BL4104-C . MC_HALT_SML funktioniert nicht zuverlässig (Achse fährt manchmal zu weit oder bis zum Softwareschalter) Ich habe festgestellt, dass intern beim Aufruf von Positions- auf Velocity-Mode umgeschaltet wird - und dann wird wahrscheinlich intern auf Drehzahl 0 abgeregelt. Kennt jemand dieses Problem? – der Wechsel der Betriebsart ja ist nicht verzögerungsfrei! MC_STOP_SML Der Baustein hat keinen Eingangsparameter "Deceleration" Die Achse stoppt und bleibt im Positions-Mode. Aber die Verzögerung ist nicht wie beschrieben: nicht "Objekt 6085h: quick_stop_deceleration" - sondern "Objekt 6084h: profile_deceleration" - aus zuvor aufgerufenem MC_MOVE_ABSOLUTE_SML Ich wäre dankbar für jeden Hinweis Gruß Bernhard
Last updated: 2024-08-05
Post by trusty-squire on parker servo and position
CODESYS Forge
talk
(Post)
@gepert, When you say "I do not turn off power", are you saying you don't power off the drive, or you don't turn of the MC_POWER function block? I read your statement as you don't kill actual electrical power. MC_POWER should stay enabled. @Gustavo, not related to problem at all, but when you say 1.6 Nm is only enough torque to unscrew a loose bottle cap, I think that's a bit low. A quick mental math I use is 1 Nm is almost the same force as 1kG applied to a 10cm wrench. So 1.6kG applied to a 10cm wrench is still not a huge force, but more than enough to be felt if trying to turn the shaft by hand.
Last updated: 2024-08-06
Post by alimans on OPC-UA Server, Symbol Set: Raise an error: Object reference not set to an instance of an object.
CODESYS Forge
talk
(Post)
Hi everyone, I just created a very simple library without any code and, added it to my very simple project. after adding this library, I get an error when I try to open "Symbol Set" in "OPC UA Server" in "Communication Manager". Here is the code of my POU in the library: FUNCTION_BLOCK POU VAR eCommand : (CMD_NONE:=0, CMD_RESET:=-1) INT := CMD_NONE; END_VAR Attached is the error that I get. I also noticed that by removing the enumeration variable above (eCommand), I can open the "Symbol Set" again. Anybody has any idea why this error is raised and how could I use enumeration variables without error in "OPC UA Symbol Set"?
Last updated: 2024-08-08
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
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
.