Search talk: As Time

 
<< < 1 .. 60 61 62 63 64 .. 72 > >> (Page 62 of 72)

Post by berto on Opening PDF in Web Browser in Target Visu HMI CODESYS Forge talk (Post)
Hi everybody, I've been facing problems with the PDF visualization in Web Browser. I am trying to open a pdf file called 'sample.pdf' which I manually saved inside PlcLogic/visu folder. I am setting the web browser URL as: 'http://127.0.0.1:8080/sample.pdf' but I get 'refused connection'. I got a similar error trying to open https sites and I discovered that I can only open http websites. Opening 'http://de.wikipedia.org' everything works fine. I also tried to check using code whether the sample.pdf is present in the directory. Unfortunately, when I try to read directories of 'PlcLogic' I get file FILE_OPERATION_DENIED (I am using File.DirList). I would like to be able to open PDF files in web browser. Possibly to move new PDF files in the folder as my customer wants to display different pdf manuals on the hmi. Here you find some screenshots and my .project. I am using Codesys 3.5.19.70. Best regards, Berto
Last updated: 2024-07-11

Post by faceplant on CmpDynamicText unresolved references CODESYS Forge talk (Post)
Hello! I am new to codesys so I am sorry if this is not the right place to ask this question. I am using codesys V3.5 SP20 Patch 1 + (64-bit) and a Groov EPIC PLC (GRV-EPIC-PR2). I am trying to build and deploy my application to the PLC, but when I log in I get 6 errors (codesys_error.png). It seems that the errors have to do with the CmpDynamicText system library which I have as version 3.5.20.0. I have tried to add CmpDynamicText to the ComponentManager section in the PLC's CODESYSControl.cfg file as described in this forum post and still hit the same error. I noticed that the library is grayed out in the library manager, which I think might be the issue. However I don't remember if it was grayed out before I encountered this issue. Please let me know if I can provide anymore info. Thank you!!!
Last updated: 2024-07-19

Post by biiebs on Aufbau von Ablaufsteuerungen ermitteln CODESYS Forge talk (Post)
Hallo Zusammen, gibt es in CODESYS bei Ablaufsteuerungen weitere Möglichkeiten außer den AS-Einstellungen z.B. die Aufbaustruktur der Ablaufsteuerung herauszufinden? Gesamtanzahl der verwendeten Aktionen / Schritte - Im besten Fall auch die einzelnen Verzweigungen? Ich würde den gesamten Aufbau der Schrittkette gerne als "View" in einer übergeordneten Software abbilden lassen, da sich die Ablaufsteuerungen, je nach Projekt im Aufbau unterscheiden bräuchte ich die Kenntniss über den Aufbau dieser Schrittketten. Oder müsste ich mir hier einen "Workaround" programmieren, der z.B. bei Init erstmal den Aufbau der Ablaufsteuerung durchläuft und mir die nötigen Informationen liefert? Natürlich wäre auch ein Weg den Aufbau des AS-Bausteins über die PLCopen XML zu exportieren, jedoch müsste dies bei Änderungen jeweils nachgezogen werden - was etwas unschön wäre, falls dies vergessen würde. Mittlerweile habe ich auch das Tool "SFC Visu Generator" gefunden, dessen Funktion im Prinzip genau das darstellt, was ich benötige - jedoch leider nur als CODESYS interne Visualisierung. Ich würde den Export des Bausteins gerne in meine übergeordnete Software implementieren. Gibt es hier die Möglichkeit das Vorgehen zu Erfahren oder den vom Baustein generierten Export bei mir zu implementieren? Hat hier jemand sowas ähnliches schonmal gelöst? Vielen Dank im Voraus Mit freundlichen Grüßen Biiebs
Last updated: 2024-07-25

Post by codesysbeginner on Eaton XC303 - USB Mounting / Trend manager CODESYS Forge talk (Post)
Hi, For a project I am using the trendmanager functionality, I changed the placeholder filepath to which the SQL database is saved to: home/disk_usb, $trend$. Which only works as long as the usb was mounted to the PLC at boot. However, I'd like to be able to switch the USB's out if they break or for data analysis. However when a new (or the same) USB is plugged back in the shortcut doens't exist on the device anymore. Also in the device directory under root/mnt/ a new folder appears SDB1 in addition to SDA1 to which the Trendmanager was originally writing. The SDA1 folder is empty/unreachable while the new SDB1 folder has the contents of the USB drive. I tried disabling the trendmanger while unplugging the USB's however this doesn't work. My question, how do I make it so that when I plug a USB drive back in, it will be mounted to SDA1 instead of SDB1? Kind Regards
Last updated: 2024-10-09

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 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 mubeta on Strange problem with the ‘MC_SetPosition’ function CODESYS Forge talk (Post)
Hi gseidel, before moving to HW implementation, I had created the same program in simulation mode with virtual drives and, as far as I remember, everything worked fine simulating process and the few useful inputs. So it does not seem to be a SoftMotion library problem, but rather a problem with dynamics or physical axis adjustments. What escapes me, however, is the fact that this function is supposed to perform a position shift virtually, in fact without interfering with the axis itself, thus independent of its adjustments. MC_SetPosition() is not a homing function, in fact it is clearly intended to be executed on the fly with the axis moving. Now I'll see if I can reduce the program, although I don't like it very much. In my life I have learned that problem searches should be done on the part, and not in a more or less similar way.
Last updated: 2025-01-10

Post by timvh on STRING conversions to DWORD CODESYS Forge talk (Post)
I guess that the printer expects to receive an array of byte values. So where it is described that it expects to receive: Hercules String : 1B4F513030311B7532626C61636B04 it actually expects to receive an array of bytes with the values 1B,4F,51,30,30, etc. So what you can do is create an array of bytes and assign the byte value to each item in the array: VAR abyToSend : ARRAY[0..99] OF BYTE; END_VAR abyToSend[0] := 16#1B; // ASCII Escape character, hexadecimal representation uses 16# as prefix abyToSend[1] := 16#4F; // ASCII 'O' abyToSend[2] := 16#51; // ASCII 'Q' abyToSend[3] := 16#30; // ASCII '0' // you can do the rest yourself // maybe could be created a lot smarter, but gives you an indication how to handle this. Then with the serial communication (or TCP/IP?) you can send a message with the reference to the array (abyToSend) and the number of bytes to send (15 bytes for the string you gave as example).
Last updated: 2025-02-02

Post by timvh on Device diagnosis ( EtherCAT IO card ) CODESYS Forge talk (Post)
You can get the state by just using the name of your node (same name as in device tree): VAR etcState: IoDrvEthercatDriverLib.ETC_SLAVE_STATE; END_VAR etcState := EJ1100.wState; Alternatively, you can iterate through the device tree to get the status of all (Ethercat) nodes. See here an example (no guarantee it works, just give as suggestion): PROGRAM P_IO_State VAR CONSTANT uiMAX_NR_OF_TERMINALS : UINT := 100; END_VAR VAR // general device diagnosis // can only be used when the Device - PLC Settings - Advanced settings - enable diagnosis for devices is enabled // this will add the DED library coupler: DED.INode; terminal: DED.INode; aDeviceState: ARRAY[0..uiMAX_NR_OF_TERMINALS - 1] OF DED.DEVICE_STATE; uiTerminalCount : UINT; uiIndex : UINT; // for each terminal check if it implements device diagnostics xQueryResult: BOOL; itfDevice : DED.IDevice2; xDiagAvailable: BOOL; eError: DED.ERROR; xEverythingOK: BOOL; END_VAR uiTerminalCount := 0; // start at the top of the device tree with the first EtherCAT coupler coupler := EtherCAT_Master.FirstChildNode; WHILE coupler <> 0 DO // for each coupler that is found start at the first terminal terminal := coupler.FirstChildNode; WHILE terminal <> 0 AND uiTerminalCount < uiMAX_NR_OF_TERMINALS - 1 DO // for each terminal that is found get the status through the device diagnosis interface xQueryResult := __QUERYINTERFACE(terminal, itfDevice); IF xQueryResult THEN aDeviceState[uiTerminalCount] := itfDevice.GetDeviceState(xDiagnosisInfoAvailable => xDiagAvailable, eError => eError); uiTerminalCount := uiTerminalCount + 1; END_IF terminal := terminal.NextSiblingNode; END_WHILE coupler := coupler.NextSiblingNode; END_WHILE uiIndex := 0; xEverythingOK := TRUE; WHILE uiIndex < uiTerminalCount DO IF aDeviceState[uiIndex] <> DED.DEVICE_STATE.RUNNING THEN xEverythingOK := FALSE; EXIT; END_IF uiIndex := uiIndex + 1; END_WHILE
Last updated: 2025-02-06

Post by atcprojectteam on Modbus Function Code 15, writing multiple coils CODESYS Forge talk (Post)
Hi all, I am using an RSTI-EP I/O card along with the EPXMBE101 Modbus/TCP network adapter. I have a Control Standard L license. I successfully connected to the I/O card via Modbus and can read inputs without any issues. However, when I try to write to the digital output modules using function code 15, I am unable to make any changes. Here’s what I have done so far: I created a small project using Structured Text. I set up Modbus channels (as shown in the attached image) and mapped the pins. When I use cyclic mode, the connection results in an error. However, when I use the rising edge, the connection works, but I don’t see any changes on the I/O card. For the output module, I assigned one bit to high. After that, I ran CODESYS Control Win V3. (Should I be running the PLC as well?) I built the program, but I am not receiving any response from the I/O card. Could you please advise on what might be causing this issue?
Last updated: 2025-02-26

Post by atcprojectteam on Modbus Function Code 15, writing multiple coils CODESYS Forge talk (Post)
Hi all, I am using an RSTI-EP I/O card along with the EPXMBE101 Modbus/TCP network adapter. I have a Control Standard L license. I successfully connected to the I/O card via Modbus and can read inputs without any issues. However, when I try to write to the digital output modules using function code 15, I am unable to make any changes. Here’s what I have done so far: I created a small project using Structured Text. I set up Modbus channels (as shown in the attached image) and mapped the pins. When I use cyclic mode, the connection results in an error. However, when I use the rising edge, the connection works, but I don’t see any changes on the I/O card. For the output module, I assigned one bit to high. After that, I ran CODESYS Control Win V3. (Should I be running the PLC as well?) I built the program, but I am not receiving any response from the I/O card. Could you please advise on what might be causing this issue?
Last updated: 2025-02-26

Post by ojz0r on Assignment Efficiency - Repetitive Assignment vs IF statement CODESYS Forge talk (Post)
Its important that you know the difference between the two. Example 1: Coils[0] := Coils[0] OR (Buttons[0] AND Sensors[0] > 6); In this case the statements will be evaluated every scan and result in either true or false for Coils[0]. Example 2: IF NOT Coils[0] AND Buttons[0] AND (Sensors[0] > 6) THEN Coils[0] := TRUE; END_IF In this example Coils[0] will latch the result in a true evaluation, if you want it to behave the same way as example 1 then you need to do it like example 3 below: IF NOT Coils[0] AND Buttons[0] AND (Sensors[0] > 6) THEN Coils[0] := TRUE; ELSE Coils[0] := FALSE; END_IF However back to the real question. There is no problem using either example 1 or example 3, if im not requiring a latch i usually go with example 1 as it is more compact.
Last updated: 2025-03-07

Post by r-c-r on SM3RaspiStepper 0.0.0.6 issue CODESYS Forge talk (Post)
Ok, so i made some tests in the meantime and i have some conclusions. It apears that the enable bit is activated only when a motion function is executed. I implemented a very simple program with MC_Power and MC_Jog. If i enable everything on MC_Power, the enable GPIO pin stays off. However, as soon as the MC_Jog function is used the enable GPIO pin turns ON and remains ON. In version 0.0.0.4 this is not happening. The GPIO enable pin turns on or off when the MC_Power is enabled or disabled. From this behaviour i understand that in version 0.0.0.6 the GPIO enable bit is activated together with pulse and dir pins when motion starts. When motion stops, enable bit remains with the last state (on in this case) and you cannot turn it off for example. For me this bit is useful because i can turn on and off the stepper drive with MC_Power function. Now i can turn it on, but never off.
Last updated: 2025-04-04

Post by pernockham on Engineering IDE from linux? CODESYS Forge talk (Post)
I have done the switch (linux mint, virtual windows through QEMU/KVM) now and is generally pleased. Have had problems in two areas initially. To bridge IP to the Virtual unit (solved), I overthought things initially. Solution. Configure manually a bridge in the mint-"network connections". Use that bridge in the Qemu settings as "Bridge device", "Device name": "name of the configured bridge" Figure out where to store the projects. I started out have the data in linux world (sort of) and linking it the windows with "virtio-fs". That had some serious impact though on git-handling. It seems that virtio-fs interpreted any file-path as lowercase only even if there were uppercase, resulting in git not able to sync files between its repository and the source code (it created a new file-path for me with only lowercase). Then I switch to samba-share instead and this works much better, though (git-actions) is a part that still has low performance with lots of waiting for file-actions. What should be the best way of handling the source/git? Edit to answer myself: Save the project "locally" in windows, then a lot of slow performance is avoided. Then a git-remote sync for backup.
Last updated: 2025-05-08

Post by mondinmr on Unexpected behavior in cyclic encoder read method during INT overflow (wrap-around) CODESYS Forge talk (Post)
Hi everyone, I’m investigating a potential issue with a cyclic method we use for reading incremental encoders in our libraries. I’ve come across two implementations that, at first glance, appear to perform the same operation: motionUnit.vlPositionActualValue is UINT due strange encoder type. Version A METHOD PROTECTED cyclicReadField VAR_INST actPosFieldOld: INT; rI: INT; delta: INT; END_VAR rI := TO_INT(motionUnit.vlPositionActualValue); delta := rI - actPosFieldOld; m_actPosRaw := m_actPosRaw + TO_LREAL(delta); actPosFieldOld := rI; IF settings.velocityFeebackMapped THEN m_actVelRaw := TO_LREAL(motionUnit.velocityActualValue); END_IF Version B METHOD PROTECTED cyclicReadField VAR_INST actPosFieldOld: INT; END_VAR m_actPosRaw := m_actPosRaw + TO_LREAL(TO_INT(motionUnit.vlPositionActualValue) - actPosFieldOld); actPosFieldOld := TO_INT(motionUnit.vlPositionActualValue); IF settings.velocityFeebackMapped THEN m_actVelRaw := TO_LREAL(motionUnit.velocityActualValue); END_IF Both use INT and the same delta logic, so they seem equivalent. However, when an overflow (wrap-around) occurs, version A continues correctly as expected, while version B unexpectedly resets to -32768 without a clear reason. Has anyone experienced similar behavior or can shed light on what might be happening here? It almost seems as if the cast to LREAL is being applied before the calculation — but that would be illogical and potentially very dangerous in many situations! Thanks!
Last updated: 2025-05-13

Post by abuckie on i2c master not running CODESYS Forge talk (Post)
Hello, I am trying to create an Ethernet/IP device that can read analog signals, do some basic logic on it and then hand communicate the results to an Ethernet/IP master. I am using the Raspberry Pi to experiment with this as I would ultimately like to drive a display as well. I have loaded up the runtime on the Pi and got the digital I/O working. I have an ADS1115 ADC to I2C board and I can't get it to work, I get a message telling me the i2c master is not running and I am not sure where to start with this. Is there a manual for running CODESYS on the Pi or something like that I am missing? I found this post and opening the project in CODESYS V3.5 SP21 it seems like tons of this wouldn't convert properly https://forge.codesys.com/forge/talk/Runtime/thread/f1400b71b6/ I have added in the library and device manually and copied the structured text program but lost at what to do if the core functionality of the master is not running. I appreciate any help, thanks.
Last updated: 2025-05-19

Post by josul on Web Client HTTPS Communication Issue CODESYS Forge talk (Post)
Web Client Library Documentation Company: 3S - Smart Software Solutions GmbH Title: Web Client Version: 1.0.1.7 Categories: Application|Utils Namespace: WEB_CLIENT Author: 3S - Smart Software Solutions GmbH Placeholder: WebClient I encountered an issue using this library above. Note it is now part of Codesys IIoT Libraries SL in the form of Web Client SL, but I am not using this version. I was sending Content-Type: application/json, HTTP POST using a HTTPS URL. No issue observed initially, successful operation. At some point operation stopped and the codesyscontrol.log file started to accumulate errors: ERROR: TlsCreateContext2: Failed to save context. An application reset failed to resume operation and I was unable observe any TCP connection forming to a destination port 443. The error appeared as a TCP_INIT error. I can find no details as to what may have happened or why a reset of the PLC application did not resume operation. Testing with a curl operation proved to be successful, so I am confident there was no fundamental networking issue preventing a TCP connection forming. The solution was to reboot the hardware itself, but this is not satisfactory in the long term. Is there any description of the TLS error I received? Is there any suggestion here that there might be an issue with certificates? Any advice or information is appreciated.
Last updated: 2025-06-05

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 toby on Ethernet/IP communication with Omron NX1P2 CODESYS Forge talk (Post)
Hey guys, I'm very much a noob with networking, it's my achillies heel, and this is my first networking project using Ethernet/IP. Any help offered is GREATLY appreciated. I'm trying to network a Codesys Project with an Omron NX1P2 PLC. I'm using EIP due to hardware restrains. I've added the fieldbus, EIP scanner (as the master), and made a Network Variable List. On the Sysmac Studio end, I've made the variables and set them to network inputs/outputs, registered them in EIP settings, but when I try to set the target device (the Codesys project), I suspect I need to import an EDS file for the EIP mapping. Back in the Codesys project, I'm not sure how to: - Make an EDS file to share with Sysmac Studio - How to link the target device (Omron PLC) to the EIP fieldbus - How to map the inputs from the Omron PLC. Im sorry for my very open request for help, i'm kind of lost looking through the various forums/video/tutorials as many of them dont match what im trying to do. Any help, or sample programs would be so so greatly appreciated. If you need any further clarifications, please feel free to ask. Thanks in advance, Toby
Last updated: 2024-01-24

Post by willbechel on Errors about PLC configuration in CoDeSYs software CODESYS Forge talk (Post)
I saved it as the same project but in a different location. I opened this "new project". I clicked on the "Direct Login from Automation Builder" button. It automatically directed me to CODESYS, where I was able to create the "Create Boot Project" but first I also clicked login again but inside CODESYS keeping the automation builder login online. Additional Information: The "Create Boot Project" function in CODESYS is used to create a project that will automatically start when the controller is booted up. To create a boot project, you must first create a new project in CODESYS. Once you have created a new project, you can then use the "Create Boot Project" function to create a boot application. The "Create Boot Project" function will create a new application that is based on the current project. The new application will be saved in the same location as the current project. You can then download the new application to the controller.
Last updated: 2024-02-01

Post by willbechel on Project Login Problem CODESYS Forge talk (Post)
I saved it as the same project but in a different location. I opened this "new project". I clicked on the "Direct Login from Automation Builder" button. It automatically directed me to CODESYS, where I was able to create the "Create Boot Project" but first I also clicked login again but inside CODESYS keeping the automation builder login online. Additional Information: The "Create Boot Project" function in CODESYS is used to create a project that will automatically start when the controller is booted up. To create a boot project, you must first create a new project in CODESYS. Once you have created a new project, you can then use the "Create Boot Project" function to create a boot application. The "Create Boot Project" function will create a new application that is based on the current project. The new application will be saved in the same location as the current project. You can then download the new application to the controller.
Last updated: 2024-02-01

Post by mondinmr on Direct Pointers in IOMapping for EtherCAT with IoDrvEthercatLib.ETCSlave_Dia CODESYS Forge talk (Post)
Using SDO, I can read the EtherCAT mappings and offsets from various registers like 0x1c12, 0x1c13, etc. When I obtain registers mapped in the PDOs and various offsets, I could technically access directly to the statusword, controlword, etc., if they are mapped. I have noticed that on IoDrvEthercatLib.ETCSlave_Diag I can find pointers to the input and output buffers. However, although the input buffer can be easily read by referring to what has been obtained from the SDOs, it is not possible to write to the output buffer, as it is overwritten in each cycle by the data from the IOMapping task. Is there a way, knowing an instance of IoDrvEthercatLib.ETCSlave_Diag, to obtain the pointer to the first data in the IOMapping? The offsets are identical to those of the PDOs, but obviously the data is a copy. For me, the cleanest thing would be to access the pointers on IOMapping, for DS402a devices to retrieve the key data and point them to internal references. I need to know this as, having developed our own motion library, I would like to simplify the initial setup by eliminating unnecessary and nonsensical mappings that can lead users to unnecessary errors. In the current version that we have been using for years, we have to map everything manually. I would like to pass only the slave reference to the FB_init constructors and eliminate the mapping.
Last updated: 2024-02-12

Post by dtamm on How to read string from CharBufferPtr? CODESYS Forge talk (Post)
I am trying to implement a mechanism to send alarm SMS. For this, I have created an Alarm Class with a Notification Action which calls a POU. This POU implements IAlarmNotifiable making it selectable in the Alarm Class configuration. IAlarmNotifiable has an Execute method which is called by the alarm class. Now, I want to extract the alarm message of the triggered alarm. The Execute method comes with a VAR_INPUT itfAlarm: AlarmManager.IAlarm which supplies a method called GetMessage. The help text says: Returns the message text, that has been configured for the alarm. The result is a pointer to the buffer, where the message text is stored The type of the result is CharBufferPtr, and at some place I read that it can be interpreted as a pointer to string. But I cannot manage to extract the alarm message, all I get are numbers. I have tried the following: psAlarmText := itfAlarm.GetMessage(__SYSTEM.TYPE_CLASS.TYPE_STRING)^; sAlarmText := TO_STRING( itfAlarm.GetMessage(__SYSTEM.TYPE_CLASS.TYPE_STRING)^ ); So how do I get access to the alarm message as clear text? (In this case, "Larm 1")
Last updated: 2024-02-21

Post by brell on Automatic xExecute NBS.TCP_write CODESYS Forge talk (Post)
I've recently started experimenting with CODESYS for a project and am fairly new to it. I'm currently working with Function Block Diagrams (FBD) to set up TCP communication between a server and a client, where the client is implemented as a Python script. Once the communication is established, my connection status changes to True, which is the expected behavior. My challenge arises with the TCP write module, which requires the xEnable_write flag to toggle between True and False. If xEnable_write remains True, the module only performs a single write operation. To address this, I introduced a falling edge trigger (F_TRIG), expecting it to help in toggling xEnable_write and it does, However, I've encountered an issue where in the beginning after connxion established I need to manually set xEnable_write to True for the system to work as intended. I'm looking for a way to automate this process so that xEnable_write becomes True automatically upon establishing a connection . Initially, I tried setting xEnable_write to True from the start, but this approach didn't work well since it left the flag permanently True, preventing further toggling. I also experimented with using a TON timer, but I faced similar issues. I am seeking a solution that automatically toggles xEnable_write between True and False after a connection is established, ensuring continuous write operations without manual intervention. Any advice or guidance on how to achieve this would be greatly appreciated."
Last updated: 2024-03-05

Post by zoronoa on J1939.ReceiveWatchdog & J1939.ReceiveParameterGroup CODESYS Forge talk (Post)
Hi, I'm trying to monitor a specific PGN which I have it sending a pulse every 500mS Problem: Using the Watchdog for the ECU does not really help me as I have multiple instances with separate PGNs, if a PGN goes ghost, the ECU watchdog won't be flagged as the others will be running. I found the J1939.ReceiveWatchdog & J1939.ReceiveParameterGroup function blocks and they seem like a good solution for my problem, I just can't get them to work from my understanding you just build the J1939.ReceiveParameterGroup once and then connect it's output to the J1939.ReceiveWatchdog, here's my CODE for the setup HEARTBEAT_TIMER(IN:= TRUE, PT:= T#1000MS); //turn-on delay because of initialization race IF HEARTBEAT_TIMER.Q= TRUE THEN Glob_Var.DisplayReceive.xExecute:= TRUE; Glob_Var.DisplayReceive.itfECU:= Valve_X; Glob_Var.DisplayReceive.dwPGN:= 65511; Glob_Var.DisplayWatchdog.xEnable:= TRUE; Glob_Var.DisplayWatchdog.itfParameterGroup:= Glob_Var.DisplayReceive.itfParameterGroup; Glob_Var.DisplayWatchdog.tTimeout:= T#1500MS; END_IF Notes: Glob_Var.DisplayReceive is of type J1939.ReceiveParameterGroup Glob_Var.DisplayWatchdog is of type J1939.ReceiveWatchdog The above code is done once and not cyclically I'm monitoring Glob_Var.DisplayWatchdog.xError cyclically
Last updated: 2024-03-13

<< < 1 .. 60 61 62 63 64 .. 72 > >> (Page 62 of 72)

Showing results of 1790

Sort by relevance or date