Post by koerbejm on Probleme beim aktivieren von Lizenzen
CODESYS Forge
talk
(Post)
Liebe Codesys-Gemeinde, ich habe folgendes Problem und bitte um Hilfe: Um eine auf meinem dem Raspberry Pi laufende Steuerung ohne groĂe MĂźhe duplizieren zu kĂśnnen, habe ich mir ein Image der SD Karte mit Win32 Diskimager erstellt. Dieses konnte ich bisher ohne weitere Probleme auf eine weitere Micro-SD karte ausrollen. AnschlieĂend habe ich mich via Putty auf den PI geschaltet, die vorherige Lizenz (die ja fĂźr den vorheringen PI zulässig war) gelĂśscht Ăźber - sudo su - rm -r /var/opt/codesys/cmact_licenses/ - reboot Um dann via Codesys 3.5 SP16 Patch 4 eine neue Lizenznummer ">>Tools>Lizenzmanager>Lizenz aktivieren" zu aktivieren und das wars. Durch die Umstellung des Lizensierungsverfahrens klappt diese Variante nun nicht mehr. Ich habe mir neue Lizenzen von Codesys gekauf, doch sobald ich diese in die Ticket-ID eintrage und aktivieren mĂśchte bekomme ich folgende Fehlermeldung: ReturnCode: 403046401, An internal error has occured. Please try it again later. (siehe Bild im Anhang "Fehler_Codesys3.5V16.png") Ich habe dann meine Codesys-Version auf Version 3.5 SP20 geupdated und das selbe versucht mit dem Resultat, dass ich nun folgende Fehlermeldung erhalte: "Der ausgewählte Container "...." paĂt nicht zu Ihrem Ticket. Bitte wählen Sie einen passenden aus." --> Siehe Bild im Anhang "Fehler_Codesys3.5V120.png" Was genau kann/muss ich tun, damit ich einfach wie bisher meine Steuerungen duplizieren kann? Verwendete Hardware: Raspberry Pi 3 Model B+ Verwendete Lizenz: Codesys Control Basic L Viele GrĂźĂe und Danke, Jan
Last updated: 2024-10-23
Post by etienneneu on loading delay with the option "check client animations and overlay of native elements"
CODESYS Forge
talk
(Post)
Hey NicolaG_89, thanks for the tip. But I have seen in the developer tools of the Webclient that a multiple fetching of the image and script data occurs when changing frames (HTTP code 304 NOT Modified), although these are already in the clients cache, which leads to unnecessary loading of resources from the web server. This behavior can also be found if the option âSupport client animations and overlay of native elementsâ is deactivated, but this does not lead to such long delays. I had already tested loading all Visu elements so that everything was fetched once before they could be used. But that didn't help either. To prevent this behavior (permanent fetching), I have used a different way of switching the Visu elements in the VisuDemo Project, which also uses HTML5 control elements. I implemented this with the visibility of entire Visu elements. As a result, it only has to be fetched once and does not have to be fetched again when reloading. But I am still unsure about this implementation if the scope of the visualization becomes larger, as the Codesys visualization documentation advises against using many invisible elements. Best regards Etienne
Last updated: 2024-11-19
Post by hyys12 on Help understanding analog in-/outputs
CODESYS Forge
talk
(Post)
Hello. I am currently working on a WAGO PLC, where I am trying to wrap my head around how the analog inputs and outputs work in codesys. I have looked far and wide on the internet, for a general introduction to the whole concept, but I have not had any luck with finding anything that helped me understand it better. The whole goal is for me to be able to read an analog input from a temperature sensor, as well as using an analog output, to control a frequency inverter. I know these have nothing to do with each other, but that is all I have on hand right now. I am trying to program this using Ladder Diagram. The only thing is, that every video/guide I have seen/read using LD, just adds a whole lot of function blocks, to do all kinds of stuff they don't explain. My general question is, how would one go ahead and read the analog input, as well as transmit an analog output? Is there some kind of specific function block I would have to use for this, or some great video I can watch, to understand the inner workings. Is it somehow possible to see the values the PLC recieved/sends? Regards.
Last updated: 2024-12-11
Post by dom4u on Using PEAK CAN PCIe card (IPEH-004040) with Codesys Control RTE V3
CODESYS Forge
talk
(Post)
Some findings on this issue: PEAK CAN Driver is the same as in every PCI card from PEAK. I updated the inf file. Here are my steps: 1. Include right VendorID into the *.inf file 2. Disable Windows driver check (Disable WHQL check). This you need because 3S driver is not certified. You will find steps via google or ask chatgpt :) 3. Select: Select driver from a list and navigate to the folder. Say yes to install an uncertified driver. 4. Driver installed and device without errors I did the same with CAN Card from ESD, but here you dont need to include the vendor ID. In ANY CASE it was not successful. The RTIOwdmgeneric is not available in Codesys or anyhow accassable :( I wonder that it fails in two cases, two suppliers, two driver in the same way. How can RTIOwdmgeneric implemented into the project?
Last updated: 2024-12-20
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 trusty-squire on Strange problem with the âMC_SetPositionâ function
CODESYS Forge
talk
(Post)
Here, it seems to me that we are getting completely off track with the observed problem. If questions clarifying the details of the installation are problematic, it's best to include those details in the original question then... 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. Testing the full program in emulation is entirely different from creating a simplified program to isolate the function causing problems in the real world. I would recommend trying it to isolate the issue. 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 A simple "yes" is the correct answer to my question here... Anyways, you seem to be a very knowledgeable expert, good luck on your problem!
Last updated: 2025-01-18
Post by pikebuster on Help for a newbie
CODESYS Forge
talk
(Post)
Can somebody help me with this? I have problem with the button! This task must be solved using Sequential Function Chart (SFC), IEC 61131-3. TASK Create an SFC program to control a traffic light at an intersection. Description: You will program a traffic light that has three phases: Green, Yellow, and Red. The traffic light must follow these rules: Green light is on for 10 seconds. Yellow light is on for 3 seconds. Red light is on for 10 seconds. If the pedestrian button is pressed, the system must keep the red light on for 20 seconds during the next cycle. After the pedestrian has âcrossed,â the system should return to its normal cycle. Basic Steps: Initialization: Start by setting the traffic light to Red. Green Phase: After 10 seconds, switch to Green. Yellow Phase: After 10 seconds in the Green phase, switch to Yellow. Red Phase: After 3 seconds in the Yellow phase, switch back to Red. Loop: Repeat the cycle. Use, for example, lamp symbols in the visualization module to simulate the traffic light. You may also add a simple pedestrian light if desired.
Last updated: 2025-03-11
Post by astutoski on No Motion with SM3_RaspiStepper (GPIO 23/24 Show No Pulses)
CODESYS Forge
talk
(Post)
Hi everyone, Iâm completely new to CODESYS and have been teaching myself. And i Want to control an Axis using SM3RaspiStepper. Following the example on the RaspiStepper home page, I set up an axis through a POU and tied the SMC_StartupDrive (Visu) template to my axis instance (sud). Unfortunately, the motor never moves and I donât see any pulses on the PULSE pin (GPIO 23). Hardware -Raspberry Pi 4 B -Nema 17 stepper motor -A4988 stepper driver (EN pin permanently tied to GND) Software / Runtime -CODESYS 3.5 SP21 Patch 1 â Raspberry Pi runtime (demo) -SoftMotion in demo mode -Package: SM3_RaspiStepper 0.0.0.6 Axis parameters: Pulse pin GPIO 23 Direction pin GPIO 24 Enable pin 0 (unused) Disable pin 0 (unused) Whether I start the axis from the visualization template or through Online Config Mode, the motor never spins. In Online Config Mode I press Power â the state changes from Standstill to Discrete_Motion, but the motor shaft is still locked and no step pulses appear on GPIO 23 (checked with a scope). I can provide screenshots of the Visualization, PLC logs, or wiring pictures if that helps. Any ideas on what I might be missing? Happy to provide screenshots, project files, or scope captures if that helps. Thanks in advance!
Last updated: 2025-06-25
Post by leandroct on Error reading files after runtime update from 4.0.0.0 to 4.8.0.0
CODESYS Forge
talk
(Post)
Since version 19 they changed how file access is handle. There are two solutions: 1. You change where the file is stored (need to go to: /PlcLogic/) 2. You can, if you don´t want to store at PlcLogic, add the following line in the CODESYSControl.cfg under [SysFile]: ForceIecFilePath=0 The CodesysControl.cfg is at C:\ProgramData\CODESYS\CODESYSControlWinV3x64\xxPROJECT_NUMBERxx\ Here the email they sent me: "with the 3.5.19 Version we changed how files are handled. See following issue: CDS-81506 - CODESYS Control SysFile system file access vulnerability. There are two solutions: 1. You change where the file is stored (need to go to: /PlcLogic/) 2. You can, if you don´t want to store at PlcLogic, add the following line in the CODESYSControl.cfg under [SysFile]: ForceIecFilePath=0 Here is the official release-note: [[COMPATIBILITY_INFORMATION]] With the activation of ForceIecFilePath the file access from IEC is now restricted to the configured paths only (file sandbox)! [SysFile] ForceIecFilePath=1 (new default) The standard path is the current directory, the PlcLogic subfolder or a configured path. Every file access outside of this path is configured via PlaceholderFilePath, for example access to temporary files or removable media: [SysFile] PlaceholderFilePath.1=/tmp, $TMP$ PlaceholderFilePath.2=/media/usb, $USB$ PlaceholderFilePath.2.Volatile=1 For more information see our tutorial FilePath & Placeholders. To restore the old behavior ForceIecFilePath may be configured as follows: [SysFile] ForceIecFilePath=0 BUT WE HIGHLY RECOMMEND TO LEAVE THIS SETTING AT ITS NEW DEFAULT VALUE! "
Last updated: 2024-05-07
Post by jeindhoven on Deploying to raspberry pi 5 hangs
CODESYS Forge
talk
(Post)
Yep sure, though now that i think of it, its a pi 4. My bad. The whole ordeal was necessary to use the VGA666 adapter. That needs the old graphical system and GPIO directly on the CPU. Edit: Putty on the virtual development machine connects fine. But i did change the login/pw. The account is still a sudo'er so that should be all right. Edit2: Sorry i get a "Comment rate limit exceeded" from the forum. Then i'll add it as edit here. So i have tried the stock raspberry pi image on a different pi5 (truly 5 this time). Packages updated. Standard password. Same symptoms, no runtime deployed and long hang time. Versions of this pi: pi@raspberrypi:~ $ uname -a Linux raspberrypi 6.12.25+rpt-rpi-2712 #1 SMP PREEMPT Debian 1:6.12.25-1+rpt1 (2025-04-30) aarch64 GNU/Linux pi@raspberrypi:~ $ lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 12 (bookworm) Release: 12 Codename: bookworm pi@raspberrypi:~ $ apt list --installed | grep openssh-server openssh-server/stable,now 1:9.2p1-2+deb12u6 arm64 [installed,automatic] Attached is the Device information and error text that Codesys comes up with. Edit 3 (Comment rate limit, otherwise it would be a new post) Now i have tried booting an older native Windows 10 machine (no virtualization), and it just works as expected. I have now a raspberry pi 4 and raspberry pi 5 with version 4.16.0.0 of the control application. Windows 10 native: build 19045 (same as virtualised Win 10), same .NET version, same CODESYS version. It seems that running CODESYS virtualized somehow messes with the deployment?
Last updated: 2025-06-23
Post by drbuzz on Communication Error (#0) for IFM controller
CODESYS Forge
talk
(Post)
Hi Folks, Every time I use an IFM controller I always seem to run into a problem connecting to it. I get the Communications Error (#0). So I thought I would share some tips and tricks. Once the CANfox Cable (EC2112) cable driver is installed, you can use the yellow app in the sys tray to blink the lights on the cable. Confirm the cable works in the IFM maintenance software by connecting to the controller and reading the information on it. Make sure to download an OS into the controller (the light will go from a fast blink to solid green). In Codesys V2.3, the communication settings for the CR0401 is 250kBaud by default and Node ID 127. What got me, was I needed to reboot the computer after the cable driver install. Also if your application has canbus settings in it which are changed from default, after the controller is power cycled, the new Node ID and Baud will be in effect. I made a handy guide because too much time has been wasted on this. Programming IFM CR0401 Serial/Can Programming Cable ⢠Connect IFM EC2112 CanFox programming cable with connector adapter. ⢠Make sure cable is linked to VM (if using VM). ⢠Install drivers for cable if not installed. o Download from IFM EC2112 site. https://www.ifm.com/ca/en/product/EC2112 ⢠Once Installed, reboot computer. ⢠In system tray, there should be a yellow icon that you can open and check on programming cable. Select the cable in the list and flash the lights to confirm it is working. Maintenance Software ⢠Install IFM Maintenance Tool Software. o Download from IFM Site. https://www.ifm.com/ca/en/download/eco100_MaintenanceTool ⢠Open IFM Maintenance software ⢠Select Basic System ⢠Select CAN cable ⢠It will tell you if you donât have a cable connected. ⢠Use Wizard if needed. ⢠Read Channel Parameter on the Settings page, or get Identity in the System Information > Identity. ⢠Default Node is 127 on a new unit. Baud is 250kBaud (bits/sec) ⢠Controller information should populate. ⢠Controller green light should be blinking at 5hz (meaning OK but no OS, just bootloader). ⢠Click Software > Load. ⢠Open the OS file. Should match Codesys version selection (for CR0401 this is version 3). o Download OS file from IFM Website. https://www.ifm.com/ca/en/product/CR0401 o It is located at the top of the download under âsoftware for CR0401â. o Select the file and load it⌠this will take a minute. ⢠Once completed the unit should now have a solid green light o Solid green means the controller has an OS but no application is running. Codesys V2.3 Application ⢠Codesys needs to be downloaded and installed from the IFM website as it has the IFM libraries and license to use the software. o Download from the IFM CR0401 page. o https://www.ifm.com/ca/en/product/CR0401 ⢠Create new application with the correct IFM controller or Open Codesys application. ⢠Keep in mind that the PLC Configuration on the Resources tab can be changed for the CAN communication interface⌠so changes to node and baud will take effect after the first download and reboot of the controller. ⢠Go to âOnlineâ in the top menu and change âCommunication Parametersâ o The Local dropdown shows the last configuration used. All other interfaces will show below it and need to be updated when changed or used. o Confirm Node ID is 127 for the first download. ď§ The NodeID will change to whatever the program has after (in my case 125). ď§ Node Send Offset should be default at 1536 ď§ Node Recv Offset should be default at 1408 ď§ Can bus Baudrate should be 250 kbaud. ď§ Yes to Motorola Byte Order ď§ Block Transfer should be false and note used (60 is default setting). ď§ Can Card Driver should match the systray item which is Sie_USB. ⢠If the system populated the other one, just update and relay the communication parameters. The software will usually bring up the available cable and driver. ⢠Go to âOnlineâ and Login to download. o Press Yes to Download Application. I hope this helps!
Last updated: 2025-03-21
Post by bbm1995 on Camera RTSP Feed
CODESYS Forge
talk
(Post)
Hi dgrard, I had the same issue for a long time, but on a WAGO webvisu. Now I'm glad that I can share my solution. I don't know if you are trying to use the webvisu or the target visu, but this works on webvisu: Get "go2rtc" and set it up according to the documentation. I'm running the Windows binary. Here's my example of the go2rtc.yaml config file (contains working example streams): api: listen: ":1984" # default ":1984", HTTP API port ("" - disabled) origin: "*" # default "", allow CORS requests (only * supported) static_dir: "www" # default "", folder for static files (custom web interface) tls_listen: ":443" # default "", enable HTTPS server tls_cert: "./SSL/fullchain.pem" tls_key: "./SSL/privatekey.pem" streams: # Streams with multiple links will fall back on the next link. ABUS TVIP48511: - rtsp://<username>:<password>@<hostname>:<port>/ch1/main - rtsp://<username>:<password>@<hostname>:<port>/ch1/sub # Diagnostic connections Kirchhoff Institute for Physics - Germany: http://pendelcam.kip.uni-heidelberg.de/mjpg/video.mjpg Blanton Bottling, Kentucky - USA: http://camera.buffalotrace.com/mjpg/video.mjpg Tokyo - Japan: http://61.211.241.239/nphMotionJpeg?Resolution=320x240&Quality=Standard Tampere Hacklab - Finland: http://tamperehacklab.tunk.org:38001/nphMotionJpeg?Resolution=640x480&Quality=Clarity Soltorget Pajala - Sweden: http://195.196.36.242/mjpg/video.mjpg Kaiskuru Skistadion - Norway: http://77.222.181.11:8080/mjpg/video.mjpg webrtc: listen: ":8555" #ice_servers: # - urls: [ "stun:localhost:3478" ] # username: "" # credential: "" Access the webinterface of go2rtc and get the link of your stream. Use the link as for your browser frame in the visualization. Depending on your device, you need to be able to access the file /etc/lighttpd/lighttpd.conf or /etc/lighttpd/webvisu.conf and change the contents similar to this one, otherwise you'll get CORS and CSP errors in the browser and you won't be able to view the stream on the webvisu: # Webvisu specific settings $SERVER["socket"] =~ port_webvisu_used_any { url.redirect += ( "^/webvisu/?$" => "/webvisu/webvisu.htm" ) $HTTP["url"] =~ "^/webvisu/?" { var.response_header_policy_webvisu = ( # CSP for WebVisu, allowing inline sources. "Content-Security-Policy" => "default-src 'self' 'unsafe-inline'; media-src *; frame-src *", # CORS for WebVisu, allowing any origin to access. "Access-Control-Allow-Origin" => "*", # Tell older browsers that this page can only be displayed if all ancestor # frames are same origin to the page itself. "X-Frame-Options" => "SAMEORIGIN" ) # Response header policy for WebVisu setenv.set-response-header = var.response_header_policy_webvisu setenv.set-response-header += var.response_header_policy_common }
Last updated: 2023-11-14
Post by rkohser on Scripted Git clone / checkout being blocked by "Project Environment" popup
CODESYS Forge
talk
(Post)
Hi, I am trying to build a CI/CD pipeline around our codesys projects. The only entry point if the git url and branch, as we do not put our project file under source control, so we needed to find a way to git clone from the python scripting engine. This is currently how we do this : system.commands["Git", "Clone"].execute( "ProjectLocation=" + project_dir, "ProjectName=" + project_file_name, "RemoteUrl=" + project_git_remote_url, "GitProjectStoragePath=" + project_git_local_dir, ) system.commands["Git", "Checkout", "Branch"].execute( "PrimaryProjectHandle=0", "BranchName=origin/" + project_git_branch ) This works fine, except that, depending on the environment and the project, the "Project Environment" popup gets displayed to suggest for some updates, and waits for a user interaction, even with the "--noUI" flag injected as parameter. I investigated the VersionUpdateFlags, but the problem is that the git clone is an atomic operation that clones and directly opens the generated project without the possibility to inject any updateFlags argument (only used in the ScripProjects.open() function. I also tried to simulate some keyboard events acknowledge the window from script but I did not find the right location for the SendKeys statement, I think before the git clone call is too early and after is too late. So I am wondering if there would be some other way to do that. Is there some more proper scripting api for the git add on ? Is there a global configuration of the VersionUpdateFlags that would allow the popup to be disabled outside from any project context ? Is there some way to automatically acknowledge this kind of messages in a "--noUI" mode ? What do you suggest ? Thanks for your help, Roland Edit : I managed to solve my problem by following these steps in my pipeline : - create a template of a project and opt file preconfigured not to open the popup - open this project - initialize an empty git repo - add the remote, fetch and checkout the needed branch -> no popup is displayed, hourra Edit2 : The initial question was raised on a CODESYS V3.5 SP18 Patch 2 profile. Since CODESYS 3.5.19.30 a scripting API is available for Codesys Git that allows cloning a project with the support of VersionUpdateFlags https://content.helpme-codesys.com/en/CODESYS%20Git/_git_using_scripting.html
Last updated: 2024-01-19
Post by gustavocsw on MQTT memory leak problem
CODESYS Forge
talk
(Post)
Hello everyone, I'm using the IoT Library to implement the MQTT communication with my local broker server in order to publish and subscribe at specifics topics to share and consume information about my application. But, it seems that are occurring some memory leak problem in a "high" frequency (more than 10 Hz) subscribe process. I follow the same method as in IoT Lib exemples, and at first looks perfect but my PLC was rebooting frequently and when I check its memory usage that was increasing as fast as the subscribe massage was sent. I'm using a WEG PLC410 and a WEG PLC500, and this error occurred in both of them (including in CODESYS Control Win x64). The application sends to the system a message JSON with the float payload Ex. {"data" : 0.8500}, but this happens with a INT, or BOL as well. I use the follow code in my application to find the value: //FindFirstValueByKey VARs PROGRAM JSON_VELO VAR //------Setting the JSON Subscriber to Set the Relay Value jsonDataVelo : JSON.JSONData; jsonByteArrayReaderVelo : JSON.JSONByteArrayReader; xST1okVelo : BOOL; FindFirstValueByKeyVelo : JSON.FindFirstValueByKey; jsonElementVelo : JSON.JSONElement; xDoneReaderVelo : BOOL; xDoneFindVelo : BOOL; //STRING and WSTRING for Subscribe the massage sPayloadJsonVelo : STRING := 'opa'; psPayloadJsonVelo : POINTER TO BYTE := ADR(sPayloadJsonVelo); //wsPayloadJsonRelaySet : WSTRING := "opa"; wsPayloadJsonVelo : WSTRING := STRING_TO_WSTRING('opa'); pwsPayloadJsonVelo : POINTER TO WORD := ADR(wsPayloadJsonVelo); lrVelo : LREAL; xKeepAliveVelo : BOOL; xSetVelo : BOOL; RSSet : RS; LIMPAR : STRING; //Find the msg end sFindVelo : STRING := '}'; psFindVelo : POINTER TO STRING := ADR(sFindVelo); iLenVelo : INT; iSizeVelo : INT := 12; udiContMsg : UDINT; END_VAR // FindFirstValueByKey CODE // Relay Set configuration xSetVelo := MQTT_SUBSCRIBER.RSVelo.Q1; IF xSetVelo THEN xKeepAliveVelo := TRUE; END_IF IF xKeepAliveVelo THEN udiContMsg := udiContMsg + 1; iLenVelo := TO_INT(StrLenA(psPayloadJsonVelo)); iSizeVelo := iLenVelo - TO_INT(MQTT_SUBSCRIBER.udiPayloadSizeVelo); StrDeleteA(psPayloadJsonVelo,iSizeVelo,iLenVelo); wsPayloadJsonVelo := STRING_TO_WSTRING(sPayloadJsonVelo); pwsPayloadJsonVelo := ADR(wsPayloadJsonVelo); //MQTT.ConvertUTF8toUTF16(sourceStart:= ADR(sPayloadJsonVelo), targetStart:= ADR(wsPayloadJsonVelo), dwTargetBufferSize:= TAM, bStrictConversion:= 1); //Reset jsonByteArrayReader jsonByteArrayReaderVelo ( xExecute := TRUE, pwData := pwsPayloadJsonVelo, jsonData := jsonDataVelo, xDone => xDoneReaderVelo ); FindFirstValueByKeyVelo( xExecute := xDoneReaderVelo, wsKey := "data", diStartIndex:= 0, jsonData := jsonDataVelo, jsonElement => jsonElementVelo, xDone => xDoneFindVelo ); IF xDoneFindVelo THEN lrVelo := jsonElementVelo.value.lrValue; //Reset jsonByteArrayReader jsonByteArrayReaderVelo ( xExecute := FALSE, pwData := pwsPayloadJsonVelo, jsonData := jsonDataVelo, xDone => xDoneReaderVelo ); FindFirstValueByKeyVelo( xExecute := FALSE, wsKey := "data", diStartIndex:= 1, jsonData := jsonDataVelo, jsonElement => jsonElementVelo, xDone => xDoneFindVelo ); xKeepAliveVelo := FALSE; GVL.xSetVeloRead := TRUE; END_IF END_IF And this to subscribe at the topic: //SUBSCRIBE VAR: //----------------- Subscribe Velocity ----------------------- MQTTSubscribeVelo : MQTT.MQTTSubscribe;//Variable MQTTSubscriber block -X - function-X wsTopicSubscribeVelo : WSTRING(1024) := "CORE/odometry/GET/data/simp"; // Topic to publish a message sSubscribeMassageVelo : STRING; udiPayloadSizeVelo : UDINT; xSDoneVelo : BOOL; xSErrorVelo : BOOL; xReceiveVelo : BOOL; eSTypeVelo : MQTT.MQTT_ERROR; eSMQTTErrorVelo : MQTT.MQTT_ERROR; RSVelo : RS; udiCont : UDINT; //SUBSCRIBE CODE: MQTTSubscribeVelo( xEnable:= MQTT_CLIENT.xConnection_Broker AND NOT xSErrorVelo AND NOT JSON_VELO.xKeepAliveVelo, pbPayload:= JSON_VELO.psPayloadJsonVelo, udiMaxPayloadSize:= SIZEOF(JSON_VELO.sPayloadJsonVelo), udiPayloadSize => udiPayloadSizeVelo, mqttClient:= MQTT_CLIENT.ClientMQTT, wsTopicFilter:=wsTopicSubscribeVelo, xDone => xSDoneVelo, xError=> xSErrorVelo, xReceived => xReceiveVelo, eMQTTError=> eSMQTTErrorVelo ); RSVelo(SET := xReceiveVelo, RESET1 := JSON_VELO.xKeepAliveVelo);
Last updated: 2024-09-09
Post by frank1001 on Codesys läuft nicht hoch
CODESYS Forge
talk
(Post)
Bin Neuling bei Codesys. Habe Codesys 64 Bit installiert (3.5.1) Nach dem Starten geht nur ein EIngabefenster auf mit folgenden Inhalt. Weiter passiert nichts. Was kann ich machen ? //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// _/_/_/_/ _/_/_/_/ _/_/_/_/_/ _/_/_/_/_/_/ _/_/_/_/_/ _/_/ _/_/ _/_/_/_/_/ _/ _/_/_/_/_/_/ _/_/_/_/_/_/ _/_/_/_/_/_/ _/_/_/_/_/_/ _/_/_/_/_/_/ _/_/ _/_/ _/_/_/_/_/_/ _/_/_/ _/_/ _/_/ _/_/ _/_/ _/_/ _/_/ _/_/ _/_/ _/_/ _/_/ _/_/ _/_/_/_/_/ // // // // // //// //// //// //// /////// // // // // // // // // // // ///// ////// ////// ////// ////// ////// // ////// /// //// //// ///// ////// ///// // ///// _/ //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>CM</cmp>, <id>0x00000001</id> <ver>3.5.19.20</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>CmpMemPool</cmp>, <id>0x0000001e</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>CmpLog</cmp>, <id>0x00000013</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>CmpSettings</cmp>, <id>0x0000001a</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysFile</cmp>, <id>0x00000104</id> <ver>3.5.19.20</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>CmpMemGC</cmp>, <id>0x0000001f</id> <ver>3.5.19.20</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysCom</cmp>, <id>0x00000100</id> <ver>3.5.19.10</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysCpuBreakpoints</cmp>, <id>0x00000305</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysCpuHandling</cmp>, <id>0x00000101</id> <ver>3.5.19.20</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysCrypto</cmp>, <id>0x00000141</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysDir</cmp>, <id>0x0000011b</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysEthernet</cmp>, <id>0x0000011c</id> <ver>3.5.19.20</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysEvent</cmp>, <id>0x00000102</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysExcept</cmp>, <id>0x00000103</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysFileStream</cmp>, <id>0x00000120</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysGraphicGDIPlus</cmp>, <id>0x0000012a</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysInt</cmp>, <id>0x00000106</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysInternalLib</cmp>, <id>0x00000107</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysMem</cmp>, <id>0x00000108</id> <ver>3.5.19.20</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysModule</cmp>, <id>0x00000109</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysMsgQ</cmp>, <id>0x0000010a</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysMutex</cmp>, <id>0x0000013a</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysNativeCommonControls</cmp>, <id>0x00000138</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysNativeControl</cmp>, <id>0x0000012f</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysOut</cmp>, <id>0x0000010b</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysPci</cmp>, <id>0x0000010c</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysPort</cmp>, <id>0x0000010d</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysProcess</cmp>, <id>0x0000010e</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysSem</cmp>, <id>0x0000010f</id> <ver>3.5.19.10</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysSemCount</cmp>, <id>0x00000139</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysSemProcess</cmp>, <id>0x00000119</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysShm</cmp>, <id>0x00000110</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysSocket</cmp>, <id>0x00000111</id> <ver>3.5.19.10</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysTarget</cmp>, <id>0x00000112</id> <ver>3.5.19.20</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysTask</cmp>, <id>0x00000114</id> <ver>3.5.19.10</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysTime</cmp>, <id>0x00000115</id> <ver>3.5.19.10</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysTimeRtc</cmp>, <id>0x00000127</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysTimer</cmp>, <id>0x00000116</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysWindow</cmp>, <id>0x00000117</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysWindowFileDialog</cmp>, <id>0x0000011a</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System|Dynamic: <cmp>SysTargetSoftMotion</cmp>, <id>0x00000112</id> <ver>3.5.19.20</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System|Dynamic: <cmp>SysCpuMultiCore</cmp>, <id>0x0000013d</id> <ver>3.5.19.20</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System|Dynamic: <cmp>SysReadWriteLock</cmp>, <id>0x0000013e</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpAlarmManager</cmp>, <id>0x0000007c</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpApp</cmp>, <id>0x00000002</id> <ver>3.5.19.20</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpAppBP</cmp>, <id>0x00000073</id> <ver>3.5.19.20</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpAppForce</cmp>, <id>0x00000074</id> <ver>3.5.19.20</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpAsyncMgr</cmp>, <id>0x0000005f</id> <ver>3.5.19.20</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpAuditLog</cmp>, <id>0x000000a1</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpBinTagUtil</cmp>, <id>0x00000004</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpBinTagUtilIec</cmp>, <id>0x0000005c</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpBitmapPool</cmp>, <id>0x00000050</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpBlkDrvCom</cmp>, <id>0x00000006</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpBlkDrvShm</cmp>, <id>0x00000068</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpBlkDrvTcp</cmp>, <id>0x00000030</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpBlkDrvUdp</cmp>, <id>0x00000007</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCAAAsyncMan</cmp>, <id>0x00004007</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCAABehaviourModel</cmp>, <id>0x00004015</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCAACallback</cmp>, <id>0x00004001</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCAACanL2</cmp>, <id>0x00004004</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCAADTUtil</cmp>, <id>0x00004013</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCAAFile</cmp>, <id>0x00004008</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCAAMemBlockMan</cmp>, <id>0x00004003</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCAANetBaseServices</cmp>, <id>0x00004018</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCAARealTimeClock</cmp>, <id>0x00004014</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCAASdoClient</cmp>, <id>0x00004011</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCAASdoServer</cmp>, <id>0x00004017</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCAASegBufferMan</cmp>, <id>0x00004019</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCAASerialCom</cmp>, <id>0x00004012</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCAAStorage</cmp>, <id>0x0000007e</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCAATick</cmp>, <id>0x00004009</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCAATickUtil</cmp>, <id>0x00004010</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCAATimer</cmp>, <id>0x00004016</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCAATypes</cmp>, <id>0x00004006</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpChannelClient</cmp>, <id>0x00000008</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpChannelClientIec</cmp>, <id>0x0000005d</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpChannelMgr</cmp>, <id>0x00000009</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpChannelServer</cmp>, <id>0x0000000a</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpChecksum</cmp>, <id>0x0000000b</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCodeMeter</cmp>, <id>0x0000007a</id> <ver>3.5.19.20</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCommunicationLib</cmp>, <id>0x0000000c</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCoreDump</cmp>, <id>0x00000083</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCryptMD5</cmp>, <id>0x0000006a</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpDevice</cmp>, <id>0x0000000e</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpDynamicText</cmp>, <id>0x00000051</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpEventMgr</cmp>, <id>0x0000005b</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpFileTransfer</cmp>, <id>0x0000005e</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpIecStringUtils</cmp>, <id>0x0000007f</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpIecTask</cmp>, <id>0x00000011</id> <ver>3.5.19.20</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpIecVarAccess</cmp>, <id>0x00000060</id> <ver>3.5.19.20</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpIoDrvC</cmp>, <id>0x00000066</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpIoDrvIec</cmp>, <id>0x0000005a</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpIoMgr</cmp>, <id>0x00000012</id> <ver>3.5.19.10</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpIpc</cmp>, <id>0x0000001d</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpMonitor</cmp>, <id>0x00000014</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpMonitor2</cmp>, <id>0x00000032</id> <ver>3.5.19.20</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpNameServiceClient</cmp>, <id>0x00000015</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpNameServiceClientIec</cmp>, <id>0x0000011d</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpNameServiceServer</cmp>, <id>0x00000016</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpOPCUAClient</cmp>, <id>0x00000096</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpOPCUAProviderIecVarAccess</cmp>, <id>0x00000126</id> <ver>3.5.19.20</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpOPCUAServer</cmp>, <id>0x00000124</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpOPCUAStack</cmp>, <id>0x0000008d</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpObjectMgr</cmp>, <id>0x00000080</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpOpenSSL</cmp>, <id>0x00000033</id> <ver>3.5.19.10</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpPlcShell</cmp>, <id>0x00000128</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpRedundancy</cmp>, <id>0x00000129</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpRedundancyConnectionIP</cmp>, <id>0x0000ff03</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpRetain</cmp>, <id>0x00000017</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpRouter</cmp>, <id>0x00000018</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpSchedule</cmp>, <id>0x00000019</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpSecureChannel</cmp>, <id>0x00000090</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpSecurityManager</cmp>, <id>0x0000008e</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpSercos3Master</cmp>, <id>0x0000004c</id> <ver>3.1.2.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpSessionInformation</cmp>, <id>0x00000097</id> <ver>3.5.19.20</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpSrv</cmp>, <id>0x0000001c</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpSupervisor</cmp>, <id>0x0000008f</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpTraceMgr</cmp>, <id>0x00000070</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpUserDBFile</cmp>, <id>0x00000098</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpUserGroupsDBFile</cmp>, <id>0x00000099</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpUserMgr</cmp>, <id>0x00000061</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpUserObjectsDBFile</cmp>, <id>0x0000009c</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpVisuClientControllerHost</cmp>, <id>0x00000132</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpVisuHandler</cmp>, <id>0x00000054</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpVisuServer</cmp>, <id>0x00000057</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpXMLParser</cmp>, <id>0x00000058</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= Dynamic: <cmp>CmpTargetVisuStub</cmp>, <id>0x00000053</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= Dynamic: <cmp>CmpWebServer</cmp>, <id>0x00000071</id> <ver>3.5.19.10</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= Dynamic: <cmp>CmpWebServerHandlerV3</cmp>, <id>0x00000072</id> <ver>3.5.19.10</ver> 2023-09-19T08:02:04.045Z: Cmp=SysCpuMultiCore, Class=1, Error=0, Info=4, pszInfo= MultiCore support: [activated], all cores are used 2023-09-19T08:02:04.045Z: Cmp=SysCpuMultiCore, Class=1, Error=0, Info=4, pszInfo= Number of available cores: 8 2023-09-19T08:02:04.076Z: Cmp=CmpBlkDrvUdp, Class=1, Error=0, Info=6, pszInfo= Network interface: <ipaddress>192.168.1.167</ipaddress>, subnetmask <subnetmask>255.255.255.0</subnetmask> 2023-09-19T08:02:04.076Z: Cmp=CmpRouter, Class=1, Error=0, Info=4, pszInfo= Network interface <interface>ether 0</interface> at router <instance>0</instance> registered 2023-09-19T08:02:04.076Z: Cmp=CmpBlkDrvUdp, Class=1, Error=0, Info=6, pszInfo= Network interface: <ipaddress>192.168.56.1</ipaddress>, subnetmask <subnetmask>255.255.255.0</subnetmask> 2023-09-19T08:02:04.076Z: Cmp=CmpRouter, Class=1, Error=0, Info=4, pszInfo= Network interface <interface>ether 3</interface> at router <instance>1</instance> registered 2023-09-19T08:02:04.076Z: Cmp=CmpChannelMgr, Class=1, Error=0, Info=2, pszInfo= Running as network server 2023-09-19T08:02:04.076Z: Cmp=CmpChannelMgr, Class=1, Error=0, Info=1, pszInfo= Running as network client 2023-09-19T08:02:04.077Z: Cmp=CmpChannelServer, Class=1, Error=0, Info=0, pszInfo= <numofchannels>4</numofchannels> channels available, each of the size <buffersize>100000</buffersize> Bytes 2023-09-19T08:02:04.265Z: Cmp=CmpRedundancy, Class=1, Error=0, Info=0, pszInfo= Debug Messages not activated 2023-09-19T08:02:04.266Z: Cmp=CmpRedundancyConnectionIP, Class=1, Error=0, Info=0, pszInfo= Read connection settings... 2023-09-19T08:02:05.456Z: Cmp=CmpRouter, Class=1, Error=0, Info=4, pszInfo= Network interface <interface>BlkDrvShm</interface> at router <instance>2</instance> registered 2023-09-19T08:02:05.456Z: Cmp=CmpBlkDrvShm, Class=1, Error=0, Info=9, pszInfo= Local address (BlkDrvShm) set to 1 2023-09-19T08:02:05.463Z: Cmp=CmpBlkDrvTcp, Class=1, Error=0, Info=6, pszInfo= Local network address: <ipaddress>192.168.56.1</ipaddress> 2023-09-19T08:02:05.464Z: Cmp=CmpRouter, Class=1, Error=0, Info=4, pszInfo= Network interface <interface>BlkDrvTcp</interface> at router <instance>3</instance> registered 2023-09-19T08:02:05.507Z: Cmp=CmpOPCUAServer, Class=1, Error=0, Info=0, pszInfo= No certificate for the OPC UA server available. 2023-09-19T08:02:05.507Z: Cmp=CmpOPCUAServer, Class=1, Error=0, Info=0, pszInfo= Security policy allows plain text communication. Secure communication is deactivated. 2023-09-19T08:02:05.508Z: Cmp=CmpOPCUAServer, Class=1, Error=0, Info=0, pszInfo= ********** 2023-09-19T08:02:05.508Z: Cmp=CmpOPCUAServer, Class=1, Error=0, Info=0, pszInfo= OPC UA Server Started: 2023-09-19T08:02:05.508Z: Cmp=CmpOPCUAServer, Class=1, Error=0, Info=0, pszInfo= Hostname: SIEMENS, Port: 4840 2023-09-19T08:02:05.508Z: Cmp=CmpOPCUAServer, Class=1, Error=0, Info=0, pszInfo= URL: opc.tcp://SIEMENS:4840 2023-09-19T08:02:05.508Z: Cmp=CmpOPCUAServer, Class=1, Error=0, Info=0, pszInfo= Loopbackadapter activated. 2023-09-19T08:02:05.508Z: Cmp=CmpOPCUAServer, Class=1, Error=0, Info=0, pszInfo= All available networkadapters are used. 2023-09-19T08:02:05.508Z: Cmp=CmpOPCUAServer, Class=1, Error=0, Info=0, pszInfo= Multithreading activated. 7 workers used. 2023-09-19T08:02:05.508Z: Cmp=CmpOPCUAServer, Class=1, Error=0, Info=0, pszInfo= ************ 2023-09-19T08:02:05.513Z: Cmp=CmpOPCUAServer, Class=1, Error=0, Info=0, pszInfo= Provider 'CODESYS_DefaultProvider' (version 0x3051300) registered at the OPC UA server. 2023-09-19T08:02:05.522Z: Cmp=CM, Class=1, Error=0, Info=0, pszInfo= ========================================================================= 2023-09-19T08:02:05.522Z: Cmp=CM, Class=1, Error=0, Info=4, pszInfo= CODESYS SoftMotion Win V3 x64 2023-09-19T08:02:05.522Z: Cmp=CM, Class=1, Error=0, Info=4, pszInfo= OS=Windows, CPU=x86, Arch=64Bit, Coding=C 2023-09-19T08:02:05.522Z: Cmp=CM, Class=1, Error=0, Info=6, pszInfo= <version>3.5.19.20</version> <builddate>Aug 1 2023</builddate> 2023-09-19T08:02:05.522Z: Cmp=CM, Class=1, Error=0, Info=5, pszInfo= Copyright CODESYS Development GmbH 2023-09-19T08:02:05.522Z: Cmp=CM, Class=1, Error=0, Info=0, pszInfo= ========================================================================= 2023-09-19T08:02:05.529Z: Cmp=CmpOPCUAServer, Class=1, Error=0, Info=0, pszInfo= Provider 'AddressSpaceFragment Provider' (version 0x3051314) registered at the OPC UA server. 2023-09-19T08:02:05.530Z: Cmp=CmpOPCUAServer, Class=1, Error=0, Info=0, pszInfo= Provider 'OPC UA for IEC-61131-3' (version 0x3051314) registered at the OPC UA server. 2023-09-19T08:02:05.530Z: Cmp=CmpOPCUAServer, Class=1, Error=0, Info=0, pszInfo= Provider 'AlarmManager' (version 0x3051314) registered at the OPC UA server. 2023-09-19T08:02:05.606Z: Cmp=CmpRouter, Class=1, Error=0, Info=1, pszInfo= Setting router <instance>0</instance> address to (00a7) 2023-09-19T08:02:05.606Z: Cmp=CmpRouter, Class=1, Error=0, Info=1, pszInfo= Setting router <instance>1</instance> address to (0001) 2023-09-19T08:02:05.606Z: Cmp=CmpRouter, Class=1, Error=0, Info=1, pszInfo= Setting router <instance>2</instance> address to (0001) 2023-09-19T08:02:05.606Z: Cmp=CmpRouter, Class=1, Error=0, Info=1, pszInfo= Setting router <instance>3</instance> address to (2ddc:c0a8:3801) 2023-09-19T08:02:05.611Z: Cmp=CM, Class=1, Error=0, Info=34, pszInfo= CODESYS Control ready 2023-09-19T08:02:05.796Z: Cmp=CM, Class=2, Error=0, Info=0, pszInfo=!!!! no runtime license - running in demo mode(~2 hours)
Last updated: 2023-09-19
Post by kevinrn on CODESYS Development System V3 installation auf unter Parallells Windows 11auf MAC PRO M1 ARM Prozessor
CODESYS Forge
talk
(Post)
Hallo, das Thema ist ja etwas offtopic. Aber ich kann gerne mal von meiner Erfahrung berichten: Nachdem ich von 2020 bis 2023 immer einen MacBook Pro mit Intel CPU hatte (i9/32GB) und nun seit Januar 2024 mit dem M3 Max unterwegs bin kann ich Nachfolgendes berichten. Infos zu den Aufgaben, die ich damit erledige: Die Runtime nutze ich nicht auf dem Mac (Wenn ich von Mac rede, dann meine ich damit die Win11 ARM64 Parallels Umgebung) Ich nutze die IDE fĂźr Library development und fĂźr automatisierungs Tests von CI/CD jobs. Weiterhin Ăśffne ich oft groĂe Projektarchive mit teilweise 160 MB. Erfahrungen zur Installation von CODESYS Versionen: Ich habe einige Versionen installiert, unter anderem, 3.5.14.4, 3.5.17.2, 3.5.16.3, 3.5.18.4 und 3.5.19.6. Ich hatte mit keiner einizgen Installation ein Problem. Die Installation lief immer ohne Probleme durch. Runtimes (Control Win) installiere ich nicht. Ich nutze linux basierte Zielsysteme und bei bedarf eine Windows VM auf einen entfernen Host mit X64. Lokales Gateway läuft ebenso Sonstige Erfahrungen: Ich nutze viele Komponenten Querbeet: Alarming, AC Persistence, Symbol Konfiguration, CFC und ST Editor, externes Packages wie STWeep, Git fĂźr Library Entwicklung, Visu, etc. Mit keiner dieser "Komponenten" hatte ich schwierigkeiten oder einen Unterschied zu x64 systemen festgestellt. Man muss aber auch sagen, dass das alles nur ein kleiner Bruchteil ist, was die CODESYS Welt beinhaltet, deshalb sind diese Aussagen auch nur subjektiv aus meinem Erfahrungsbereich. FĂźr das Entwickeln von Libraries sehe ich keine Performance Einschränkungen. Ganz im Gegenteil, fĂźr das, dass hier eine emulation stattfindet, ist es erstaunlich schnell. Meiner Meinung nach sind sogar einfache und kleine Projekte schneller als beim Intel Mac. Die Akku Leistung mit dem Mac und Parallels ist fantastisch. LĂźfter hĂśrt man nicht mal bei der Nutzung von CODESYS. Beim Intel konnte ich sonst ein Spiegelei auf der Abdeckung zubereiten... Was evtl. etwas langsamer ist bzw. mir manchmal so vor kommt ist, der CFC Editor im Online Mode. Aber hierzu fehlt mir ein richtiger Vergleich. Fazit: Ich bin selbst erstaunt wie gut die CODESYS IDE auf einem ARM64 emuliert wird. Ich muss aber auch sagen, dass ich jederzeit eine x64 Workspace zur VerfĂźgung habe, falls was nicht funktionieren sollte. Das habe ich mir extra zum Umstieg zu gelegt. Bisher habe ich es jedoch noch nie benĂśtigt, da meine Anforderungen alle erfĂźllt werden. Es sollte einem aber bewusst sein, dass dies keine supportete Umgebung ist und man auch bei spezifischen Problemen keinen Support erwarten sollte. Ich nutze CODESYS ca. 4-12 Stunden die Woche und ich warte immer noch auf etwas, um meine X64 Cloud Workspace mal zu verwenden... Vielleicht hilft dir dies ja etwas bei der Entscheidung.
Last updated: 2024-03-21
Post by scoob on ModbusFB - Slow Response Time
CODESYS Forge
talk
(Post)
Hello, I have been trying to use the ModbusFB functions so I can put some code into libraries, but it seems to be very slow for me. I have a Modbus device with 100ms registers. I previously setup 10 channels in the 'traditional' Modbus Slave with channels and mappings - and set a cyclic trigger at 100ms - this worked fine. I then tried the ModbusFB example, and setup reading the same 10 blocks of modbus addresses, copying the example and putting all of the requests into an array and triggering the requests sequentially. I timed how long the requests are taking to get round to each one, and it is around 1s 450ms. How do I speed this up to match the cyclic time? IF NOT(init) THEN init := TRUE; // Set the required IP address: ipAddress[0] := 192; ipAddress[1] := 168; ipAddress[2] := 1; ipAddress[3] := 10; // Pass the required IP address to the clinet FB: client_NetworkSwitch.aIPaddr := ipAddress; client_NetworkSwitch.udiLogOptions := (ModbusFB.LoggingOptions.ClientConnectDisconnect OR ModbusFB.LoggingOptions.ClientReceivedValidReplies); // Try to connect the client client_NetworkSwitch(xConnect:=TRUE); // Configure all the channels to read connecting them to the client: portStatus_Request(rClient := client_NetworkSwitch, uiStartItem := 4096, uiQuantity := 32, pData := ADR(portStatus), udiReplyTimeout := udiReplyTimeout); portSpeed_Request(rClient := client_NetworkSwitch, uiStartItem := 4352, uiQuantity := 32, pData := ADR(portSpeed)); flowControl_Request(rClient := client_NetworkSwitch, uiStartItem := 4608, uiQuantity := 32, pData := ADR(flowControl)); linkUpCounter_Request(rClient := client_NetworkSwitch, uiStartItem := 5888, uiQuantity := 32, pData := ADR(linkUpCounter)); txPacketCounter1_Request(rClient := client_NetworkSwitch, uiStartItem := 8192, uiQuantity := 100, pData := ADR(txPacketCounter1)); txPacketCounter2_Request(rClient := client_NetworkSwitch, uiStartItem := 8292, uiQuantity := 28, pData := ADR(txPacketCounter2)); rxPacketCounter1_Request(rClient := client_NetworkSwitch, uiStartItem := 8448, uiQuantity := 100, pData := ADR(rxPacketCounter1)); rxPacketCounter2_Request(rClient := client_NetworkSwitch, uiStartItem := 8548, uiQuantity := 28, pData := ADR(rxPacketCounter2)); txErrors_Request(rClient := client_NetworkSwitch, uiStartItem := 8704, uiQuantity := 64, pData := ADR(txErrors)); rxErrors_Request(rClient := client_NetworkSwitch, uiStartItem := 8960, uiQuantity := 64, pData := ADR(rxErrors)); // Trigger all client requests initially FOR clientRequestsCnt := 0 TO (SIZEOF(clientRequests)/SIZEOF(clientRequests[0]))-1 DO pClientRequest := clientRequests[clientRequestsCnt]; pClientRequest^.xExecute := TRUE; END_FOR // Prepare sequential trigger / control of client requests. clientRequestsCnt := 0; pClientRequest := clientRequests[clientRequestsCnt]; END_IF // Call the client to do request processing: client_NetworkSwitch(); // Now we trigger client request sequentially ... IF NOT pClientRequest^.xExecute AND NOT pClientRequest^.xDone AND run AND client_NetworkSwitch.xConnected THEN pClientRequest^.xExecute := TRUE; END_IF // .. and check result/error IF pClientRequest^.xExecute AND run AND client_NetworkSwitch.xConnected THEN IF pClientRequest^.xDone THEN // Prepare next trigger of client request (a rising edge of xExecute) pClientRequest^.xExecute := FALSE; IF clientRequestsCnt < SIZEOF(clientRequests)/SIZEOF(clientRequests[0])-1 THEN // next client request clientRequestsCnt := clientRequestsCnt + 1; ELSE clientRequestsIterationCounter := clientRequestsIterationCounter + 1; clientRequestsCnt := 0; END_IF pClientRequest := clientRequests[clientRequestsCnt]; END_IF END_IF I did try a semi-coded way using the IoDrvModbusTCP library, and setting the slave com settings, then 10 commands and 10 requests, then using a TP on xDone as a pause, before triggering another request - this is time the delay is around 120ms - so the device is fine with the speed, just something I am doing wrong in the ModbusFB method I am sure.
Last updated: 2024-04-26
Post by paulg on RasPi CAA Serial example - unexpected behavior during debug
CODESYS Forge
talk
(Post)
I've trimmed down the CAA Serial Codesys example to only listen on one port but, when stepping through the Case structure in debug mode, it jumps out of the structure during a specific point in every scan (I'll point it out below after describing the setup and listing the code). I'm using a Pi 4 Model B, and I have an Arduino Nano Every plugged in via USB which is streaming the following serial message at 1 Hz: Time since opening connection: 1 s Time since opening connection: 2 s ...and so on. The Pi shows the Nano at /dev/ttyACM0 so I edited CODESYSControl_User.cfg to read: Linux.Devicefile=/dev/ttyACM The code in my PLC_PRG is (ignore some of the comments, I hadn't deleted them out from the original example): PROGRAM PLC_PRG VAR xStartTest : BOOL:= TRUE; iState : INT; xTestDone : BOOL;(* True, when the test was done succesfully *) (* Settings to communicate with the COM Port *) aCom1Params : ARRAY [1..7] OF COM.PARAMETER; como1 : COM.Open; comc1 : COM.Close; comw1 : COM.Write; comr1 : COM.Read; //sWrite : STRING := 'Test String!'; sRead : STRING(25); szRead : CAA.SIZE; xCom1OpenError : BOOL; xCom1CloseError : BOOL; xCom1WriteError : BOOL; xCom1ReadError : BOOL; END_VAR //This example shows the communication of two COM Ports with each other. //The first one writes a string of characters, which is read by the second one. //After successful execution, the two COM Ports are closed and the test is done. IF xStartTest THEN CASE iState OF 0: //The parameters are set for the COM Port aCom1Params[1].udiParameterId := COM.CAA_Parameter_Constants.udiPort; aCom1Params[1].udiValue := 1; // the correct Port should be adapted aCom1Params[2].udiParameterId := COM.CAA_Parameter_Constants.udiBaudrate; aCom1Params[2].udiValue := 115200; aCom1Params[3].udiParameterId := COM.CAA_Parameter_Constants.udiParity; aCom1Params[3].udiValue := INT_TO_UDINT(COM.PARITY.NONE); aCom1Params[4].udiParameterId := COM.CAA_Parameter_Constants.udiStopBits; aCom1Params[4].udiValue := INT_TO_UDINT(COM.STOPBIT.ONESTOPBIT); aCom1Params[5].udiParameterId := COM.CAA_Parameter_Constants.udiTimeout; aCom1Params[5].udiValue := 0; aCom1Params[6].udiParameterId := COM.CAA_Parameter_Constants.udiByteSize; aCom1Params[6].udiValue := 8; aCom1Params[7].udiParameterId := COM.CAA_Parameter_Constants.udiBinary; aCom1Params[7].udiValue := 0; //The first Port is opened with the given parameters como1(xExecute := TRUE, usiListLength:=SIZEOF(aCom1Params)/SIZEOF(COM.PARAMETER),pParameterList:= ADR(aCom1Params)); IF como1.xError THEN xCom1OpenError := TRUE; iState := 1000; END_IF //After a successful opening, the next state is reached IF como1.xDone THEN iState := 15; END_IF 15: // the reading process is started comr1(xExecute := TRUE,hCom:= como1.hCom, pBuffer:= ADR(sRead), szBuffer:= SIZEOF(sRead)); IF comr1.xError THEN xCom1ReadError := TRUE; END_IF //After completion the size of the written bytes are saved IF comr1.xDone OR comr1.xError THEN szRead := comr1.szSize; iState := 20; END_IF 20: // If everything was successful the ports are closed and the handles are released comc1(xExecute := TRUE,hCom:= como1.hCom); IF comc1.xError THEN xCom1CloseError := TRUE; END_IF IF comc1.xDone OR comc1.xError THEN iState := 25; END_IF 25: // The first port is closed and the used handle released xTestDone := TRUE; xStartTest := FALSE; iState := 0; como1(xExecute := FALSE); comw1(xExecute := FALSE); comc1(xExecute := FALSE); ELSE iState := 0; END_CASE END_IF I realize as I write this that the .udiPort should be 0 and not 1, but that shouldn't be causing the issue I'm seeing. I'm forcing xStartTest:=TRUE every scan so that I can step into each line and observe what's happening. What I see is that the port parameters are set and the port is opened with no errors, but the code jumps out of the case structure to the last line every time it reaches (and I step into) the iState:=15 line (at the end of the iState:=0 block). So every scan cycle it goes through the block for iState=0 and jumps out at the same spot. I'm a little new to PLC programming so I may be misunderstanding the flow, but shouldn't this case structure keep moving down in the same scan? If it only handles one case per scan, why doesn't the value of iState persist? Thanks! Update: I restarted the Codesys control today and I was then able to see an error for como1.eError of "WRONG_PARAMETER". I tried doing some digging and another post made me think I should add another line to CODESYSControl_User.cfg, so I now have: [SysCom] Linux.Devicefile=/dev/ttyACM portnum := COM.SysCom.SYS_COMPORT1 So now when I set .udiPort to 1, I get "NO_ERROR" but I also don't read anything from the port (i.e. szRead = 0 always). If I try setting the port to 0 (which I'm confused about, because I added a COMPORT1 line but the device shows on the Pi as ACM0), I get the "WRONG_PARAMETER" error again. Is there an easier way to troubleshoot the Pi and view what ports the Codesys runtime is actually able to see while the Pi is running?
Last updated: 2024-06-06
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
.