This video is great at explaining the I/O control on the CLX. Unpredictable output reaction like that should always be a concern all automation programmers. The same test can be proven accurately by adding a new task with a delayed time period such as the default 10ms. Place a counter (or Add +1 instruction) in the new task to determine how many times the output bit is caught being on "when it's not supposed to". This will illustrate how the task logic is independently running just like the embedded I/O. If there is a concern about even the slightest output chatter, the counter never lies. The best rule of thumb is to know the control system, eliminate warnings the same way you would heed all warnings from a C++ compiler, and run simulations.
@TimWilborne Жыл бұрын
Great tips!
@DaDaDaddeo Жыл бұрын
I forgot mention to add an ONS if you want to count only the single detection of the bit being on. It may not matter much regardless unless you slow the scan rate like Tim does later in the video.
@DaDaDaddeo Жыл бұрын
This video should be an eye opener and this topic should be a must for all programmers. All conditions, not just I/Os can be misread in separate tasks when sharing global tags that can change state in multiple locations. Even good practices such as using OTL and OTU instructions and not using AFIs will not matter. I am definitely in the camp of batching global tags (including I/O) that are shared with other tasks and that conditions to handle these tags are kept within the same synchronous logic.
@TimWilborne Жыл бұрын
Very true
@seeigecannon Жыл бұрын
I wish Studio 5000 (or any PLC IDE really) had a trace button like Labview. It is so useful to watch one instruction happen at a time (even if it would have some problems translating to full speed again). I was once racking my brain for a long time trying to basically figure out why an ADD instruction was giving me 3 for 1+1, turned out I was writing to that variable elsewhere from the first time I tried implementing that feature.
@TimWilborne Жыл бұрын
I should do a video sometime on how I debug programs. The big problem I see people do is exactly what you are asking for. They start at the top left and try to trace the logic to the bottom. The key is to start at the result and work your way back using the cross reference.
@TheDrewbe311 ай бұрын
Interesting. I was not aware that a physical output would update immediately upon going high. For some reason I was thinking it waited until finishing the ladder scan.
@TimWilborne11 ай бұрын
It isn't that they are updated immediately, it is that they are updated asynchronously based on the RPI of the particular IO module.
@jgomez7535 Жыл бұрын
Great explanation of AFI. Allways writing zero, dependant of scan time, RPI and used to temporarily troubleshoot
@TimWilborne Жыл бұрын
Glad it was helpful!
@darthenx2585 Жыл бұрын
Bummer I missed this live. I would have asked to see how you would of prevented it?
@TimWilborne Жыл бұрын
Prevented the watchdog fault...? Let me do some thinking :)
@darthenx2585 Жыл бұрын
@@TimWilborne no prevented the light from turing off, but still leave the AFI or alternate option, in case you needed to block a rung on purpose.
@TimWilborne Жыл бұрын
Ah, good point. There are a few ways, I'll follow up next week.
@TimWilborne Жыл бұрын
Here you go. kzbin.infoqLXBDobuA2U?feature=share
@electrician240 Жыл бұрын
Thanks for all your videos! I started watching your video's thanks to eric!