Hi everyone I have a client who wants to datalog to csv files on a Codesys PLC and have this data uploaded to the cloud. However these machines have no access to internet as they are in the middle of the nowhere. Here is their idea: once a day, they want to export that csv file to an Android device that is on the same LAN and have that file be automatically transfered to the cloud once the Android device regains internet access back at the office. We will be using the Android device as a middle man....
This now makes complete sense and validates the behavior I was observing. Thank you for your help. I have issued a bug report to the manufacturer and have found a work around for now as per your suggestion. Thank you
This now makes complete sense and validates the behavior I was observing. Thank you for your help. I have issued a bug report to the manufacturer and have found a work around for now as per your suggestion. Thank you
Here is a snip of the Input and Output assembly mapping with Bit 5 and 6 that I was mentioning.
Hi @i-campbell Still no improved results after more troubleshooting. The VFD still gives an IO message timeout fault if I am holding a constant speed command. I can also see in the Codesys Mapping that the Link for EthernetIP module: https://download.lenze.com/TD/COM__ESV__SMV%20EtherNet-IP%20module__v2-0B__EN.pdf I've followed the commissioning procedure with no luck. I've attached the Wireshark results. One thing I am noticing is that the feedback from the VFD doesn't match exactly what Codesys...
Thanks @i-campbell Your suggestion solved one of the issues: I no longer get a connection failure every 10 seconds or so. However I still have this issue: If am varying the speed command, the VFD will function normally until the speed is held at a constant value after which a timeout fault will occur. The VFD documentation labels this as an "IO Message Timeout Error". This seems to indicate that the speed command and enable command is only transmitting 'on change' however everything seems to be set...
Hello everyone I am having a hard time diagnosing an intermittent Ethernet Connection Failure. I am using some Lenze SMV Frequency Drives and communicating to them over EthernetIP from a Control Win soft PLC and compiler V3.5.17.20. I am noticing two different behaviors: If am varying the speed command, the VFD will function normally until the speed is held at a constant value after which a timeout fault will occur. This seems to indicate that the speed command is only transmitting 'on change' however...
Hello I am working on an application and it seems that the alarm manager doesn't always pick up alarms that are active for a single program cycle. For example: a timer expiring. The process will run until the timer expires, however the alarm signal of the expired timer is only active for one cycle and the process is stopped. This seems to be too quick for the alarm manager to pick it up and display the error or warning in the alarm table. My solution in the past has been to introduce a TOF on the...
Good day We need to transfer 100 MB CSV files stored locally on the controller up to the Cloud through our REST API. What would be the preferred method to do this using Codesys? We are exploring the IIoT Library SL from the Codesys Store at the moment. We can adapt the REST API to best match the Codesys implementation. Can we directly upload a CSV to our API using HTTP PUT with the WebClient SL from the IIoT library? Are there better alternative we should consider? Any ideas are much appreciated....
Good day I am looking for a way to upload a CSV from the PLC to a remote MySQL Database. My first thought is to use the MySQL command 'LOAD DATA LOCAL INFILE 'myfile.csv' INTO TABLE myTable'. Has anyone accomplished this before or can recommend a way of doing this? Here is a link referencing the command: https://www.mysqltutorial.org/import-csv-file-mysql-table/#:~:text=The%20LOAD%20DATA%20INFILE%20statement%20allows%20you%20to%20read%20data,the%20file%20will%20be%20imported Thanks in advance
Hi team I'm still on the hunt for graphics libraries that are representative of the new modern High Performance HMI design philosophy. Anyone know where I can access premade items? I am very surprised Codesys doesn't offer this. Thank you
Hi Everyone Are there existing libraries for Codesys Visualization that contain chemical process plant elements? I am looking for graphics of pipes, valves, silos, hoppers, tanks, gauges, different styles of pumps, etc. I need access to element properties to turn pumps, valves and pipes green in color when activated for example. I would also like to show the direction of flow through 3-way valves. If the visualization elements could have these properties built-in, that would be ideal. Any info is...
Hi Everyone Are there existing libraries for Codesys Visualization that contain chemical process plant elements? I am looking for graphics of pipes, valves, silos, hoppers, tanks, gauges, different styles of pumps, etc. I need access to element properties to turn pumps green in color when activated and such. Any info is appreciated! Thank you
@m.prestel thank you for the info. I have got it mostly working now. The only thing remaining is retrieving the FullUserName from the internal user database. Does anyone know a command or method for that? I can't seem to find anything for this, but I would expect there to be a method that could return this similar to VisuUserManagement.g_VisuUserMgmt2.CheckLogin(). Here is what is working so far: (please note that so long as the username and fullusername are the same, this code works fine) pclient2...
V3.5 SP15
Thanks for the resources! No, it only logs me into the TargetVisu, none of my Webvisu will get logged in even if I am pressing the login button on the Webvisu Visualization. I need a way to detect which client has pressed the button and log in that specific client. Any idea how to achieve this?
Thanks @Morberis, the example on the pi page was very helpful and has me headed in the right direction. One question for yous: the code snip below will log me in automatically, but regardless of which visualization I log in from, it will always log me into the TargetVisu. Do you know what is missing so that it will log me into the visualization from which the login button was pressed? I'm assuming it has to do with detecting the press of the button and matching it to the proper pclient? LoginButton_R_TRIG(clk...
Thanks for the feedback. To simplify things: What can I do to make the text boxes in the attached Capture take in the username and password? How can I make the Login button initiate the login code? For example: VisuUserManagement.g_VisuLoginProviderManager.m_arrLoginProvider[iIndexLoginProvider].stUserName ^^This doesn't seem to work. Any ideas?
@m.prestel I've been playing with the custom user management library provided by 3S (C:\Program Files (x86)\3S CODESYS\CODESYS\Projects\Visu\Dialogs\VisuUserMgmtDialogs.library), however it doesn't seem like this user management system is linked to the stock one in Codesys. Can you shine a light on this for me please? See picture attached. Thank you
Hi @m.prestel The performance issue is hardware related which only occurs on the TargetVisu and the manufacturer has acknowledged it. The login dialog works very well on Webvisu. With that being said, I'm not sure you'll be able to replicate the issue on your end. My idea is to simply modify the stock user management dialog to improve the performance on the target visu. I want to create a simple frame with a text box for username and another for password. Once those two are entered, the user will...
Hi everyone Is it possible to create a custom user login frame with simple text fields for username and password and a login button that executes the search for a matching user name and password? Basically I want to use the existing backend of the stock user management but not the front end graphics. The reason for this is that I am having performance issues using the on-screen keyboard that is built into the front end of the stock user management. I don't have any performance issues if I use a simple...
Hi everyone Is it possible to create a custom user login frame with simple text fields for username and password and a login button that executes the search for a matching user name and password that match the text box inputs? Basically I want to use the existing backend of the stock user management but not the front end graphics. The reason for this is that I am having performance issues using the on-screen keyboard that is built into the front end of the stock user management. I don't have any...
Hi everyone I am using UserManagement in my project and I am looking for a way to automatically login a user if they select a button labelled "Operator" or "Supervisor" without needing the UserManagement dialog popup. Is this possible? I don't care to get password validation, the password could be hard-coded in the background... Let me know. Thank you
Did you ever find a solution?
I assume you mean you have one controller and 4 HMI? The next question I would have is that do you want all 4 HMIs to have control at once or are you looking to only have 1 HMI be in control at any given moment?
Nevermind, I just thought of how I am able to accomplish this: I will just use a variable in ST to toggle the visibility of the numpad and a global variable to take in the input of the numpad. I will then use ST to assign the values of the numpad to the correct variables...
I am looking to update values in a table by simply clicking on a valid cell and having a number pad pop up for user input. Any ideas on how to do this? Currently I am using some cell selection values and a separate button to enable and disable a numpad. However I would like to have the numpad pop up automatically every time a new cell is selected...
Hi everyone Is there any way to pop up a numpad on screen with ST? Pseudo code: If Boolean = true then numpadEnable = true; //make numpad appear on screen for user to enter data End_if If this is possible, how do I assign which variable the numpad should write to? Thanks in advance!
Great suggestion and this would work very well, but unfortunately it doesn't seem to return location data. Do you know otherwise? I am currently looking into other apps that simply broadcast GPS location by UDP.
Hi everyone I am trying to request the geolocation of an Android device that is connected by Webvisu. Do you have any recommendations on the best way to place a request through a web browser using the Codesys platform? Any ideas are appreciated! Thanks
Will GVL.xVisuPageActive reset to false if the user navigates to another app on the tablet?
Yes I understand, but this is the behaviour that I've seen in the past: When I am on Visu1 with Button 1, and Button1_State = true, once I switch to another app of my android tablet, button remains true (Button1_State = true, not Button1_State = false) Assuming my observation are correct, if Button1_State remains true, then my BLINK function won't stop running even though the user has navigated to another app on the tablet. My thought is by having an element on the screen that reflects the blink,...
Yes I understand, but this is the behaviour that I've seen in the past: When I am on Visu1 with Button 1, and Button1_State = true, once I switch to another app of my android tablet, button remains true (Button1_State = true, not Button1_State = false) Assuming my observation are correct, if Button1_State remains true, then my BLINK function won't stop running even though the user has navigated to another app on the tablet. This is a safety issue for us as all processes must stop if the user navigates...
Yes I understand, but this is the behaviour that I've seen in the past: When I am on Visu1 with Button 1, and Button1_State = true, once I switch to another app of my android tablet, button remains true (Button1_State = true, not Button1_State = false) Assuming my observation are correct, if Button1_State remains true, then my BLINK function won't stop running even though the user has navigated to another app on the tablet. This is a safety issue for us as all processes must stop if the user navigates...
Alright so I can call a function from the text variable field? Interesting...now what if I wanted a function to work as a heart beat to know if the visu is active and in focus? My initial idea was to use a Blink signal to activate a button that would run some ST code. Once the visualization is no longer active, the ST code would stop running... Is there anyway to force a click or tap of a button through ST code?
My idea would be to have a BLINK signal generated by the web server and have a button or element replicate this heart beat signal, which would tell me that at least one instance of this visualization is active and in focus...
@Chris.O: how did you call a function from within the visualization without pressing a button? I can't seem to get ST to execute without actually having a button pressed...
Hi @m.prestel, yes I am working on this with @jackcaissey We are having a similar discussion in this thread with @Chris.O and @Iota: https://forge.codesys.com/forge/talk/Visualization/thread/b12815b7cd/?page=1&limit=25#6941
Yes we've come across the html/java methods as well. Do you know if it would be possible to run a html/java script internally or externally of the PLC that could detect the focus? Then we could make one of the variables accessible by a script inside the Codesys program?
Hi everyone We are currently trying to figure out how to detect if a webvisu is in focus or not on specific clients. Has anyone been able to make ground with this? Any direction is appreciated. Thank you
Has anyone been able to detect if web browser focus from a specific client has been lost?
Great, I will try and get this all put together before the end of the week and share my results in case anyone else has the same needs. Thank you
Yes I am already using the CurrentVisu variable in my program, but it has no reference to the login. Basically all Webvisu and TargetVisu instances show the same visu at all times. If one visu changes, they all change. I am looking for a way to limit the inputs to only one single visu instance, wether it would be a TargetVisu or a WebVisu. I am thinking that I need to find a way to limit the number of simultaneous logins to 1 at a time. This would allow me to restrict input to one single screen and...
That may be the way to go. Could I limit the number of user logins to 1 at a time? Meaning, if I have one WebVisu instance open and am logged in as User1, then another person logs into a second instance of Webvisu as User2, User1 automatically gets logged out?
@Chris.O: Alright that would work, but would be very tedious to set up for a large program. Also, it might be tricky to handle for Numpad inputs and such?? Is there a global variable available that disables all inputs coming from a specific IP address? This would be the ultimate solution.
Sorry, I meant @Chris.O, my appologies
Thanks for the reply @dkugler, my problem is also relevant to @Iota application. Our remote panels are for display purposes only, so how do I disable inputs from these WebVisu instances?
Thanks Marcel, but I am using WebVisu to remotely log into a PLC and I would like to disable all inputs from the remote login until the operator next to the actual PLC selects a button which will enable the remote user to start actions. Any thoughts on this? Thanks
Hi dkugler, how did you manage to only allow certain IP addresses to start an action amongst other IP addresses?
Hi everyone 1) I am using WebVisu as a secondary screen and TargetVisu as my main screen. Is there a way to disable inputs from WebVisu so that it is used only as a monitoring display? 2) Also, is it possible to disable inputs from the TargetVisu and enable inputs from only a Webvisu of a specific IP address? The idea is that although both screens display the HMI, I only want one screen to accept input for safety reasons... Thanks in advance!