Search talk: 0

 
<< < 1 .. 12 13 14 15 > >> (Page 14 of 15)

Post by salvadegianluca on List files in a directory with SysDiropen And SysDirRead CODESYS Forge talk (Post)
Good morning; I'm facing an issue that seems being caused by the library itself. I'm trying to create the list of all the files that are stored inside a psecific directory. Unluckily the first file is allways hidden. VAR CONSTANT arysEmptyArray:ARRAY[iArrayMinDimension..iArrayMAXDimension] OF STRING := [(iArrayMAXDimension - iArrayMinDimension)('')]; iArrayMinDimension:INT := 1; iArrayMAXDimension:INT := 99; END_VAR VAR_INPUT sDirectoryToInspect:STRING; sSearchFilter:STRING; END_VAR VAR_IN_OUT xCheckFileInsideDirectory:BOOL; END_VAR VAR arysListOfFoundFiles:ARRAY[iArrayMinDimension..iArrayMAXDimension] OF STRING; sNullString:STRING; iNullIndex:INT := 0; libInfoAboutThePath:DirInfo; libResultOfThePathMonitoring:CmpErrors.RTS_IEC_RESULT; libInstanceToMonitorThePath:CmpErrors.RTS_IEC_HANDLE; sEntityToSearch:STRING; dMaxEntityDimension:DINT := SIZEOF(sEntityToSearch); libFileInfo:DirInfo; sFilteredFileName:STRING; iIndexToScrollArrays:INT; END_VAR IF xCheckFileInsideDirectory THEN arysListOfFoundFiles:=arysEmptyArray; iIndexToScrollArrays:=iArrayMinDimension; libInstanceToMonitorThePath:= SysDirOpen(szDir:= sDirectoryToInspect,szDirEntry:=sNullString,diMaxDirEntry:= iNullIndex,pDirInfo:= ADR(libInfoAboutThePath),pResult:= ADR(libResultOfThePathMonitoring)); WHILE libResultOfThePathMonitoring = Errors.ERR_OK AND iIndexToScrollArrays <= iArrayMAXDimension DO sEntityToSearch:= ''; libResultOfThePathMonitoring:=SysDirRead(hDir:=libInstanceToMonitorThePath,szDirEntry:=sEntityToSearch,diMaxDirEntry:=dMaxEntityDimension,pDirInfo:=ADR(libFileInfo)); sFilteredFileName:= FUN_06_00_FindItemInString_0(sFilter:=sSearchFilter,sSource:=sEntityToSearch); IF sFilteredFileName <> '' THEN arysListOfFoundFiles[iIndexToScrollArrays]:=sFilteredFileName; iIndexToScrollArrays:=iIndexToScrollArrays + 1; END_IF IF libResultOfThePathMonitoring <> Errors.ERR_OK THEN libResultOfThePathMonitoring:= Errors.ERR_OK; END_IF END_WHILE libResultOfThePathMonitoring:=SysDirClose(hDir:= libInstanceToMonitorThePath); xCheckFileInsideDirectory:=FALSE; END_IF How is possible to solve this issue? Any known work around?
Last updated: 2024-09-17

Post by salvadegianluca on List files in a directory with SysDiropen And SysDirRead CODESYS Forge talk (Post)
Good morning; I'm facing an issue that seems being caused by the library itself. I'm trying to create the list of all the files that are stored inside a psecific directory. Unluckily the first file is allways hidden. VAR CONSTANT arysEmptyArray:ARRAY[iArrayMinDimension..iArrayMAXDimension] OF STRING := [(iArrayMAXDimension - iArrayMinDimension)('')]; iArrayMinDimension:INT := 1; iArrayMAXDimension:INT := 99; END_VAR VAR_INPUT sDirectoryToInspect:STRING; sSearchFilter:STRING; END_VAR VAR_IN_OUT xCheckFileInsideDirectory:BOOL; END_VAR VAR arysListOfFoundFiles:ARRAY[iArrayMinDimension..iArrayMAXDimension] OF STRING; sNullString:STRING; iNullIndex:INT := 0; libInfoAboutThePath:DirInfo; libResultOfThePathMonitoring:CmpErrors.RTS_IEC_RESULT; libInstanceToMonitorThePath:CmpErrors.RTS_IEC_HANDLE; sEntityToSearch:STRING; dMaxEntityDimension:DINT := SIZEOF(sEntityToSearch); libFileInfo:DirInfo; sFilteredFileName:STRING; iIndexToScrollArrays:INT; END_VAR IF xCheckFileInsideDirectory THEN arysListOfFoundFiles:=arysEmptyArray; iIndexToScrollArrays:=iArrayMinDimension; libInstanceToMonitorThePath:= SysDirOpen(szDir:= sDirectoryToInspect,szDirEntry:=sNullString,diMaxDirEntry:= iNullIndex,pDirInfo:= ADR(libInfoAboutThePath),pResult:= ADR(libResultOfThePathMonitoring)); WHILE libResultOfThePathMonitoring = Errors.ERR_OK AND iIndexToScrollArrays <= iArrayMAXDimension DO sEntityToSearch:= ''; libResultOfThePathMonitoring:=SysDirRead(hDir:=libInstanceToMonitorThePath,szDirEntry:=sEntityToSearch,diMaxDirEntry:=dMaxEntityDimension,pDirInfo:=ADR(libFileInfo)); sFilteredFileName:= FUN_06_00_FindItemInString_0(sFilter:=sSearchFilter,sSource:=sEntityToSearch); IF sFilteredFileName <> '' THEN arysListOfFoundFiles[iIndexToScrollArrays]:=sFilteredFileName; iIndexToScrollArrays:=iIndexToScrollArrays + 1; END_IF IF libResultOfThePathMonitoring <> Errors.ERR_OK THEN libResultOfThePathMonitoring:= Errors.ERR_OK; END_IF END_WHILE libResultOfThePathMonitoring:=SysDirClose(hDir:= libInstanceToMonitorThePath); xCheckFileInsideDirectory:=FALSE; END_IF How is possible to solve this issue? Any known work around?
Last updated: 2024-09-17

Post by salvadegianluca on List files in a directory with SysDiropen And SysDirRead CODESYS Forge talk (Post)
Good morning; I'm facing an issue that seems being caused by the library itself. I'm trying to create the list of all the files that are stored inside a psecific directory. Unluckily the first file is allways hidden. VAR CONSTANT arysEmptyArray:ARRAY[iArrayMinDimension..iArrayMAXDimension] OF STRING := [(iArrayMAXDimension - iArrayMinDimension)('')]; iArrayMinDimension:INT := 1; iArrayMAXDimension:INT := 99; END_VAR VAR_INPUT sDirectoryToInspect:STRING; sSearchFilter:STRING; END_VAR VAR_IN_OUT xCheckFileInsideDirectory:BOOL; END_VAR VAR arysListOfFoundFiles:ARRAY[iArrayMinDimension..iArrayMAXDimension] OF STRING; sNullString:STRING; iNullIndex:INT := 0; libInfoAboutThePath:DirInfo; libResultOfThePathMonitoring:CmpErrors.RTS_IEC_RESULT; libInstanceToMonitorThePath:CmpErrors.RTS_IEC_HANDLE; sEntityToSearch:STRING; dMaxEntityDimension:DINT := SIZEOF(sEntityToSearch); libFileInfo:DirInfo; sFilteredFileName:STRING; iIndexToScrollArrays:INT; END_VAR IF xCheckFileInsideDirectory THEN arysListOfFoundFiles:=arysEmptyArray; iIndexToScrollArrays:=iArrayMinDimension; libInstanceToMonitorThePath:= SysDirOpen(szDir:= sDirectoryToInspect,szDirEntry:=sNullString,diMaxDirEntry:= iNullIndex,pDirInfo:= ADR(libInfoAboutThePath),pResult:= ADR(libResultOfThePathMonitoring)); WHILE libResultOfThePathMonitoring = Errors.ERR_OK AND iIndexToScrollArrays <= iArrayMAXDimension DO sEntityToSearch:= ''; libResultOfThePathMonitoring:=SysDirRead(hDir:=libInstanceToMonitorThePath,szDirEntry:=sEntityToSearch,diMaxDirEntry:=dMaxEntityDimension,pDirInfo:=ADR(libFileInfo)); sFilteredFileName:= FUN_06_00_FindItemInString_0(sFilter:=sSearchFilter,sSource:=sEntityToSearch); IF sFilteredFileName <> '' THEN arysListOfFoundFiles[iIndexToScrollArrays]:=sFilteredFileName; iIndexToScrollArrays:=iIndexToScrollArrays + 1; END_IF IF libResultOfThePathMonitoring <> Errors.ERR_OK THEN libResultOfThePathMonitoring:= Errors.ERR_OK; END_IF END_WHILE libResultOfThePathMonitoring:=SysDirClose(hDir:= libInstanceToMonitorThePath); xCheckFileInsideDirectory:=FALSE; END_IF How is possible to solve this issue? Any known work around?
Last updated: 2024-09-17

Post by salvadegianluca on List files in a directory with SysDiropen And SysDirRead CODESYS Forge talk (Post)
Good morning; I'm facing an issue that seems being caused by the library itself. I'm trying to create the list of all the files that are stored inside a psecific directory. Unluckily the first file is allways hidden. VAR CONSTANT arysEmptyArray:ARRAY[iArrayMinDimension..iArrayMAXDimension] OF STRING := [(iArrayMAXDimension - iArrayMinDimension)('')]; iArrayMinDimension:INT := 1; iArrayMAXDimension:INT := 99; END_VAR VAR_INPUT sDirectoryToInspect:STRING; sSearchFilter:STRING; END_VAR VAR_IN_OUT xCheckFileInsideDirectory:BOOL; END_VAR VAR arysListOfFoundFiles:ARRAY[iArrayMinDimension..iArrayMAXDimension] OF STRING; sNullString:STRING; iNullIndex:INT := 0; libInfoAboutThePath:DirInfo; libResultOfThePathMonitoring:CmpErrors.RTS_IEC_RESULT; libInstanceToMonitorThePath:CmpErrors.RTS_IEC_HANDLE; sEntityToSearch:STRING; dMaxEntityDimension:DINT := SIZEOF(sEntityToSearch); libFileInfo:DirInfo; sFilteredFileName:STRING; iIndexToScrollArrays:INT; END_VAR IF xCheckFileInsideDirectory THEN arysListOfFoundFiles:=arysEmptyArray; iIndexToScrollArrays:=iArrayMinDimension; libInstanceToMonitorThePath:= SysDirOpen(szDir:= sDirectoryToInspect,szDirEntry:=sNullString,diMaxDirEntry:= iNullIndex,pDirInfo:= ADR(libInfoAboutThePath),pResult:= ADR(libResultOfThePathMonitoring)); WHILE libResultOfThePathMonitoring = Errors.ERR_OK AND iIndexToScrollArrays <= iArrayMAXDimension DO sEntityToSearch:= ''; libResultOfThePathMonitoring:=SysDirRead(hDir:=libInstanceToMonitorThePath,szDirEntry:=sEntityToSearch,diMaxDirEntry:=dMaxEntityDimension,pDirInfo:=ADR(libFileInfo)); sFilteredFileName:= FUN_06_00_FindItemInString_0(sFilter:=sSearchFilter,sSource:=sEntityToSearch); IF sFilteredFileName <> '' THEN arysListOfFoundFiles[iIndexToScrollArrays]:=sFilteredFileName; iIndexToScrollArrays:=iIndexToScrollArrays + 1; END_IF IF libResultOfThePathMonitoring <> Errors.ERR_OK THEN libResultOfThePathMonitoring:= Errors.ERR_OK; END_IF END_WHILE libResultOfThePathMonitoring:=SysDirClose(hDir:= libInstanceToMonitorThePath); xCheckFileInsideDirectory:=FALSE; END_IF How is possible to solve this issue? Any known work around?
Last updated: 2024-09-17

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 bertcom on STRING conversions to DWORD CODESYS Forge talk (Post)
Good afternoon. I want to communicate with a Domino Industrial Printer using its Codenet protocol. The printer wants a series of Hexadecimal characters with no spaces or '00' characters. Because of that i chose the option to make the prefix and subfix for my code in a string. I have variable data in another string. With a complete program of a lot of CONCAT functions i eventually get the format of code that the printer accepts ( tested it with the hercules tool). Hercules String : 1B4F513030311B7532626C61636B04 The problem is : Codesys adds automatically 'code' to the code to show it is a string. Codesys string : '1B4F513030311B7532626C61636B04' The printer does not understand this. My idea is to convert the string datatype to an LWORD. I have no idea how to do this. I random types in STRING_TO_DWORD, as return i get 0. That didn't worked. Also on internet the explenations around string converting in codesys are very limited. If there in anyone who can explain me how to do it, i would appreciate it a lot ! Thank you!
Last updated: 2025-01-29

Post by mubeta on Profibus DP master with EL6731 and automatic restart of slaves CODESYS Forge talk (Post)
WHEREAS, I have already searched various posts and forums, where mostly there are few references and mostly geared toward integration in TwinCAT. I am looking for how to properly configure the EL6731 board as a DP master, (where I have its 3S license), with CoDeSys 3.5.19.x. I have three types of slaves, all integrated with their GSD descriptors. In the tab for the various slaves, I don't see options related to node restart on 'station return'. On the card manual, I read that for each slave I should be able to configure parameter 8000:2C: “8000:2C Restart behavior after DP fault Reserve, must be 0 BIT1 RW 0x00 (0dec)” However, in the project I see no way to configure this parameter, in any of the boards; and the arrays do not always have such an extensive size; most of the time they are only two or three words in size. The problem is that, after the hot reset of CoDeSys, the master restarts by starting all slave nodes, but if one or more get lost and go offline, there is then no automatic restart upon their return. I would need to figure out any solution, even via software, how to figure out that this one is back available and restart it.
Last updated: 2025-02-02

Post by pernockham on Inheritence of struct, CODESYS Forge talk (Post)
Im looking for a way to define predefined version of the same structures through "extends"/inheritance. What I want to do is best shown with an example: TYPE log_item_val_type : ( BOOL_ := 0, INT_, REAL_, STRING_ ); END_TYPE TYPE LOG_DATA_BASE STRUCT val_type : log_item_val_type; (* value, name etc *) ENDSTRUCT ENDTYPE (* this/below is not possible as I understand from the compiler?? *) TYPE LOG_DATA_BOOL extends LOG_DATA_BASE : STRUCT val_type : log_item_val_type := log_item_val_type.BOOL_; END_STRUCT END_TYPE TYPE LOG_DATA_INT extends LOG_DATA_BASE : STRUCT val_type : log_item_val_type := log_item_val_type.INT_; END_STRUCT END_TYPE etc. for LOG_DATA_REAL and ..STRING. The system will not allow me to "re-define" "val_type" however. Instead I must do the work-around of defining four different types with all fields individually defined. The benefit if I could extend the base item would be that Im (more) sure the structures are identical. In usage I can call in a specific type rather use the base type and assign which type. Usage by pointer/ref to log_data_base would also be easier.. (* Usage: *) log_data : log_data_int := (name, value etc.) (* Instead of: *) log_data : log_data_base := (name, value, val_type).. Is this possible to achieve in some way that I have missed?
Last updated: 2025-03-05

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

Post by rene-h on ClientFilter used the same Client ID 2 times - Bug? CODESYS Forge talk (Post)
Hello, like the topic name says, i have a problem on one Visu which i cannot reproduce on another Visu. We filter buttons with input locks and visible items with [CURRENTCLIENTID] on different WebVisu's with different ID's, and one time the itfClient used the same Client ID for 2 Clients, so the Visualization on the first ID was wrong, because that one which connected after did not have the same permissions like the first, so the first one was blocked. We read the Clients with the VisuClientIteration project: //count active clients gCli.iNumberOfClients:=gCli.iNumberOfClients+1; // if client is active write data to global struct IF gCli.iNumberOfClients > 0 THEN gCli.astClientInfo[gCli.iNumberOfClients-1].iClientID:=itfClient.ClientId ; gCli.astClientInfo[gCli.iNumberOfClients-1].stCurrentVisu:=itfClient.CurrentVisuName; gCli.astClientInfo[gCli.iNumberOfClients-1].wsUserName:=itfClient.UserName; gCli.astClientInfo[gCli.iNumberOfClients-1].sIpAddress:=itfClient.GetIPv4Address(); gCli.astClientInfo[gCli.iNumberOfClients-1].ClientType:=itfClient.ClientType; END_IF Runtime from the device: 3.5.19.20 Codesys we use: 3.5.20.10 I added a screenshot where the same ID exists 2 times. Thanks for your answers.
Last updated: 2025-05-14

Post by chris--o on ModbusTCP RaspberryPi zu Fronius Wechselrichter CODESYS Forge talk (Post)
Hallo zusammen, ich hab ein kleines Problem bei einer Modbus TCP-Verbindung von meinem RaspberryPi (ML) zu einem Fronius Wechselrichter. Ich habe mir die CodeSys Version 3.5SP20 heruntergeladen und die Runtime auf dem RaspberryPi mit aktualisiert. Gerät ist ein Fronius Symo 6.0-3-M Folgende Konfiguration habe ich im Wechselrichter (Siehe Bilder). Laut Registertabelle fangen die Daten bei Adresse 40001 an und gehen im Modus int+SF bis 40120 Ich habe mir also im Ethernet-Adapter einen Modubus Master und darunter einen ModbusSlave angelegt. Der Slave (Fronius) hat bei mir die IP 192.168.2.46 dazu UnitID und Port. Ich habe dann einen Kanal mit den 120 WORDS und dem OFFSET angelegt. Wenn ich nun die Konfiguration übertrage , scheint erst mal alles zu passen.. aber es flackert immer wieder ein Fehler beim Slave auf (kann nicht erkennen welcher und finde auch keine Diagnose). Es werden auch keine Daten übertragen. Alles bleibt auf 0. Ich muss dazu sagen, dass ich noch eine weiter Modbus TCP Verbindung zu einer anderen SPS habe. Die funktioniert wunderbar. Normalerweise sollten ja auch mehrere Verbindungen gleichzeitig möglich sein oder? Wäre top, wenn ihr mir helfen könntet, den Fehler zu finden. LG Chris
Last updated: 2025-06-30

Post by alexgooi on Licensing info not available. CODESYS Forge talk (Post)
Sorry for the question, but I'm not completely getting the idea here, could you be more specific, maybe give an example? I'm now in a state where I don't have a softcontainer on my license server anymore (even after reinstalling from the Codesys-IDE). I tried reaching the webserver of Codemeter but when I do that I get redirected to http://"IP":22352 This is not reachable, afterwards I installed lynx on my Debian machine (command line only). From here I could reach the webserver and toggle the network server setting, but unfortunately this did not help. I also tried to changed the remote read setting to 1 (in the Server.ini file). But after a Codemeter reboot this is overwritten to 0. I have the feeling that it should be much easier to get a license to work, am I missing some checkbox somewhere? Is there a tutorial (or manual) that explains the licensing sequence step by step, because I'm pretty stuck.
Last updated: 2025-10-01

Post by nz-dave on Bool turning on in case stament in wrong state? CODESYS Forge talk (Post)
I had the FB called via a for loop to call a few instances of my FB I have removed it the for loop and just called them 1 by 1. Seems to have sorted the problem. tho, i have other FB's and for loops doing the same thing but they are all fine. below is basically what was happening. var: mVibrator : ARRAY[1..GVL_Settings.Number_Of_Products] OF Main_Vibrator; end_var Controller(PRG) call: FOR v := 1 TO GVL_Settings.Number_Of_Products BY 1 DO; mVibrator[v] (); END_FOR So at state 30: the mVibrator[1].start was turning on 30: Main_Mixer.Start := TRUE; Process_State := 2; IF Main_mixer.Done THEN Main_Mixer.Start := FALSE; Control_State := 40; END_IF but its not till state 50: that it is actual in the code. 50: Main_Suction_valve.Open_Input := TRUE; mVibrator[1].Start := TRUE; Process_State := 4; IF GVL_Weigh_hopper.LoadCell_Weight = 0 THEN Main_Suction_valve.Open_Input := FALSE; mVibrator1.Start := FALSE; Control_State := 60; END_IF Thanks for your input.
Last updated: 2023-12-16

Post by mavitia on Application based license problem - Modbus TCP CODESYS Forge talk (Post)
I am running ubuntu on a raspberry pi, and installed an application based license Control Basic M on it, it runs a demo program fine, does not timeout etc. however, when I add a modbus TCP device, I start getting errors: <Entry severity="error" component="CmpApp" user="nobody" timestamp="12/18/2023 3:49:42 PM" infoId="24">Online change denied. Application Application is in exception state!</Entry> <Entry severity="error" component="CmpApp" user="nobody" timestamp="12/18/2023 3:49:42 PM" infoId="68">Download failed: Application=Application</Entry> <Entry severity="exception" component="CmpApp" user="nobody" timestamp="12/18/2023 3:49:41 PM" infoId="0">Application app=Application has invalid license metrics!</Entry> the modbus tcp slave runs, and the counter ticks up, however, when I call the variables on the %IX0.0 in my program, and try to upload the changes, I am getting the error messages which stop the program as far as I understand, the application based, M includes 2 fieldbus instances, but on the other side is fairly new, anything obvious I am missing out here?
Last updated: 2023-12-18

Post by vahasa on CAN TPDO / RPDO CODESYS Forge talk (Post)
Hi I'm automation engineering student and I'm not yet quite familiar with CAN-bus. What I am trying to achieve, to send two byte message via CAN from Epec display to Scott Drive inverter. I'm using code template made with Epec Multitool in Codesys 3.5 Problem i'm facing is that drive responds with same COB-ID. In multitool, you can create TPDO/RPDO. And depending on that, display either sends or only receives. This is problem, because for parameter polling from drive, you need to send two byte request to 0x399 and drive responds with eight bytes. If request is longer, drive don't respond. 0x399 is currently setted as RPDO, so display doesn't send anything on startup and I made program that sends messages to 0x399 bytes 0 and 1 and bytes 3-7 are shown in display. If setted as TPDO, display send all eight bytes and therefor drive cannot respond. But, I think because they are defined as RPDO, display won't send message, although monitoring with Codesys, values are changed. Question is, how should COB-ID be configured in Codesys, so it wouldn't automatically start to send message but would send when needed?
Last updated: 2023-12-19

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 francescoc on Custom log CmpLog CODESYS Forge talk (Post)
Hi, I am trying to create a log in my application. Since I cannot find any documentation regarding modifying the codesys configuration file to be able to log in ms, i tried to create a new log via CmpLog.LogCreate. Below is the part of the code where I create the logger and write a test string. In the log tab of codesys I actually see the new log that was created, but it is empty, and in the folder I cannot find any files. I can't find any detailed documentation. Can you guys give me support? Are there any examples? Thank you IF NOT FirstCycle THEN LogName:= 'LOGS/TestLog'; LogOptions.bEnable:= 1; LogOptions.iMaxEntries:= 5000; LogOptions.iMaxFiles:= 100; LogOptions.iMaxFileSize:= 5000; LogOptions.szName:= LogName; LogOptions.uiType:= CmpLog.LogTypes.LT_TIMESTAMP_RTC_HIGHRES; LogOptions.uiFilter:= CmpLog.LogClass.LOG_ALL; LogHandle:= CmpLog.LogCreate(pOptions := ADR(LogOptions), pResult:= ADR(Result)); LogHandle:= CmpLog.LogOpen(pszName:= LogName, pResult:= Result); Component_Manager.CMAddComponent2('TestLogNEW', 16#00000001, ADR(udiCmpIdNEW), 0); CmpLog.LogAdd2(LogHandle, udiCmpIdNEW, CmpLog.LogClass.LOG_INFO, 1, 1, 'Logger started...'); END_IF IF TestWrite THEN TestWrite:= FALSE; CmpLog.LogAdd2(LogHandle, udiCmpIdNEW, CmpLog.LogClass.LOG_INFO, 1, 1, 'Write test'); END_IF
Last updated: 2024-03-16

Post by wmoon on Licensing info not available. CODESYS Forge talk (Post)
That command can't excute on my device. I installed CODESYS into Hilscher's product using container Here is the Docker file what I used. I'm not sure if this docker file have a problem. If it have a problem, please let me know how to download the files into my device using ftp server. FROM arm64v8/debian:11.6 RUN apt-get update RUN apt-get install -y wget sudo unzip libusb-1.0-0-dev procps ENV CDS_VERSION "4.10.0.0" ENV EDGE_VERSION "4.10.0.0" ENV URL "https://store-archive.codesys.com/ftp_download/3S/LinuxARM64/2302000039/$CDS_VERSION/CODESYS%20Control%20for%20Linux%20ARM64%20SL%20$CDS_VERSION.package" ENV EDGE_URL "https://store-archive.codesys.com/ftp_download/3S/EdgeGatewayLinux/000120/$EDGE_VERSION/CODESYS%20Edge%20Gateway%20for%20Linux%20$EDGE_VERSION.package" RUN wget --output-document=/tmp/codesys.package $URL && \ unzip -p /tmp/codesys.package 'codemeter.deb' > /tmp/codemeter.deb && dpkg -i /tmp/codemeter.deb && \ unzip -p /tmp/codesys.package 'codesyscontrol.deb' > /tmp/codesys.deb && dpkg -i /tmp/codesys.deb RUN wget --output-document=/tmp/edge.package $EDGE_URL && \ unzip -p /tmp/edge.package '*arm64.deb' > /tmp/edge.deb && dpkg -i /tmp/edge.deb EXPOSE 11740 1217 11743 ENTRYPOINT ["/bin/sh", "-c" , "/etc/init.d/codesyscontrol start && /etc/init.d/codesysedge start && tail -f /dev/null"]
Last updated: 2024-03-20

Post by salvadegianluca on How to use TON inside an FB that is instanced within a Visu page CODESYS Forge talk (Post)
Hi everyone; I'm building a project in which the drag of the mouse over some controls (or the click event) changes the background color of the control items; this change of color is made with an FB that assignes a color code to the background with MUX command based on the value of an enumerator, this part is perfectly working but, when I'm using a touchpanel instead of a web visu (controlled by a mouse) I get into some issues as it seems that the touch operations are not triggering the MouseEnter and MouseLeave properties as it's done with the mouse.... For this reason I'm trying to add a TON to my FB and, if the enum that changes color remains at the same state for more then 3s I'm automatically resetting it to it's "0" so the item gets back the not selected color. Anyhow it looks like the TON function from library is not working in these FB that are instanced in the various visualizations, as instead they do if I create some instances within the POUS. Anyone has ideas of how to make them work?
Last updated: 2024-04-15

Post by salvadegianluca on How to use TON inside an FB that is instanced within a Visu page CODESYS Forge talk (Post)
Hi everyone; I'm building a project in which the drag of the mouse over some controls (or the click event) changes the background color of the control items; this change of color is made with an FB that assignes a color code to the background with MUX command based on the value of an enumerator, this part is perfectly working but, when I'm using a touchpanel instead of a web visu (controlled by a mouse) I get into some issues as it seems that the touch operations are not triggering the MouseEnter and MouseLeave properties as it's done with the mouse.... For this reason I'm trying to add a TON to my FB and, if the enum that changes color remains at the same state for more then 3s I'm automatically resetting it to it's "0" so the item gets back the not selected color. Anyhow it looks like the TON function from library is not working in these FB that are instanced in the various visualizations, as instead they do if I create some instances within the POUS. Anyone has ideas of how to make them work?
Last updated: 2024-04-15

Post by k2saki on CNC / G01 Speed is very slow (or go-stop motion) in Continuous short segment . CODESYS Forge talk (Post)
I'm using CAD/CAM that outputs GCode with G01 many short segments from NURBS Curve, only X-Y axis. But CODESYS CNC motion seems much slower ( or stop-go motion ) in simulation mode than F-Value (I checked value from SMC_Interpolator - dVel ). In GCode G01, F value is F500, but movement is very slow, actual speed (dVel) is between 0 to 30 back and forth. I think very old CNC can move like that, but nowadays, a lot of CNC can move smoothly to process free curve ( somethimes option switch ) I tried to use G51 Dxx but I got the same result. My questions are 1) How do I improve CODESYS CNC motion in this case ? 2) How can I graph the sampling from dVel of SMC_Interpolate in CODESYS? From my GCode N2006 G01 X1.4364 Y-14.6847 F500 N2007 G01 X1.6759 Y-14.6768 N2008 G01 X1.9152 Y-14.6486 N2009 G01 X2.1547 Y-14.6400 N2010 G01 X2.3943 Y-14.6090 N2011 G01 X2.6336 Y-14.6002 N2012 G01 X2.8732 Y-14.5716 N2013 G01 X3.1127 Y-14.5634 N2014 G01 X3.3520 Y-14.5410 N2015 G01 X3.5915 Y-14.5336 N2016 G01 X3.8308 Y-14.5307 ... Thansk.
Last updated: 2024-04-29

Post by rabaggett on CODESYS control for Raspberry Pi 64 SL errors CODESYS Forge talk (Post)
Hi, I am trying to create a project using a raspberry pi, I have added the modules for the Pi and MCP3008. I have encountered som errors that I don't know how to track down. 1. The GPIOs give preprocessor errors, but I read that this does not prevent compiling. This seems to be true. I can build the empty project with no errors. 2. After adding a SPI master and MCP3008, the preprocessor errors double, but seem similar and the project again builds with no errors. 3. I add a DUT and GVL, with a function, and I get the following errors. They remain even if I delete these things. ------ Build started: Application: Device.Application ------- Typify code... [ERROR] crr: C0032: Cannot convert type 'Unknown type: 'ADR(GVL_Io_17160064_c083_41f8_9e53_208be7537753_HPS_7.Io_17160064_c083_41f8_9e53_208be7537753_HPS_7)'' to type 'POINTER TO IoConfigParameter' [ERROR] crr: C0077: Unknown type: 'GVL_Io_17160064_c083_41f8_9e53_208be7537753_HPS_7.Io_17160064_c083_41f8_9e53_208be7537753_HPS_7' [ERROR] crr: C0046: Identifier 'GVL_Io_17160064_c083_41f8_9e53_208be7537753_HPS_7' not defined Compile complete -- 3 errors, 0 warnings I attach the project. What am I doing wrong? Thanks!
Last updated: 2024-05-02

Post by william-blandon on RecipeManCommands.ReloadRecipes CODESYS Forge talk (Post)
Hi Dave. Thanks for your answer. I still struggling with this. I have done everything according with the Codesys help even I have looked in detail at the example. I have double checked the recipe manager configuration and the use of all the methods. There are two methods that do not work as expected. I'm using Codesys 3.5.19.20 and recipe management 4.4.0.0 .CreateRecipe just create a recipe in the recipe definition but do not create the file. This have a walk around just giving a .ReadAndSaveRecipe afterwards. .ReloadRecipes do nothing but do not generate any error as well. After calling it I call the .GetRecipeCount and the number is always 0. When I create a new recipe (using the function block methods) then the number changes. Looks like this method is looking to the wrong directory finding nothing. I don't know if there is a missing configuration in the CODESYSControl.cfg file. I'm thinking in a walk around for this but I need to create a strings array with the recipe names as retentive and making all the management when deleting and adding recipes. Have had some one the same problem?
Last updated: 2024-05-23

Post by caprez95 on Trace Restart Visuelement CODESYS Forge talk (Post)
Hallo zusammen. Ich habe schon länger mit dem Problem zu kämpfen, dass ich einen Trend (Visuelement) nicht resetten (neustarten) kann. Ich habe es jetzt mit dem Beispiel hinbekommen, die Trace-Aufzeichnung über die CmpTraceMgr Bibliothek zu steuern. Aber wie bekomme ich diese Trace-Aufzeichnung in ein Visuelement? Der Code sieht wie folgt aus: // Configure trace IF xInit THEN // Create a trace packet PacketConfig.pszName := ADR('IECTraceConfiguration.Trace1'); // Name of trace PacketConfig.pszApplicationName := ADR('IECTraceConfiguration'); // Name of the application PacketConfig.pszIecTaskName := ADR('Task'); // Name of the task PacketConfig.pszComment := ADR('Demo packet'); PacketConfig.ulEveryNCycles := 1; PacketConfig.ulBufferEntries := 1000; PacketConfig.ulFlags := TRACE_PACKET_FLAGS.TRACE_PACKET_FLAGS_TIMESTAMP_MS AND TRACE_PACKET_FLAGS.TRACE_PACKET_FLAGS_AUTOSTART; IF (NOT fbTraceManager.CreatePacket(PacketConfig := PacketConfig, hPacket=>hPacket1)) THEN xError := TRUE; END_IF // Create a trace record RecordConfig.pszVariable := ADR('iSignal'); // This is the name of variable to record RecordConfig.tcClass := INT_TO_UDINT(TypeClass.TYPE_INT); // Type of the recording variable RecordConfig.ulSize := SIZEOF(iSignal); // Size of the recording variable pApp := AppFindApplicationByName('IECTraceConfiguration', 0); AppGetAreaOffsetByAddress(pApp, ADR(iSignal), ADR(RecordConfig.tvaAddress.taAddress.Area.usArea), ADR(RecordConfig.tvaAddress.taAddress.Area.ulOffset)); // Get and set area offsets RecordConfig.tvaAddress.ulAddressFlags := TRACE_VAR_ADDRESS_FLAGS_IEC OR TRACE_VAR_ADDRESS_FLAGS_AREA_OFFSET; RecordConfig.ulGraphColor := 16#FF00FF00; // green RecordConfig.ulGraphType := 1; // Line with points IF (NOT fbTraceManager.AddRecord(RecordConfig := RecordConfig, hPacket := hPacket1, hRecord => hRecord1)) THEN xError := TRUE; END_IF xInit := FALSE; END_IF // Starts the recording IF xStart THEN IF (NOT fbTraceManager.StartPacket(hPacket := hPacket1)) THEN xError := TRUE; END_IF xStart := FALSE; END_IF // Stop the recording IF xStop THEN IF (NOT fbTraceManager.StopPacket(hPacket := hPacket1)) THEN xError := TRUE; END_IF xStop := FALSE; END_IF // Reset the recording IF xReset THEN IF (NOT fbTraceManager.ResetPacket(hPacket := hPacket1)) THEN xError := TRUE; END_IF xReset := FALSE; END_IF
Last updated: 2024-06-04

Post by caprez95 on Trace Restart Visuelement CODESYS Forge talk (Post)
Hello everyone. I've been struggling with the problem for a long time that I can't reset (restart) a trend (visual element). With the example I have now managed to control the trace recording via the CmpTraceMgr library. But how do I get this trace recording into a visual element? The code looks like this: // Configure trace IF xInit THEN // Create a trace packet PacketConfig.pszName := ADR('IECTraceConfiguration.Trace1'); // Name of trace PacketConfig.pszApplicationName := ADR('IECTraceConfiguration'); // Name of the application PacketConfig.pszIecTaskName := ADR('Task'); // Name of the task PacketConfig.pszComment := ADR('Demo packet'); PacketConfig.ulEveryNCycles := 1; PacketConfig.ulBufferEntries := 1000; PacketConfig.ulFlags := TRACE_PACKET_FLAGS.TRACE_PACKET_FLAGS_TIMESTAMP_MS AND TRACE_PACKET_FLAGS.TRACE_PACKET_FLAGS_AUTOSTART; IF (NOT fbTraceManager.CreatePacket(PacketConfig := PacketConfig, hPacket=>hPacket1)) THEN xError := TRUE; END_IF // Create a trace record RecordConfig.pszVariable := ADR('iSignal'); // This is the name of variable to record RecordConfig.tcClass := INT_TO_UDINT(TypeClass.TYPE_INT); // Type of the recording variable RecordConfig.ulSize := SIZEOF(iSignal); // Size of the recording variable pApp := AppFindApplicationByName('IECTraceConfiguration', 0); AppGetAreaOffsetByAddress(pApp, ADR(iSignal), ADR(RecordConfig.tvaAddress.taAddress.Area.usArea), ADR(RecordConfig.tvaAddress.taAddress.Area.ulOffset)); // Get and set area offsets RecordConfig.tvaAddress.ulAddressFlags := TRACE_VAR_ADDRESS_FLAGS_IEC OR TRACE_VAR_ADDRESS_FLAGS_AREA_OFFSET; RecordConfig.ulGraphColor := 16#FF00FF00; // green RecordConfig.ulGraphType := 1; // Line with points IF (NOT fbTraceManager.AddRecord(RecordConfig := RecordConfig, hPacket := hPacket1, hRecord => hRecord1)) THEN xError := TRUE; END_IF xInit := FALSE; END_IF // Starts the recording IF xStart THEN IF (NOT fbTraceManager.StartPacket(hPacket := hPacket1)) THEN xError := TRUE; END_IF xStart := FALSE; END_IF // Stop the recording IF xStop THEN IF (NOT fbTraceManager.StopPacket(hPacket := hPacket1)) THEN xError := TRUE; END_IF xStop := FALSE; END_IF // Reset the recording IF xReset THEN IF (NOT fbTraceManager.ResetPacket(hPacket := hPacket1)) THEN xError := TRUE; END_IF xReset := FALSE; END_IF
Last updated: 2024-06-04

<< < 1 .. 12 13 14 15 > >> (Page 14 of 15)

Showing results of 375

Sort by relevance or date