Jump to content

Fernando Castro

  • Posts

  • Joined

  • Last visited

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

Fernando Castro's Achievements


Newbie (1/4)



  1. It worked!! after the blank project was not working but since i needed to dissasembly the front panel to have access to the usb port i cut the power, then installed the usb cable, after I turned the power back on I tried to enter info mode again and it worked... maybe after the blank project needed a power reset too to complete the "reset"?
  2. I already have looked at SB16, SI40, SI41 0,-1,-1.. SB19 I will look after I could restore communication since already downloaded a blank project to the PLC what does SI 19 stores? The blank project did not work.
  3. I will try in a momment, since i could lost connection over ethernet port again I need to downlad some files firstha (The cabinet has no door and practically I need help of maintanance to dissasembly the machine again to connect over usb if the blank projec does not work 😅). Is there a good reason to believe that a blank project will solve this or is just a general recommendation?. I was able to enter to info mode and calibration mode for the touchscreen using the remote operator but still no luck triying to get the HMI working again.
  4. Has anyone encountered a situation like this? The touchscreen just stop working after downloading a new program. I can use the remote access tool but not the HMI. I tried to init and reset from the communication settings, and now I am unable to connect to the PLC since the IP got reset.. 🤦‍♂️ I will try to connect thru the USB port and reinstall the OS again. Any suggestions?
  5. Hi, I have 2 versions of Machines one uses V570 and the other one v700, FOR THE v700 The SD browser tool from the HMI looks very tiny (I assuming because of the resolution), the same with the info mode menu. Is there a way to adjust that to use all the screen? and also I've noticed that that menu (SD browser) Can not be displayed with the remote operator. Is there a way to fix that or Should I start to build myself a menu for browsing the SD Card files ? And another thing that I noticed is that for whatever reason v560 feels more responsive than V700... clearly, I am not an expert on Unitronics, but isn't V700 supposed to be the better one?
  6. Oh boy! it surely does, the ammount of small details im implementing for this is crazier each time... the end user will be requesting new changes until there is no more time to do changes
  7. On my current application I am reading and writing recipe values from a data table, the recipe will have a variable number of steps, I already had the logic to navigate thru the recipe employing indexing numeric values in the screen ( 8 x 8 ) values of mixed data, some MI, ML, MB, and T. The user requested a way to detect if there are some changes on the recipe that haven't been saved, and flag that row to ease the visibility of the changes made on the actual recipe. The values of the recipe also should be required to be saved only if you press the save button since the recipe should be able to be edited "live" while the process is running and you want to execute all the changes of each step at the same time. so, I was wondering if the best way to do it will be using a struct to store the values of each row on the screen to a vector each time the screen is refreshed (that happen when the user touches the Next or Previous pages, that changes the indexed number + 8 and reads the Data table corresponding to that indexes values and stores it to the variables that are on the screen), then have another struct that stores the variables that are on the screen to a different vector, and compare those 2 vectors to detect if some value has been changed but not saved ( since the values on the data table will be different from the ones on the screen). However, my main concern is to do that with 8 structs for the DB, 8 structs for the screen, or use 2 structs only (1 for Data table 1 for the screen) and make a "sweep" thru the 8th current indexed values. that second option will implicate reading the data table 8 times per program scan rather than reading 8 times per page update. The main concern is rather to use more addresses in the memory or more time for each scan. The other question that I have is what about using the Map function instead of a struct, there is a significant difference between those 2? or is there a way to detect if the user has touched some variable on the screen? I personally dont want to keep using more vectors in the memory because at this point it may be difficult to keep track off all the memory addres that are being used
  8. I have a case in which a particular setting was changed after downloading a new revision, I downloaded a beta version of the software on Friday, tested and worked ok. then keep adding features over the weekend (minor aesthetic changes requested by the user) then on Monday downloaded the newer version to test the process with the product. Long story short one of the settings on the calibration screen was changed and the pressure reading was off by 10 mbar which caused a very unstable process. I am not sure what happened since that particular MI can only be changed on the settings screen password protected, I guess that the MI on the project could be changed while running online on the plc that I use for testing. I did backed up the operands from the machine just for precaution before updating it but I did not think that I would be needing to restore it... the machine have not been running since Friday. Maybe the online carries out some operands with it after you log off and if the project is saved some values too? maybe the best way is: go online, export the operands, then download the project then import the operands again? Anyway, the data table seems to be a tempting option to be able to manage the 200 devices in the future or at least have a subroutine for loading the default values, the other issue that I have is the standardization of the process 😑 having that option is pointless if every system had different settings due the nonstandard and manual adjustments that each one needs. One of my professors used to say that a good design needs fewer adjustments
  9. yes, I also have experienced that a lot!. I need to finish a new version of the software and update near 200 devices, but so far I haven't found a proper way to do a "backup" "update" and "restore" the old values for some settings, and also change others on each download. It's crazy how I can do multiple downloads on the same device and same computer after some tests and have some settings now to be different. I mean most other brands ask you to keep or change values stored in memory, but unitronics seems to do, it only for timers... and also what about everything being persistent in the memory I really like the hardware but the software Is so Confusing and frustrating!!
  10. Probably no one else cares about it, but I found another bug in visiologic software. I don't know what happened but I edited one line of a program, then did the same change in another revision. both lines of the program are identical but one works the other does not. I Just exported the working subroutine and replaced the nonworking one but. this kind of thing is not supposed to happen, at least is the first time that I see something like this on PLC software. 😤 I could be spending weeks trying to figure where was the problem I looked at the STL view and seems that the data from the formulas is somehow different from one to another. 100,7,42,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,66,10,0,0,0,5,15,200,66,0,0,6,5,37,0,0,0,2,255,0,0,0,0,1,255,0,0,0,0,5,5,35,0,0,0,6,15,200,66,0,0,40,40,68,101,115,105,114,101,41,42,49,48,48,47,77,77,95,80,69,82,95,82,69,86,41,42,83,84,69,80,95,80,69,82,95,82,69,86,47,49,48,48,79,80,66,0,10,0,5,0,37,0,5,0,35,0 vs 100,7,42,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,66,10,0,0,0,5,37,100,0,0,0,6,5,37,0,0,0,2,255,0,0,0,0,1,255,0,0,0,0,5,5,35,0,0,0,6,37,100,0,0,0,40,40,68,101,115,105,114,101,41,42,49,48,48,47,77,77,95,80,69,82,95,82,69,86,41,42,83,84,69,80,95,80,69,82,95,82,69,86,47,49,48,48,79,80,66,0,10,0,5,0,37,0,5,0,35,0 I am not sure what those numbers mean but seems to be the formula translated to some decimal or other format. anyway the formulas are the same in the text format ((Desire)*100/MM_PER_REV)*STEP_PER_REV/100 vs ((Desire)*100/MM_PER_REV)*STEP_PER_REV/100 or ... maybe the data was corrupted? Feel free to take a look, even the software handles both same routines as being different if you try to download a projet that has one instead of the other. P.D. I am not the original autor of this program, I just changed the result of the formula to be at MF instead of ML then because I needed more precision find the difference..vlp
  11. 🤔I get what you are saying, basically a decimal point shifting, I guess that's a good and simple solution... I solved it by doing the math with floatings and discarding the decimals which in a way is the same but yea the div seems simpler, I also thought that has to do with some calculation in the background. anyway now I trust more in the math than in the linear function
  12. Fair enough @Ausman. I doubt this issue will be happening with an MI since the MI can't store 1,402,000. however, maybe this will be happening with another set of numbers? that is difficult to know. By the yaw ML are accepted by the LINEAR function that's what HELP file says: You can convert values contained in the following operand types: Memory Integer (MI) Memory Long Integer (ML) Double Word (DW) System Operands:(SI) (SL) (SDW) I am just reporting what I think could be a bug, also reported directly to unintronics support as soon as I spot it, if I am doing something wrong I will be glad to know, maybe I am just being stupid but so far I haven't found an explanation of why this is happening.
  13. Yes, I don't need the precision of ms but, that's the way the time works, if set a timer of 5hrs y got an MLof 1,800,000. the point is using a time input directly stored on an ML, and handle a TIME input as a number that would be easy to handle, what you suggest is to use minutes as hours, seconds as minutes, and 10msec as 1 sec. that would work for having an input of "REAL TIME" to an ML but I could use the same timer counting down as an input. My core logic is simple: 1. Have a TIME input on the screen 2. Load that TIMER on the ML 3. Start the TIMER 4. Get the output as a function of time. Again, that's the "easiest" way to handle a recipe with MANY time inputs, that way I use the screen variable timer as an input because I have 1 input per time value and I don't need to convert HR:MM: SS and count, since a single LD does that conversion and just need to start the timer. As mentioned above I solve the problem by not using the LINEAR function and using the math of linearization on a formula, I am not asking for a solution. I already solved it and the software has been running without problems. Maybe I am using this in a way that was not thought before (I get that using a timer to count down and that as an input on a linearization is not a usual thing) In my opinion that was a very creative solution to a very specific problem that I needed to solve. The issue here is that this conditions on the LINEAR function: X2=0 (End value as the timer goes to 0) X1=1800000 (timer value 5:00:00:00 loaded on ML) Y2 = 6000 Y1=600 should work for every value from 180000 to 0, because every value is within the ranges that the help file listed, I read that before even try.... and to be honest the solution worked until the right conditions meet and then it did not.
  14. 🤦‍♂️ @Ausman you keep assuming I don't know what I am doing.... so, ok I will assume that you are NOT being arrogant and that maybe I was not clear on my previous statement due to a language barrier. of course, the LINEAR function will not stop at ar min or max value, that's the point of a linearization you gave the "initial" and "end values" to calculate the "slope" you don't expect that the linearization ends at certain values, I have that on consideration on my actual program, and I handle the min arnd max values in a particular way to prevent being out of range. what I was trying to explain is that it overshoots over 7000, and the max value is 6000 which corresponds to 1800000 value on ML100, and at that point, since ML100 is near 1402000, then it couldn't be possible that the value at the output of LINZ is more than 6000 which is the value at 1800000 since 1402000 is less than 1800000 (you know... math). but, let me give you more information, in the machine that I was running the program I noticed the issue looking at the data after an imminent failure involving this LINZ problem: In this case, blue is what was sent to the analog output, in my program I have a condition to no update that value if it's out of range, I am not sending the max or min possible values if it is reached, instead I am just not updating the output (this is better for my particular process, and it helped in this situation because that spike after an hour the start of the ramp down would be very very bad, at least I got 1 HR of stable conditions after that ) anyway, as you see in the red line that I have drawn (which is what I concluded was happening in the background), at some point the value overshoot at above 7000, and then continue going down but 1 hr after that the value reached 6000 again (since was going down from 7000 now) since 6000 is within range, the output was updated again, that's what we see a "step" at the last 3 minutes, after that the system was shut down and then reset to the initial conditions, that's why it goes to 0 and 600 ( initial PW =600) the orange line is what was desired to happen .... a linear and consistent ramp down from 6000 to 600 while counting downtime. I am not going to upload any other program, I already did it. It will be better if you could do a test and prove on your hardware, maybe is a v700 issue, maybe is a Visilogic Issue, who nows! test different hardware could be good. Start the countdown with these values X2=0 (End value as the timer goes to 0) X1=1800000 (timer value 5:00:00:00 loaded on ML) Y2 = 6000 Y1=600 countdown to 0 and wait. the overshoot happens near X= 1402000 (Not exactly at that number but I always override the timer at (3:55:00) and wait for until happens (a couple of minutes later) I already did it counting down from 1800000 and the same happens.
  • Create New...