Post by markushunter on Different behavior between the "Start" button in the IDE and the Cmp function "AppStartApplication()"
CODESYS Forge
talk
(Post)
In our application with CODESYS V3.5 SP19 Patch 5 and the Soft-PLC Name: CODESYS Control Win V3 x64 Typ: 4096 ID: 0000 0004 Version: 3.5.19.50 the application behaves differently when we start the application via CmpApp.AppStartApplication(pApp) than when we press the "Start" button in online mode in the IDE. Unfortunately, it looks like the AppStartApplication() function, which is called in the "StopDone" system event, is not able to restart the fieldbus driver correctly, in our case the EtherNet_IP_Scanner: Name: EtherNet/IP Scanner Hersteller: 3S - Smart Software Solutions GmbH Kategorien: EtherNet/IP Scanner Typ: 100 ID: 0000 100B Version: 4.5.1.0 Bestellnummer: 1 And one EtherNet/IP adapter Name: FANUC Robot R30iB Plus Hersteller: FANUC Robotics America Kategorien: EtherNet/IP Remote Adapter Typ: 101 ID: 356_12_4_3 Version: Major Revision=16#3, Minor Revision = 16#1 Beschreibung: EtherNet/IP Target imported from EDS File: fanucrobot0301_r30ibp.eds Device: FANUC Robot R30iB Plus Version Konfiguration 3.5.6.0 The application was cold reset in both cases via CmpApp.AppReset(pApp := pApp, usResetOption := CmpApp.RTS_RESET_COLD. Does anyone know the difference between the functions or services executed by the "START" button in online mode and Cmp.AppStartApplication()? Thanks and best regards, markushunter
Last updated: 2024-03-20
Post by markushunter on Different behavior between the "Start" button in the IDE and the Cmp function "AppStartApplication()"
CODESYS Forge
talk
(Post)
In our application with CODESYS V3.5 SP19 Patch 5 and the Soft-PLC Name: CODESYS Control Win V3 x64 Typ: 4096 ID: 0000 0004 Version: 3.5.19.50 the application behaves differently when we start the application via Cmp.AppStartApplication(pApp) than when we press the "Start" button in online mode in the IDE. Unfortunately, it looks like the AppStartApplication() function, which is called in the "StopDone" system event, is not able to restart the fieldbus driver correctly, in our case the EtherNet_IP_Scanner: Name: EtherNet/IP Scanner Hersteller: 3S - Smart Software Solutions GmbH Kategorien: EtherNet/IP Scanner Typ: 100 ID: 0000 100B Version: 4.5.1.0 Bestellnummer: 1 And one EtherNet/IP adapter Name: FANUC Robot R30iB Plus Hersteller: FANUC Robotics America Kategorien: EtherNet/IP Remote Adapter Typ: 101 ID: 356_12_4_3 Version: Major Revision=16#3, Minor Revision = 16#1 Beschreibung: EtherNet/IP Target imported from EDS File: fanucrobot0301_r30ibp.eds Device: FANUC Robot R30iB Plus Version Konfiguration 3.5.6.0 The application was cold reset in both cases via CmpApp.AppReset(pApp := pApp, usResetOption := CmpApp.RTS_RESET_COLD. Does anyone know the difference between the functions or services executed by the "START" button in online mode and Cmp.AppStartApplication()? Thanks and best regards, markushunter
Last updated: 2024-03-20
Post by sanacfu on looking for v2.3 libraries on v3.5.19
CODESYS Forge
talk
(Post)
Hi all, I'm new to Codesys and Wago but well versed in Rockwell. I've been tasked with upgrading old Wago 750-880 PLCs that run Codesys v2.3. All I was giving is the original PLC program in v2.3 and the currently running machine. I've spec out to what I believe is a suitable upgrade, the PFC100 2ndGen, 750-8111. As I'm rewriting this code on the Codesys I can't find the same library functions blocks for ethernet settings PLC functions. Currently I'm working on code to get/set the PLC ethernet IP address and HMI IP addresses from the HMI screen. One other function I'm looking for is a warm reset function to the PLC. When googling for this stuff I see a lot of code not in ladder logic. Are these functions now not available to implement in ladder logic? Where can I get more information on finding and implementing this functions? Do I have to buy a license from Codesys to use these functions? The PLC I ordered should be arriving in 2-3 weeks.
Last updated: 2024-03-25
Post by duvanmoreno24 on Modbus writing on value change
CODESYS Forge
talk
(Post)
Yes, I tried to do what you put in the first code. However, I have a problem with that and that is that the inputs must be declared with the type. I have many data types running in my code (real, int, uint, bool) and I can't put them in the same function, another thing is that I need to instantiate that function for everything I want to write to the slave. You put a for to 200 but it means that it has to be the same data type and inside the array, but I want to get them individually. I'm struggling to do it in a good and efficient way like wago's E-cockpit does. in the first screenshot you can see, you simply type in value, change the package of things you want to write in value change and it does everything by itself automatically, without comparing any old and new values and even less having the need to activate a bool. , it is perfect.
Last updated: 2024-04-03
Post by julianramirez on ModbusFB write update
CODESYS Forge
talk
(Post)
Hello everyone, I am testing the ModbusFB library tcp server and so far I am able to create holding registers successfully, however, I am trying to identify after each write which registers got updated (i.e. function code, write value). I can even see the var udiNumWriteRequests, which increases with every write. I noticed that there is logging with the LogStatusInfo method. After I call it I am able to read in the console stuff that I want. Nevertheless, this is only available at the logs and is not easy to decode because it consists on several messages, I would like to know if there is a way for me to retrieve this information from the function itself with pointers or if there is any way to copy the logs messages (assuming that I can filter them with the LoggingOptions to only show what I need) inside the runtime code and not in the console. Thanks for your help :)
Last updated: 2024-09-16
Post by rossanoparis on Upgrading CODESYS runtime from v4.7 to v4.9 using a bash script leads to lose the licences stored in the soft container
CODESYS Forge
talk
(Post)
System information - Controller: KUNBUS RevPi CONNECT-S - OS: Linux buster 32bit 5.10.103-rt62-v7l #1 SMP PREEMPT_RT armv7l GNU/Linux - CODESYS v3.5 SP19 Patch 2 I'm facing a problem related to codesys licences using a procedure based on a bash script. Such bash script detect the presence of new .deb files and install them on system. My automation solution don't allow to be maintained by dedicated personal, thus even the CODESYS runtime SW must be installed using an "automatic" procedure instead of using the CODESYS tool. remark I've been using the following procedure since the runtime v4.5 without any issue. Before installing the new runtime packages, I need to copy the file CODESYSControl_User.cfg (here attached) because of new section which is necessary to add in order to allow some folders to be written by CODESYS runtime v4.9 Up to now, this has been unnecessary, this is the main difference between my previos bash file and the new one. remark If I skip this action, everythings goes fine, but my CODESYS application can't work as it needs to access some folders on controller's file system. Process - Before the procedure: the licenses are OK (see attached file lic-01.png) - After the procedure: the new CODESYS runtime version is correctly installed, but the software container with v1.19 and all licences disappear (see attached file lic-02.png) This is the synthetic content of bash script I'm using. # Stop runtime sudo service codesyscontrol stop sudo service codesysedge stop # Move the new CODESYSControl_User.cfg file # New configuraton with folders declared sudo mv -f CODESYSControl_User.cfg /etc # Install runtime package echo N | sudo apt-get install -y --allow-downgrades codesyscontrol_raspberry_4.9.0.0_armhf.deb # Install edge gateway package echo N | sudo apt-get install -y --allow-downgrades codesysedge_edgearmhf_4.9.0.0_armhf.deb # Reboot controller sudo reboot Thanks in advance
Last updated: 2023-09-19
Post by full0pullpolen on Device User Logon
CODESYS Forge
talk
(Post)
The following guide describes how you can adapt the user management for the first time in a project. It deals with the definition of a user and a group to which he belongs. Requirement: the project for which the user management is to be set up is opened. There is no adapted user configuration yet. Select Project Settings ‣ Users and Groups and then the Users tab. The user Owner is already created by default. Click on Add. ⇒ The dialog box Add User appears. Enter a login name, for example ‘Dev1’, and a password. Leave the option Activated activated. Click on OK. ⇒ On creating a group for the first time, CODESYS now requests you to authenticate yourself to perform this action. In this case, enter ‘Owner’ as the current user. Do not enter a password, just click on OK. The user Dev1 appears in the list and is automatically a member of the group 'Everyone'. Change to the tab Groups, in order to add the user to a new group. ⇒ The groups Everyone and Owner have already been created. Click on Add in order to open the dialog box Add Group. Specify at least one name for the new group, for example ‘Developers’. Activate the checkbox next to the entry User ‘Dev1’ in the field Members. Click on OK. ⇒ The group Developers now appears with has user member 'Dev1'. Switch to the Users tab. ⇒ The user Dev1 now appears as a member of the groups ‘Everyone’ and ‘Developers’.
Last updated: 2024-01-24
Post by full0pullpolen on Device User Logon
CODESYS Forge
talk
(Post)
The following guide describes how you can adapt the user management for the first time in a project. It deals with the definition of a user and a group to which he belongs. Requirement: the project for which the user management is to be set up is opened. There is no adapted user configuration yet. Select Project Settings ‣ Users and Groups and then the Users tab. The user Owner is already created by default. Click on Add. ⇒ The dialog box Add User appears. Enter a login name, for example ‘Dev1’, and a password. Leave the option Activated activated. Click on OK. ⇒ On creating a group for the first time, CODESYS now requests you to authenticate yourself to perform this action. In this case, enter ‘Owner’ as the current user. Do not enter a password, just click on OK. The user Dev1 appears in the list and is automatically a member of the group 'Everyone'. Change to the tab Groups, in order to add the user to a new group. ⇒ The groups Everyone and Owner have already been created. Click on Add in order to open the dialog box Add Group. Specify at least one name for the new group, for example ‘Developers’. Activate the checkbox next to the entry User ‘Dev1’ in the field Members. Click on OK. ⇒ The group Developers now appears with has user member 'Dev1'. Switch to the Users tab. ⇒ The user Dev1 now appears as a member of the groups ‘Everyone’ and ‘Developers’.
Last updated: 2024-01-24
Post by full0pullpolen on Device User Logon
CODESYS Forge
talk
(Post)
The following guide describes how you can adapt the user management for the first time in a project. It deals with the definition of a user and a group to which he belongs. Requirement: the project for which the user management is to be set up is opened. There is no adapted user configuration yet. Select Project Settings ‣ Users and Groups and then the Users tab. The user Owner is already created by default. Click on Add. ⇒ The dialog box Add User appears. Enter a login name, for example ‘Dev1’, and a password. Leave the option Activated activated. Click on OK. ⇒ On creating a group for the first time, CODESYS now requests you to authenticate yourself to perform this action. In this case, enter ‘Owner’ as the current user. Do not enter a password, just click on OK. The user Dev1 appears in the list and is automatically a member of the group 'Everyone'. Change to the tab Groups, in order to add the user to a new group. ⇒ The groups Everyone and Owner have already been created. Click on Add in order to open the dialog box Add Group. Specify at least one name for the new group, for example ‘Developers’. Activate the checkbox next to the entry User ‘Dev1’ in the field Members. Click on OK. ⇒ The group Developers now appears with has user member 'Dev1'. Switch to the Users tab. ⇒ The user Dev1 now appears as a member of the groups ‘Everyone’ and ‘Developers’.
Last updated: 2024-01-24
Post by steven-schalm on Github Actions CI/CD tasks - development topic
CODESYS Forge
talk
(Post)
hello kevinrn, I've been looking for a solution to the CI/CD issue for a long time. Briefly about me... I am 32 and software architect for Codesys V3 and fullstack dev for web (VueJS, NestJS) in a small company in Erfurt (Germany). https://www.rex-at.de/. Through my web part, we already have CI/CD running well via GitLab (YAML-based configuration file (.gitlab-ci.yml), which defines which pipelines and jobs are executed when certain events occur) with everything you know. Stages for npm packages - prepare (GitVersion, npm install or whatever) - build (vite, tsc or whatever) - testing (vitest, jest or whatever) - deploy (npm packages) And similar for monorepo's or backend services (in NestJS) as DockerImages. For Codesys we have been building an OOP framework for years (~50 libraries now), which is currently managed via SVN and a specially written Svn-Watcher (in Python) gets commits and runs and builds everything together and deploys it to an FTP server and network drive. Why do we still have SVN? Because we are unfortunately still tied to the safety integration of Codesys and can therefore only go to SP15 at most with our controller/Eckelmann. But soon there will be an update and there will be no more obstacles to using Git. Hence my questions: 1. the basic idea is to run a local Windows Runner on some machine? 2. install Codesys on the machine where the runner is running? 3. powershell & python scripts are then used to execute builds (compile, build, sign libraries) & deploys? 4. can the Github action also be used in GitLab? ChatGPT has already told me that it's not the same, but it doesn't hurt to ask. Do you have any ideas on this? Greetings :D
Last updated: 2024-08-20
Post by hwillems on Ranges, Lambdas, on Fixed arrays of structs
CODESYS Forge
talk
(Post)
I do datastructures and algorithms in Codesys. For example a Struct of Person with thing's like IdNumber, Name, Age etc. as example. Now i do all kind of calculations, filters. So i have this pretty big Fixed Array with Structs. On this struct i want to do simple stuff you can do easily in C++/Python/Rust etc. For example i want to do this: AvererageAge := Average(Peoples.Age); Then it will return the average of all members ages. Or Sort struct on age etc. Or sort on alphabetical Name. Or use Lambda functions to filter/mutate out things like, filter out everybody above 18 years old. Or remove people who it's name start with "A". Currently i have to write my own custom function for example sorting on Age. And make a super specific function based on that particulare datastructure. Here an Example: (*Before calling this FIlter method, set the mNodeFilterSwitch to the desired filter.*) CASE mNodeFilterSelect OF (********************************[ Status Filters ]***********************************) NodeID: FOR x := ACS_OUT_BEGIN TO ACS_OUT_END BY 1 DO FOR y := ACS_IN_BEGIN TO ACS_IN_END BY 1 DO IF marrNode[y].Status.oiNodeID > marrNode[y + 1].Status.oiNodeID THEN mNodeTemp := marrNode[y + 1]; marrNode[y + 1] := marrNode[y]; marrNode[y] := mNodeTemp; END_IF; END_FOR; END_FOR; Started: FOR x := DES_OUT_BEGIN TO DES_OUT_END BY -1 DO FOR y := DES_IN_BEGIN TO DES_IN_END BY -1 DO IF marrNode[y].Status.oxStarted > marrNode[y - 1].Status.oxStarted THEN mNodeTemp := marrNode[y - 1]; marrNode[y - 1] := marrNode[y]; marrNode[y] := mNodeTemp; END_IF; END_FOR; END_FOR; Starting: FOR x := DES_OUT_BEGIN TO DES_OUT_END BY -1 DO FOR y := DES_IN_BEGIN TO DES_IN_END BY -1 DO IF marrNode[y].Status.oxStarting > marrNode[y - 1].Status.oxStarting THEN mNodeTemp := marrNode[y - 1]; marrNode[y - 1] := marrNode[y]; marrNode[y] := mNodeTemp; END_IF; END_FOR; END_FOR; END_CASE; I have like 30+ of these in the enum. Not really DRY code right? These are custom made bubble sort filters in a function. You pass in the Datastructure, and say what function you want. (This is an enum collection of sorting functions) And then the Array with Nodes of Structs gets ordered. Why can't we have Iterators and Lambda's and build in standard functions like regular languages? Also i use bubble sort because it's the easiest to implement because i can't get this to code DRY. Problem with ST (Even the new one with classes) that it's very limited for programming datastructures and algorithms. Yes you still not want dynamic memory and you need to choose the correct algorithm so you know the most extreme edge cases regarding the time it takes to execute the algorithms.(Real-time execution) How are other people dealing with this? Here for example saw some software using an adjusted ST language and having FOR EACH possibility: https://www.fernhillsoftware.com/help/iec-61131/structured-text/st-for-each.html You can then build your own custom Iterator functions. I wish the IEC 61131-3 standard would be more expressive and having more standard modern features, but still keep close to the fact of no dynamics memory and real-time systems.
Last updated: 2023-08-31
Post by fabian on Sys Process Execute Command
CODESYS Forge
talk
(Post)
Hello, I have a question: Once the command is being executed, is there a way to kill it again? As the called application is running in the background, the user can't close it but it shall be closed/terminated, commanded by codesys. I have tried with "SysProcessTerminate" but I guess this is not correct as the RTE crashes when this function is called. Starting the application: IF GVL.xStrtQR THEN GVL.xStrtQR := FALSE; SysProcess.SysProcessExecuteCommand2(pszCommand:=sCmd, pszStdOut:=stdout, udiStdOutLen:= SIZEOF(stdout),pResult := ADR(GVL.pResQRTsk)); END_IF Trying to stop it again: IF GVL.xTrmQR THEN GVL.xTrmQR := FALSE; pResTerm := SysProcess.SysProcessTerminate(hProcess:=SysProcess.SysProcessGetCurrentHandle(pResult:=ADR(GVL.pResQRTsk))); END_IF Codesyscontrol Win x64, 3.5.19.10. Many thanks for any advice pointing to the correct direction.. :-) Regards, Fabian
Last updated: 2023-11-17
Post by jegerjon on Testing of Codesys program
CODESYS Forge
talk
(Post)
I have a simulation function that toggle xSimActive. I map all IO variables to "IO GVLs" when xSimActive=0. I map IO corresponding SimIO GVL to "IO GVLs" when xSimActive=1. Then I write code for the simulation program that runs when xSimActive=1. Typically increase flow corresponding to pump speed, simulate tankfilling corresponding to flow and so on. I made a FC that require a correct code to activate simulation to avoid unintended activation by service dept. When comissioned remove any possibility to activate simulation. Super when officetesting and supporting service dept. + cheap as it requires no additional equipment, and it is easier to support customer later on in the life cycle as you can test proposed changes without setting up a testlab.
Last updated: 2023-12-07
Post by jegerjon on Testing of Codesys program
CODESYS Forge
talk
(Post)
I have a simulation function that toggle xSimActive. I map all IO variables to "IO GVLs" when xSimActive=0. I map IO corresponding SimIO GVL to "IO GVLs" when xSimActive=1. Then I write code for the simulation program that runs when xSimActive=1. Typically increase flow corresponding to pump speed, simulate tankfilling corresponding to flow and so on. I made a FC that require a correct code to activate simulation to avoid unintended activation by service dept. When comissioned remove any possibility to activate simulation. Super when officetesting and supporting service dept. + cheap as it requires no additional equipment, and it is easier to support customer later on in the life cycle as you can test proposed changes without setting up a testlab.
Last updated: 2023-12-07
Post by mohammadasif on Blink Function definition is wrong in codesys online help
CODESYS Forge
talk
(Post)
https://content.helpme-codesys.com/en/libs/Util/Current/Signals/BLINK.html in the above link, please correct your website the following: "Output value, starts with FALSE and switches between TRUE and FALSE for the given high and low times" it should actually be: "Output value, starts with TRUE and switches between TRUE and FALSE for the given high and low times" if not please let me know if this has changed in a util library update, in your older website it has the right definition here: https://help.codesys.com/webapp/blink;product=codesys;version=3.5.11.0
Last updated: 2023-12-28
Post by fajean on Issues with "Add all instance path"
CODESYS Forge
talk
(Post)
In the past, we have routinely used the "add all instance paths" function to automatically add variables to VAR_CONFIG lists. My recollection is that compiling a project did not require VAR_CONFIG to be fully populated, and, once successfully compiled, instance paths could be added. Errors related to missing declarations, if I recall correctly, were thrown when downloading to the PLC, they did not prevent a successful compile. At some point, it stopped working. Missing declarations in a VAR_CONFIG now cause a compile error, so the application is never "current", the only reason I can see being the missing VAR_CONFIG declarations themselves (no other error). We observe the same behavior across all our projects. This is really aggravating, and I must be missing something simple. We use 3.5 SP17p3, 64 bits. Can anyone help?
Last updated: 2023-12-29
Post by alexgooi on Codesys licensing explanation
CODESYS Forge
talk
(Post)
Dear Forum, We are currently switching to a native Codesys controller, and I'm currently trying to determine the correct license. I have a question regarding the Modbus instances. With the Standard S license this is set to 4 (See picture). In our projects we are using a lot of communications to Modbus servers using a Codesys Controller, for this communication I'm using the ModbusFB library (supplied by 3S) (see picture). In my project I would like to use more than 4 instances of the ClientTCP FB. My question is, is this now capped at 4 possible connections with the standard S license. Or do these function blocks have a different relation with the license? Some clarity on this topic would be very welcome. Thank you in advance
Last updated: 2024-02-15
Post by fenicklar on Login problem with FileTransfer on Raspberry Pi 5
CODESYS Forge
talk
(Post)
Hello everyone, I'm currently trying to set up a FileTransfer function from a Webvisu to my Raspberry Pi 5 on Codesys 3.5 SP 19 Patch 6. I went in the files CODESYSControl.cfg and CODESYSControl_User.cfg and added : [CmpWebServerHandlerV3] AllowFileTransferServices=1 And it seems to be working. However, I cannot access my several Webvisu without putting my login. That's a problem because one of my webvisu is in kiosk mode on the raspberry itself and there is nokeyboard attached, it's just an information screen, but I can't view it. Is there a wey to enable the File Transfer without requiring to login ? Thank you for your time
Last updated: 2024-03-18
Post by mani-i4point0 on Issue with WebVisu on Raspberry PI
CODESYS Forge
talk
(Post)
Hi, I am running Codesys Runtime by purchasing 'Codesys control for raspberry pi MC SL', I am trying to use the Variables from my GVL's. Few of the variables used as a Pushbutton form the Visualization. These 'BOOL' Variable getting unlatched automatically even though there is no write function in the Overall project. All of them are 'Read' functions, at the same time few other BOOL variable behaviors are seems to be fine. I have tried, clean all and download, serval time restarted the hardware. Happy to share any any information. Your input to resolve this issue would be highly appriciated. Version Details: codesyscontrol 4.8.0.0, armhf codesyscontrol based on SDK 3.5.19.0
Last updated: 2024-03-20
Post by albzen on EtherCat Slaves diagnosis
CODESYS Forge
talk
(Post)
Hello everybody, I'm working on a RunTime Plc (Codesys 3.5.16/18.20) connected to an EtherCat bus with many devices. The bus has some communication fault but I don't know how understand which is the device or the cable that has the trouble. To understand the cause of the problem I would like to read the WKC (Working counter) of the devices (0x0300...0x030C), how is explained in EtherCat documents, but it seems that the read of the counter is disabled. Attached there is an extract of the Ethercat document. Can anyone give me some advice about how and with function can I read it. Thank you in advance!
Last updated: 2024-03-29
Post by albzen on EtherCat Slaves diagnosis
CODESYS Forge
talk
(Post)
Hello everybody, I'm working on a RunTime Plc (Codesys 3.5.16/18.20) connected to an EtherCat bus with many devices. The bus has some communication fault but I don't know how understand which is the device or the cable that has the trouble. To understand the cause of the problem I would like to read the WKC (Working counter) of the devices (0x0300...0x030C), how is explained in EtherCat documents, but it seems that the read of the counter is disabled. Attached there is an extract of the Ethercat document. Can anyone give me some advice about how and with function can I read it. Thank you in advance!
Last updated: 2024-03-29
Post by alexgooi on Modbus writing on value change
CODESYS Forge
talk
(Post)
The way I usally tackle this is by syncing only words (then you are able to use the FB above). If you then want to write a Boolean simply type it like this. Value[1].0 := Bool1; Value[1].1 := Bool2; Value[1].2 := Bool3; Uints have the same number of bits than a INT/WORD so these ones will work as well (they are only represented diffrently). A Real will work but you will loose some infomration in the conversion. If you want to keep the information you can convert 2 words to a float with a function (for example with the IEEE-754 standard) . In this way the syncing to the server is very simple and in the Codesys Program you decide what part of the word you want to use.
Last updated: 2024-04-03
Post by pethun on Upgrade from codesys 3.5.19 to 3.5.20
CODESYS Forge
talk
(Post)
Hi We upgraded our ptoject from 3.5.19 to 3.5.20 but we get an error message in the latest version. We made our own trend function and its related to this we get error message: Trend_Menu Device: PLC Logic: Application: C0032: Cannot convert type 'RTS_SYSTIMEDATE(systimertc, 3.5.20.0 (system))' to type 'RTS_SYSTIMEDATE(systimertc, 3.5.17.0 (system))' The variables are defined as follow: start : SysTimeRtc.SYSTIMEDATE; end : SysTimeRtc.SYSTIMEDATE; The code that creates the error is the variable start and end IF xAssign THEN xAssign := FALSE; xPanEnable := FALSE; xZoomEnable := FALSE; drs.liFrom := VisuTrendStorageAccess.TrendStorageConvertToTimestamp(start, 0 (us)); drs.liTo := VisuTrendStorageAccess.TrendStorageConvertToTimestamp(end, 0 (us)); drs.m_itfDateRangeSelectorClient.SetCurrentRange(drs.liFrom, drs.liTo); END_IF I cant understand really what the error message means and what can be the cause of the error? It compiles fine in dthe older codesys 3.5.19. If anyone has some experience of this please help us out? We must upgrade due to the new licenses. Thanks
Last updated: 2024-04-20
Post by pethun on Upgrade from codesys 3.5.19 to 3.5.20
CODESYS Forge
talk
(Post)
Hi We upgraded our ptoject from 3.5.19 to 3.5.20 but we get an error message in the latest version. We made our own trend function and its related to this we get error message: Trend_Menu Device: PLC Logic: Application: C0032: Cannot convert type 'RTS_SYSTIMEDATE(systimertc, 3.5.20.0 (system))' to type 'RTS_SYSTIMEDATE(systimertc, 3.5.17.0 (system))' The variables are defined as follow: start : SysTimeRtc.SYSTIMEDATE; end : SysTimeRtc.SYSTIMEDATE; The code that creates the error is the variable start and end IF xAssign THEN xAssign := FALSE; xPanEnable := FALSE; xZoomEnable := FALSE; drs.liFrom := VisuTrendStorageAccess.TrendStorageConvertToTimestamp(start, 0 (us)); drs.liTo := VisuTrendStorageAccess.TrendStorageConvertToTimestamp(end, 0 (us)); drs.m_itfDateRangeSelectorClient.SetCurrentRange(drs.liFrom, drs.liTo); END_IF I cant understand really what the error message means and what can be the cause of the error? It compiles fine in dthe older codesys 3.5.19. If anyone has some experience of this please help us out? We must upgrade due to the new licenses. Thanks
Last updated: 2024-04-20
Post by bjarne-pagaard on Codesys v3.5 Sint to byte
CODESYS Forge
talk
(Post)
Hi A SINT is a short (signed) integer. It is already only 1 byte - so you should have no problem casting it to a byte like so: bMyByte := TO_BYTE(sintMyShortInt); If you have a regular INT you want to put in 2 bytes - there are a lot of ways you can do this. A Union is certainly one of them. You could have a union with 2 memebers: An array of 2 bytes as one member, and an integer value as another member. Another way would be to look at MEMCPY to put the value into your CAN-message. .. or create a function to take your input value as input, and giving you 2 individual bytes as output. This could be handy if you need to change the byte-order. Integer data types: https://help.codesys.com/webapp/_cds_datatype_integer;product=codesys;version=3.5.17.0 -Bjarne
Last updated: 2024-04-24
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
.