Post by baotthitawat on SCADA Systems Are Becoming Easier to Integrate With Modern Applications
CODESYS Forge
talk
(Post)
One thing I’ve been seeing recently is that more industrial systems are starting to expose realtime SCADA data through APIs instead of keeping everything isolated inside the local monitoring software. This makes integration much easier for cloud platforms, mobile dashboards, AI analytics, and enterprise applications that need realtime industrial data. Instead of exporting reports manually or building complicated middleware, APIs allow external systems to access SCADA data directly in realtime. I think this becomes especially useful for applications like wastewater treatment monitoring, where operators need better visibility into alarms, equipment status, and operational conditions across different locations. Feels like modern SCADA is slowly evolving from a standalone monitoring platform into part of a larger connected industrial ecosystem.
Last updated: 2026-05-28
Post by baotthitawat on SCADA Systems Are Becoming Easier to Integrate With Modern Applications
CODESYS Forge
talk
(Post)
One thing I’ve been seeing recently is that more industrial systems are starting to expose realtime SCADA data through APIs instead of keeping everything isolated inside the local monitoring software. This makes integration much easier for cloud platforms, mobile dashboards, AI analytics, and enterprise applications that need realtime industrial data. Instead of exporting reports manually or building complicated middleware, APIs allow external systems to access SCADA data directly in realtime. I think this becomes especially useful for applications like wastewater treatment monitoring, where operators need better visibility into alarms, equipment status, and operational conditions across different locations. Feels like modern SCADA is slowly evolving from a standalone monitoring platform into part of a larger connected industrial ecosystem.
Last updated: 2026-05-28
Post by pernockham on Gateway in China - "Gateway not connected"
CODESYS Forge
talk
(Post)
I think I understand my problem. They are most probably related to configuration of the network. When I use DHCP for the unit to my router it all works. However when using static IP I have not managed to reach functioning state. Trying to replicate the situation on my desk. Having a static IP on the "debian host" and a connection to my computer which then routes traffic on to internet. I have entered settings for gateway and netmask. I can ping from my "debian plc host" to internet and also do "curl google.com" so traffic seems to find its way through and back, still "Automation server" will not find the gateway. Any hints how a manual configuration should be done? Is it possibly a "firewall" issue of my "normal router"? Thanks for any help! Per
Last updated: 2026-01-27
Post by timvh on CPU + EtherCAT redundancy
CODESYS Forge
talk
(Post)
It works well with two Wago 750-8210's. I helped a few customers setting this up. But it should work with any device which can control EtherCAT I/O, is real-time and has sufficient network interfaces. Two network adapters can be used to create a redundant EtherCAT network (you need 2 additional switches for this). The other network adapters can be used to interconnect the 2 PLC's (synchronization). We noticed that if you exchange variable lists that there could be some issues if you have long lists. So what we did is use a SoftPLC on a server that contains all the settings which continuously sends network packages (GVL sender) and which is received by both PLC's (network receiver). Switching over is done in milliseconds. The bus doesn't notice the change-over. EtherCAT communication works flawlessly.
Last updated: 2026-01-30
Post by winki on Error in licence activation
CODESYS Forge
talk
(Post)
Hello, I think I understand: On my debian gateway I have done: sudo cmu --list cmu - CodeMeter Universal Support Tool. Version 8.30a of 2025-May-06 (Build 6885) for Linux/ARMHF 64-Bit Copyright (C) 2007-2025 by WIBU-SYSTEMS AG. All rights reserved. List all locally connected CmContainers: - CmContainer with Serial Number 130-XXXXXXXX and version 3.00 (empty) - CmContainer with Serial Number 130-XXXXXXXX and version 3.00 (locked) Result: 2 CmContainer(s) listed. The licence has been activated with a computer Name, but the guy who did it make a mistake in the name, so he changed it after to have activate the licence. I think this has created a second container. The licence is actived on the other container.
Last updated: 2026-02-06
Post by timvh on EXCEPTION [watchdog] how to find position cause
CODESYS Forge
talk
(Post)
Monitor what your current cycle time is (in the Task Configuration when you are online). If this is sometimes close to 200ms, then change your code (e.g. limit the loops, or prevent copying a lot of data between objects). Or just set the Watchdog time (or sensitivity) higher if you don't care that it sometimes takes longer than 200ms. If you want to find out which objects in your application consume the most time, then buy a PDE (Professional Developer Edition) license. With this you get a license for the Profiler. This can help you a lot to find the root cause, because it will create a nice overview of all objects, their calls and the time (percentage) it takes to execute it.
Last updated: 2026-02-09
Post by konstantin on CAM Motion Recover after STO
CODESYS Forge
talk
(Post)
Hello, one of the projects I work on is about a racetrack collator with two independent belts on it - two different servo motors. Both motors share the same mechanical frame and there is a train on a belt that collects items from the input conveyor. The way the motion is performed is the following - there is a virutal master axis and both real axis are synchronised with different cam motion profiles. The problem is when an STO is triggered on any of the slave axis, the synchronization process starts from position 0 of the slaves. How can I force the slaves to retain their current position until the master passes their position? Then the slaves should catch up with the master according to the profile, the slaves should not start synchronization from 0 position. Best Regards Konstantin Kolev
Last updated: 2026-02-12
Post by konstantin on Lenze i950 Servo and WAGO PFC200
CODESYS Forge
talk
(Post)
Hello, basically the i950 drive support CiA402 Basic and CiA402 Advanced modes. I attached pictures of both mode supported functions. It also support CSP, VL, CSV and CST modes. It seems the homing mode is in CiA402 Advanced mode but how can you not have the homing mode in both modes? It is a vital part of any servo system. If I use the SoftMotion standard demo mode, I can move the servo absolute and relative but cannot home it. But in SoftMotion Light mode, I cannot execute any motion function. Here is the official manual for i950 servo drive - i950 Documentation Best Regards Konstantin Kolev
Last updated: 2026-02-13
Post by gseidel on CAM Motion Recover after STO
CODESYS Forge
talk
(Post)
Dear Mr. Kolev, I'm not sure I understood correctly. But this is my take on your question: When the STO of the slave is triggered, store the current master position (e.g. 225 units) After the reset of the slave error, call MC_SetPosition on the virtual master and reset it to the stored position (225 units) Optionally, before MC_CamIn is restartet, move the slave back to the slave position corresponding to the stored master position. (If you do this, no ramping in will be necessary) Restart MC_CamIn, with absolute master position and absolute slave position. Choose the StartMode that is appropriate for your machine. Best regards, Georg Seidel
Last updated: 2026-02-16
Post by gordonkeller360 on Escape character behavior for hex values in string -- what gives?
CODESYS Forge
talk
(Post)
I have a program which sequentially places byte representations of characters from a string into an array. FUNCTION_BLOCK MoveBytesFromString VAR_IN_OUT abRxBuf: ARRAY [0..79] OF BYTE; END_VAR VAR testString : STRING := '$0A$R$L$TTesting,123...$94$86$0A'; iCount: DINT; END_VAR ---------------------------------------------------------------------------------------- // clear the buffer MEM.MemFill(ADR(abRxBuf), 80, 0); FOR iCount := 0 TO LEN(testString) - 1 DO // account for undesired null terminator of string abRxBuf[iCount] := testString[iCount]; END_FOR Escaped characters, like $T, $N, etc. work just fine, and so do their hex representation counterparts ($09, $0A, etc). However, when I put something like $94, I get a set of nonsense values... see image attached after one spin of the program. Could someone explain to me what is happening here? I'll continue to investigate...
Last updated: 2026-03-09
Post by poliautomacao on Absolute movement controlled by an external encoder.
CODESYS Forge
talk
(Post)
Hello, I made this configuration, I'm moving the encoder value to SM_Driver_PosControl.in.wActPosition. When I make the absolute movement of my PosControl axis, my physical drive axis rotates perfectly, but I noticed that the movement is not followed by the encoder. That is, if I hold the encoder and keep it in position 0, the PosControl axis makes the absolute movement of 314 mm and stops, which is strange because the encoder is at 0. Theoretically, the PosControl axis should accelerate to try to compensate for the movement error. I haven't yet achieved perfect functionality.
Last updated: 2026-03-24
Post by jorenbeyl on library inside library
CODESYS Forge
talk
(Post)
I am currently developing a library that contains real‑time data. To handle this real‑time data, I am using additional libraries called SysTime and SysTypes Interfaces. When I compile my library on its own, no errors occur. However, when I use this library in a project and compile the project, I get an error indicating that the SysTime data type is not recognized. This happens even though the SysTime library is visible as a dependency under my library. Does anyone know how to correctly include a library within another library so that the project recognizes the sub‑library without causing compilation errors?
Last updated: 2026-04-23
Post by polo on 1 Wire und i2c zeitgleich in Betrieb
CODESYS Forge
talk
(Post)
Hallo zusammen, ich habe schon einige Zeit 16 DS18B20 am 1 Wire laufen ... auch die ganze Zeit stabil ... jetzt habe ich ein PWM Signal über i2c für eine Pumpenansteuerung zusätzlich in Betrieb genommen.. nur das Signal für die Pumpe geht über i2C ... 100Hz 10ms. Es läuft auch alles soweit ... nur fallen mir jetzt die Temperaturen in Abständen aus ... Vertragen sich die beiden Systeme zeitlich evtl. nicht so gut ... 1 wire extra task mit 200ms Prio 0 i2c task 10ms ... damit die 100Hz auch übertragen werden Prio 1 (Adafruit_PWM) Main Task 20ms Prio 5 Oder jetzt besser beides über i2c abrufen ... ist aber dann evtl. für die DS18B20 zu schnell ? Oder sind die 5V vom Pi jetzt zu schwach für beide Signale? Vielen Dank euch
Last updated: 2026-04-27
Post by kurt9 on ReadWriteEEprom FB question
CODESYS Forge
talk
(Post)
I want to programmatically write the alias address to a new EtherCAT slave when I plug it into my IPC EtherCAT network. I am looking at the ReadWriteEEprom FB and see that one of the elements is "pbyData". which is the pointer to byte that is usually set to 2048 bytes. Since I am setting the alias address to the EEprom only (EEprom address 16#0012), I would assume that what I am writing is 2 bytes only. Does the pbyData have to be specified as ADR(myArray) where "myArray" is the 2 bytes of the alias address? How is the best way to set this element of the function block? Thanks in advance
Last updated: 2026-05-18
Post by baotthitawat on Cloud SCADA for Industrial Energy Monitoring
CODESYS Forge
talk
(Post)
Recently I’ve been exploring ATSCADA iEnergy Tools for SCADA-based energy monitoring systems. One thing I find interesting is how modern SCADA platforms are evolving beyond traditional machine monitoring. Many industrial systems are now using Cloud SCADA architectures for centralized energy management, remote dashboards, and operational analytics. ATSCADA iEnergy Tools supports: Real-time energy monitoring Historical data logging MySQL integration Reporting and Excel export Remote SCADA dashboards Cloud-based monitoring systems I think this type of solution is practical for factories, power monitoring applications, building management systems, and other industrial automation projects where energy optimization is becoming increasingly important. Industrial automation is clearly moving toward web-based and cloud-connected SCADA platforms, especially as more facilities focus on digital transformation and smarter energy management
Last updated: 2026-05-26
Post by baotthitawat on Cloud SCADA for Industrial Energy Monitoring
CODESYS Forge
talk
(Post)
Recently I’ve been exploring ATSCADA iEnergy Tools for SCADA-based energy monitoring systems. One thing I find interesting is how modern SCADA platforms are evolving beyond traditional machine monitoring. Many industrial systems are now using Cloud SCADA architectures for centralized energy management, remote dashboards, and operational analytics. ATSCADA iEnergy Tools supports: Real-time energy monitoring Historical data logging MySQL integration Reporting and Excel export Remote SCADA dashboards Cloud-based monitoring systems I think this type of solution is practical for factories, power monitoring applications, building management systems, and other industrial automation projects where energy optimization is becoming increasingly important. Industrial automation is clearly moving toward web-based and cloud-connected SCADA platforms, especially as more facilities focus on digital transformation and smarter energy management
Last updated: 2026-05-26
Post by baotthitawat on SCADA Systems Are Becoming Easier to Integrate With Modern Applications
CODESYS Forge
talk
(Post)
One thing I’ve been seeing recently is that more industrial systems are starting to expose realtime SCADA data through APIs instead of keeping everything isolated inside the local monitoring software. This makes integration much easier for cloud platforms, mobile dashboards, AI analytics, and enterprise applications that need realtime industrial data. Instead of exporting reports manually or building complicated middleware, APIs allow external systems to access SCADA data directly in realtime. I think this becomes especially useful for applications like wastewater treatment monitoring, where operators need better visibility into alarms, equipment status, and operational conditions across different locations. Feels like modern SCADA is slowly evolving from a standalone monitoring platform into part of a larger connected industrial ecosystem.
Last updated: 2026-05-28
Post by baotthitawat on SCADA Systems Are Becoming Easier to Integrate With Modern Applications
CODESYS Forge
talk
(Post)
One thing I’ve been seeing recently is that more industrial systems are starting to expose realtime SCADA data through APIs instead of keeping everything isolated inside the local monitoring software. This makes integration much easier for cloud platforms, mobile dashboards, AI analytics, and enterprise applications that need realtime industrial data. Instead of exporting reports manually or building complicated middleware, APIs allow external systems to access SCADA data directly in realtime. I think this becomes especially useful for applications like wastewater treatment monitoring, where operators need better visibility into alarms, equipment status, and operational conditions across different locations. Feels like modern SCADA is slowly evolving from a standalone monitoring platform into part of a larger connected industrial ecosystem.
Last updated: 2026-05-28
Post by baotthitawat on SCADA Systems Are Becoming Easier to Integrate With Modern Applications
CODESYS Forge
talk
(Post)
One thing I’ve been seeing recently is that more industrial systems are starting to expose realtime SCADA data through APIs instead of keeping everything isolated inside the local monitoring software. This makes integration much easier for cloud platforms, mobile dashboards, AI analytics, and enterprise applications that need realtime industrial data. Instead of exporting reports manually or building complicated middleware, APIs allow external systems to access SCADA data directly in realtime. I think this becomes especially useful for applications like wastewater treatment monitoring, where operators need better visibility into alarms, equipment status, and operational conditions across different locations. Feels like modern SCADA is slowly evolving from a standalone monitoring platform into part of a larger connected industrial ecosystem.
Last updated: 2026-05-28
Post by baotthitawat on SCADA Systems Are Becoming Easier to Integrate With Modern Applications
CODESYS Forge
talk
(Post)
One thing I’ve been seeing recently is that more industrial systems are starting to expose realtime SCADA data through APIs instead of keeping everything isolated inside the local monitoring software. This makes integration much easier for cloud platforms, mobile dashboards, AI analytics, and enterprise applications that need realtime industrial data. Instead of exporting reports manually or building complicated middleware, APIs allow external systems to access SCADA data directly in realtime. I think this becomes especially useful for applications like wastewater treatment monitoring, where operators need better visibility into alarms, equipment status, and operational conditions across different locations. Feels like modern SCADA is slowly evolving from a standalone monitoring platform into part of a larger connected industrial ecosystem.
Last updated: 2026-05-28
Post by alex-n on Problem with keeping up the distance between two axes
CODESYS Forge
talk
(Post)
Hello. I have a task to synchronize the movement of two axes and maintain the distance between them. First axe makes equal steps by trigger using MC_MoveRelative function. The second one is standstill and after another signal should catch up the first one from its position to a specified distance and keep it. I've tried to use MC_Phasing and mostly it works. Second axis catches up the first and starts make step with it. But in one moment this axis can crash into the first and there is no clear connection as to why this is happening. It can work correct for a day or for a week.
Last updated: 2026-06-04
Post by thommy54 on CODESYSControl_User cfg richtig konfigurieren
CODESYS Forge
talk
(Post)
Hallo, nach Erwerb eines neueren Raspberry pi 4 (V1.5) musste ich zwangsläufig von Codesys 3.5.16 hochwechseln - ich habe auf 3.5.20.1 geupdated. Da schlugen mir plötzlich ne Menge Einschränkungen entgegen, deren Behebung einige Zeit dauerte. Eine davon ist, das ein SysFile.SysFileOpen nicht mehr funktioniert. Ich habe das Problem mit Einträgen in der /etc/CODESYSControl.cfg behoben: [SysFile] FilePath.1=/etc/, 3S.dat IecFilePath.1=/proc/, cpuinfo IecFilePath.2=/proc/, iomem PlaceholderFilePath.1=/sys/devices/w1_bus_master1, $OneWire$ PlcLogicPrefix=1 ; ; ---------------------- ; selbst eingefügt PlaceholderFilePath.2=/home/root, $my_home_root$ PlaceholderFilePath.3=/etc/init.d, $my_conf$ PlaceholderFilePath.4=/var/lib/mpd, $my_music$ PlaceholderFilePath.5=/root/Rasp_SPS_Filesystem, $my_Rasp$ Ob die Einträge sich etwas überlappen, kann mir gern jemand sagen, das ist aber nicht das Problem. Ich habe bei den vielen Versuchen, das Teil zum Laufen zu bringen, bemerkt, daß die Einträge auch ganz schnell mal verschwinden. Das ist ja auch so beschrieben, wenn die nächste Version kommt, sind meine Einträge weg. Da ich ähnliche Probleme mit dem Funktionieren von "SysProcessExecuteCommand2()" hatte, die ich ebenfalls mit Einträgen in die /etc/CODESYSControl.cfg hätte beheben können, habe ich gelesen, das man "private" Einträge lieber in die Datei /etc/CODESYSControl_User.cfg machen soll. Gesagt getan und "SysProcessExecuteCommand2()" lief: [SysProcess] Command=AllowAll Command.0=shutdown Aber auch irgendwo stand, das so ein Beteichner wie [SysFile] oder [SysProcess] nur einmal in den beiden Files /etc/CODESYSControl.cfg oder(!) /etc/CODESYSControl_User.cfg vorkommen darf. Das ist nun die eigentliche Frage! Ist das so ? Bei [SysProcess] ist das kein Problem, das gibt es in /etc/CODESYSControl.cfg nicht. Aber bei [SysFile] sieht das anders aus. Da sind 5 Zeilen schon in /etc/CODESYSControl.cfg drin. Würde ich diese in die User-Datei rüberschieben, könnte beim nächsten Update was fehlen oder, oder... Lasse ich es so wie es ist, sind meine Einträge beim Update weg - das sollte ja verhindert werden. Kann da jemand genaue Auskunft geben ?? Vielen Dank Thomas
Last updated: 2024-06-28
Post by thommy54 on Raspi-Cam: CameraStream.project nicht zum Laufen zu bringen
CODESYS Forge
talk
(Post)
Hallo, Ich bringe das CameraStream.project nicht zum Laufen. Ich sehe die Ursache darin, das das Beispielprogramm sehr sparsam mit Programm-Kommentaren umgeht (von der Hilfe gar nicht zu reden). Ich habe beide Varianten bei der zu ändernden Zielvariable getestet: //copy video.htm to the webserver; //the location of the webserver depends on the used Apache version as mentioned in online help hDirHtmlTest:=SysDirOpen( szDir:='/var/www', pDirInfo:= ADR(dirInfo), diMaxDirEntry:=iMaxDirEntry, szDirEntry:=szDirEntry, pResult:=ADR(iDirHtmlError)); IF (iDirHtmlError = 0) THEN SysDirClose(hDir:=hDirHtmlTest); SysFileCopy('/var/www/video.htm', '$$PlcLogic$$/Application/video.htm', ADR(dwCopySize)); ELSE .... als auch hDirHtmlTest:=SysDirOpen( szDir:='/var/www/html', pDirInfo:= ADR(dirInfo), diMaxDirEntry:=iMaxDirEntry, szDirEntry:=szDirEntry, pResult:=ADR(iDirHtmlError)); IF (iDirHtmlError = 0) THEN SysDirClose(hDir:=hDirHtmlTest); SysFileCopy('/var/www/html/video.htm', '$$PlcLogic$$/Application/video.htm', ADR(dwCopySize)); ELSE .... Die Url-Streams habe ich gelassen wie sie vorgegeben waren: urlStream := CONCAT('http://', CONCAT(sIPAddress, '/video.htm')); urlPicture := CONCAT('http://', CONCAT(sIPAddress, '/cam_pic.php')); In der Webvisu im Browser komme ich maximal dahin wie im Screeshot Video_Visu_1 zu sehen. Also scheint der Link zu video.htm zu klappen. Das der zu cam_pic.php nicht klappt, wundert mich nicht, denn es existiert nicht und wird auch nicht evtl. am rechten Ort angelegt. Ich bin mir vollkommen im Unklaren: muss da was auf dem Raspberry Pi im Hintergrund laufen , z.B. raspivid . Welcher Programmteil bedient die Cam ? Ich erkenne auch nicht, wo ein einzelnes picture entstehen soll. Wäre dankbar, wenn ich hier etwas Hilfe bekommen könnte. Evtl. gibt es Probleme mit der von mir verwendeten Codesys-Version 3.5.20.1 ? Ich benutze einen Raspberry 4 Rev.1.2. Grüße Thomas
Last updated: 2024-07-04
Post by paulpotat on cm4 runtime problem
CODESYS Forge
talk
(Post)
Hello, I have exactly the same issue, with the following configuration : Hardware version >>> cat /proc/cpuinfo processor : 0 model name : ARMv7 Processor rev 3 (v7l) BogoMIPS : 108.00 Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xd08 CPU revision : 3 processor : 1 model name : ARMv7 Processor rev 3 (v7l) BogoMIPS : 108.00 Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xd08 CPU revision : 3 processor : 2 model name : ARMv7 Processor rev 3 (v7l) BogoMIPS : 108.00 Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xd08 CPU revision : 3 processor : 3 model name : ARMv7 Processor rev 3 (v7l) BogoMIPS : 108.00 Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xd08 CPU revision : 3 Hardware : BCM2711 Revision : a03141 Serial : 10000000d5be5b5f Model : Raspberry Pi Compute Module 4 Rev 1.1 Kernel version >>> uname -a Linux raspberrypi 6.1.21-v7l+ #1642 SMP Mon Apr 3 17:22:30 BST 2023 armv7l GNU/Linux OS Version >>> cat /etc/os-release PRETTY_NAME="Raspbian GNU/Linux 11 (bullseye)" NAME="Raspbian GNU/Linux" VERSION_ID="11" VERSION="11 (bullseye)" VERSION_CODENAME=bullseye ID=raspbian ID_LIKE=debian HOME_URL="http://www.raspbian.org/" SUPPORT_URL="http://www.raspbian.org/RaspbianForums" BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs" /boot/config.txt I added the following line : arm_64bit=0 CodeSys runtime version 4.10 Were you able to solve the issue @michelebianchi ? Any help with this would be appreciated... BR
Last updated: 2024-08-28
Post by otbeka on CAA File Handling: "Read only" error
CODESYS Forge
talk
(Post)
Hi, On CODESYS V3.5.19.50 I am using the latest 3S File Access library (CAA File & CAA Types) to save and retrieve configuration data from the User Data section of an SD card, via file called config.txt. The application reads the file to memory once upon initialisation, and then the only other operation is overwriting the file with the updated configuration whenever the user changes the settings. An issue is ocurring, seemingly randomly, where the config.txt file, and all surrounding directories, cannot be written to by the unit, returning a READ_ONLY_CAA error upon file open. This sometimes does not clear even after power-cycling the PLC several times, yet checking the file permissions with ls -l shows normal read, write, and execute access. I am wondering if this is caused by the PLC itself or by an issue in my application. I have included my CAA File handler function block (SD_Card_Bin(FB).txt) and any associated types/calls below: TYPE ConfigData : STRUCT Config : ARRAY[0..256] OF STRING(64); NumberOfStrings : UDINT; END_STRUCT END_TYPE TYPE Buffer : STRUCT Data : ARRAY[0..SIZEOF(ConfigData)] OF BYTE; DataLength : UDINT; END_STRUCT END_TYPE A case within my MAIN PRG: mode.WriteConfigDataToFile: VisuElems.CURRENTVISU := 'Screen_Write'; IF xModeHasChanged THEN iErrorCount := 0; iRoute := 0; END_IF CASE iRoute OF 0: inBuffer := ConfigData_To_Buffer(GVL.UnitData); xConfigError := FALSE; xDataConfigured := FALSE; iRoute := 1; 1 : //Read Data from Card SD_Card_Bin.strFileName :=FileName; SD_Card_Bin.iFileOperation := 2; SD_Card_Bin(xExecute :=TRUE, WriteBuffer := inBuffer, xDone =>xDataConfigured, xError=>xConfigError, strErrorCodes=>strError); IF xDataConfigured THEN SD_Card_Bin(xExecute :=FALSE); IF xConfigError THEN iRoute := 32767; ELSE iRoute :=100; END_IF END_IF 100: // The end bCurMode := mode.DisplayProcessVariables; 32767: // Config error iErrorCount := iErrorCount + 1; IF iErrorCount > 2 THEN // Repeats 3 times, if no progress abandons and returns error bCurMode := mode.WriteError; ELSE iRoute := 0; // Try again END_IF END_CASE I'd like to rule out my application as the cause of this bug - help via comments or criticism would be greatly appreciated.
Last updated: 2025-03-19
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.