Pragmatic 48: You Say Data, I Say Daaa-taaa

4 December, 2014

CURRENT

SCADA User Interface design has many things in common with other graphical design methodologies. We look at how SCADA works, what it does, the limitations of the human eye and colour perception, buttons as buttons, indicators as indicators and more.

Transcript available
Welcome to Pragmatic. Pragmatic is a weekly discussion show contemplating the practical application of technology. Exploring the real-world trade-offs, we look at how great ideas are transformed into products and services that can change our lives. Nothing is as simple as it seems. This episode is sponsored by Lynda.com. Lynda.com is the easy and affordable way to learn, where you can instantly stream thousands of courses created by experts in their fields of business, software, web development, graphic design, and lots more. Visit lynda.com/pragmatic to get a free 10-day trial. If you've ever wanted to learn something new, what are you waiting for? This episode is also sponsored by Harvest. Harvest lets you time your tasks wherever you might be doing them and then easily analyze your time sheet to track non-billable or hopefully billable hours, then turn those into invoices for your clients with both PayPal and Stripe integration. Check out Harvest at getharvest.com and sign up for a free 30-day trial and start tracking your time and invoicing others simply and painlessly. Once your 30-day trial is up, use the coupon code 'Pragmatic' at the checkout and you'll also save 50% off your first month. But hurry, this offer expires January 15th, 2015. We'll talk more about them during the show. I'm your host John Chidjie and I'm joined today as always by Vic Hudson. How's it going Vic? It's going good John. How are you? I am exceptionally exceptional. All right. Well, I've had a lot of caffeine. I mean I should put it that way. In which case that's the caffeine talking. So the caffeine is exceptional or whatever I don't know. Lovely. All right. So you know what? We're going to get straight into it this week. I have had several requests from listeners to talk more about my current wheelhouse in engineering and it has nothing to do with ships, no, it's not actually a physical wheelhouse. I'm talking about specifically this episode, I want to talk about SCADA. Now I have talked about SCADA previously briefly, briefly, previously, previously, briefly, I really didn't go into very much detail at all. I've talked about it on a couple of podcasts that I've guested on, just to explain a little bit about what it is, but I've never really gone into some of the details in depth as to some of the things about Skada that I think matter a lot, that a lot of people don't. Yeah, and honestly, I think there's a lot of user interface paradigms that I've learned from my very brief time developing on iOS and on the Palm Pilot and on other platforms that I've brought with me into the SCADA world. And one of the things that depresses me a lot is that a lot of engineers that work in SCADA or electricians, for example, is the other big contingent that worked their way out from just wiring to programming PLCs and programming SCADA systems is that they don't have any real experience programming in user interfaces. So, they don't have a grasp on the concepts of user interface design. And I consider that some of my early SCADA systems that I did were absolutely horrible. And I look back on them and I feel terrible that my name is associated with them because I'm like, "Oh, man, that is so bad. I need to do better." And again, I've talked about this previously as well is that desire to do better, to want to make your stuff better is something that I really look for in developers, designers and engineers that are working for me. In particular, I want that because that is an attribute that leads you to a point where inevitably you look back at your stuff and say, "You know what? I would have done this better and that better," because there is nothing that is so perfect that there is not something that can be complained about and improved and refined. Yeah. Anyway, so without further ado, what is SCADA? Do you know what SCADA stands for? I think I do, actually. Oh, and go for it. That would be supervisory control and data acquisition. Absolutely. You say data, I say data, and some people even say data, which is even more weird, but never mind that. (laughs) - Yes, I got me data. Anyhow, so yes, that's exactly what it is. And what that actually means, 'cause people will probably still listen to Supervisory Control and Data Acquisition and say, "What?" So what it means- - So we translate it from German to French. When are we gonna get to the English? - Okay, so the English translation of what SCADA is, is it's essentially become, and I guess I'm focusing on the last 20 to 30 years using a graphical user interface, is it's become software that runs on a desktop PC platform and it allows you to, it's essentially becomes the window into the control system. So your control system is run by PLC or a DCS or an RTU, all of those things, it's a black box somewhere. Okay, not always literally black, doesn't have to be black. It could be a horrible shade of gray like Siemens gear, or it could be a disgusting shade of bone or brown like some of the Schneider gear, or it could be whatever color, it really doesn't matter. Call it a black box if you like, makes it easier. Anyhow, and that'll do, it'll take a sensor input from a PE cell, we talked about photoelectric sensors previously, and it'll take inputs like an inductive proximity switch. So, you know, something that has enough, enough ferromagnetic material such that it passes the front, it has an inductive effect and that inductive effect can flick a switch. So sensors of different kinds, it could be scales, it could be a level instrument, it could be an ultrasonic measuring distance, there's a whole bunch of myriad of different sensors that connect into a PLC, a DCS or an RTU to tell it some key piece of information about the machine or the plant that you're controlling and of course you'll have the outputs and the outputs will drive things like motors to spin at certain speeds or an actuator hydraulic actuator to extend or retract or move to a specific position you know 101 different things if I were to list them all but all of that and all that control and processing is all done inside that black box programmed in different languages whether it's you know function block diagram whether it's a ladder whether it's you know STL like structured text languages now STL you know whether it's machine code and if you're unfortunate to be programming in them then that's still you know or high-level languages that are compiled down it doesn't matter the point is that it becomes essentially a standalone controller and that's fine if you have a system that is essentially completely independent it requires no operator input you simply put stuff on a conveyor belt and it just goes sorts itself out. Okay. Because it has no built-in interface, right? Yeah, because it needs no interface. You know, it is essentially a machine where that will take care of itself. And to be perfectly honest, in the sorts of areas that I work, there is really no such machine. There is always some degree of operator input. There is always some degree of operator feedback that you require. I mean, imagine, picture a place like a male sorting facility. And I don't mean mails as in you and I are mails. I'm talking about mail that you post to someone else. I'm going to put this box in the mail to you. So there you go. Anyway, and you've got a dozen conveyors and probably more than a dozen, several dozen conveyors. They've all got RFIDs on them or barcodes. We just talked about that last episode. How about that? And you want to trace and say, "Okay, well, you come from this bin and you fall down this chute, fall on a conveyor, you know, we'll have a system that writes itself such that the box is always the right way up and we'll have a bunch of scanners that will scan the RFID tag and say, right, you go along this conveyor and go to this location. And all of that information is pre-programmed in the machines. It says, okay, you're going to zip code blah. You need to go to this box. And then you'll be sorted from that level further down again. Eventually you'll end up on a truck and that truck will then take you to the next post office, which will then sort you further. So anyway, those sorts of systems can be automated without much of an interface. and you would think, well, that's fine. I don't need to see what's going on inside the PLC's brain. It's going to figure it out because it's all been programmed. And that's great. It's autonomous, right? That's the whole point of automation, autonomous automation. You don't have to do anything. That's great. Unfortunately, people want to be able to look at what's going on. - What if inboxes do it differently? - Exactly. I mean, you may want to override and say, I don't want this. I want all these going to this zip code. I want them to go to a different mail sorting center. So you need to be able to tell the system what to do and to override certain things. You may want to jog the system. So let's say you've got a conveyor belt and you want to manually override and say, you know what? I'm not going to send any parcel, I'm just going to send this big one here. So I'm going to stop the automation. I'm going to flip this one over into manual control and I'm going to jog it specifically and push it into this bin. And this bin will take it specifically, well, hopefully not a rubbish bin, but out to a different, you know, truck. Or if you're really, you know, concerned, perhaps, you know, one of these light fingers, light-fingered post office employees you hear about that open the mail because they realize, Ooh, there's a MacBook Air in there. Or, you never know, maybe a Microsoft Surface, who can say. Anyhow, so, um, They don't steal those. That's mean. Actually, one of the, one of the managers that I work with has a Surface Pro 2 and, um, he takes it to every meeting and I've had a look at it and I've had a bit of a play with it. And yeah, it's pretty sweet, but I mean, you can't use it on your lap and that is a deal breaker for me. and I've talked about that previous in episode 29. Anyhow, you can't fight the physics, what can I say? Anyhow, so yes, lovely. So they need to be able to do that. So how do you do that? You've got buttons, you've got toggles, and of course you've got a more modern equivalent, which is a SCADA system. And what that does is it gives you the ability to observe what's going on inside the memory of the PLC. So all these things that say, oh, I've got a parcel here, I've got a parcel there, it's on this conveyor, that conveyor is moving at whatever rate it's going at, all of that useful and perhaps less useful information can be displayed graphically. Sometimes they'll just be lazy and they'll have a little indicator light or they'll have a number. So this conveyor belt's moving at five feet per second. We actually, that's really fast. (laughs) 10 feet per minute maybe. It's like, whoa, there you go. The parcel just flew out the window. Yeah, not that fast. Other ones will show things like the speed of the motor or whether or not it's moving in a certain direction. And that's when you realize that SCADA should be more than just a collection of indicators and lights and buttons and so on and numbers, but it should actually help the user to visualize what's going on. And that's the sort of SCADA system that I wanna talk about, is I wanna talk about the SCADA systems in the last 20 or 30 years where there is an approximation of, where it extracts data from the actual device doing the automation. And it provides a window into the system. It allows you to monitor what's going on and to adjust and control it if you want to. And that's where the whole definition comes from, supervisory control and data acquisition. So just briefly about the data acquisition piece is that SCADA systems traditionally also have the ability to process alarms. So let's say that an event occurs and you want to indicate that. Well, you want to log the time that it happened. And obviously, you know, if it's a specific error like there's a fault on conveyor belt one, you want to know that it's conveyor belt one. So it'll log that in the alarm system. The alarm system will say, conveyor belt one went into alarm. It went into, so the alarm came in, it came in at 1120 PM, you know, and the alarm was acknowledged by the operator and the SCADA system was acknowledged at midnight because they were lazy, or on a break for 40 minutes and didn't notice it. Yeah, and the alarm cleared or went out or came out. - What photo was blocked? - Yeah, all of that, exactly, yeah. And it went out, maybe it went out at 11, to half past midnight because it took them half an hour to clear a blockage or something. So all that alarm information, it shows, it can show a list of current alarms, alarms that have come in, gone out, acknowledged alarms, unacknowledged alarms, whatever you like, however you wanna sort your data and so on. you can usually assign to a plant area. All of that sort of thing is all handled in alarm management is also handled by SCADA or it can be. And of course the other one with data acquisition is long-term event and trend logging. So, you know, an operator enters a set point or they push a button where you would log operator blah who's logged in with their username. So operator blah or Bob the builder. So Bob the builder logs in and says, "Okay, I'm gonna change set points, speed set points. It was going at 10 feet per minute. I'm going to make it a thousand feet per minute just because I want to see things flying out the window. So, you know, they make that change and of course you come in in the morning and the windows broken, there's parcels lying on the floor everywhere and they say, "Bob, did you mess with the set point for this?" And Bob's like, "No, that wasn't me." And then you go through the logs and you're like, "Actually, the event log says that you changed it. What were you thinking?" And then Bob's like twiddling his thumbs, whistling quietly in the corner. I mean, believe me, the witch hunt, oh man. The number of times that I have done the witch hunt to figure out which was the numbnuts operator that broke it. Event logging is your friend, believe me. Mind you, operators don't see it that way. It's like, oh, that's big brother. You're looking over my shoulder. - Not if you're the guy that made the mistake. - Yeah, exactly. He's, you're looking over my shoulder. And it's like, yeah, well next time you want to do something dumb, don't. Anyway, nevermind that. So data acquisition. So that's the event logging piece. The other one is trending. So trend for example, trend information. So let's say you're looking at a process variable and I'm gonna look at flow rate. Let's just say it's flow of water through a pipe. Well, you wanna know what the flow rate is because well, you just, why not? So anyway, it's flowing at 150 liters a second and you wanna trend that flow rate. So you wanna, you can trend that flow rate and take a sample and you can set it to take a sample every second, every five seconds, every 10, every minute, every five, every 10 minutes, doesn't matter. You know, however long you think a reasonably granular amount of time and you sample that information you just save it. You know grab a sample, save it, grab a sample, save it and you just keep stacking it up for as big as your hard drive is or you can limit it and say I want to capture that data for a day or a week's worth and it'll be like a rolling window or rolling average if you can generate an average from it to create a rolling average if you want or you can just trend and display a pretty line like a graph that shows you what the value did for the last 24-hour period last week, last month, last year, last eon, although probably not last eon since computers didn't exist that far back. But anyway, so that's trending in a nutshell real fast. And I just want to mention those things because they are not my bugbears, they are not the focus of this particular episode, but I need to mention that they exist because well they do. And SCADA is a multifaceted bit of software and those are important facets of it. On the project that I'm I'm working on at the moment and on several other projects, those sorts of systems that I just mentioned aren't enough. So they'll say, well, the built-in trending package into let's say it's WinCC, RSView, Wonderware, FastTools, SciTech, doesn't really matter, any of those is just not good enough, right? It doesn't have good statistical analysis, I can't extract data from it easily, or sometimes I wanna do a back import for whatever reason. Let's say I've lost some data from one server, I wanna import it from another server, so the tag that the data backfilling is bad, So I don't want to use that. I'm going to use a separate one. So I'll use a separate software package and a company called OSI makes a package called Pi as in like P-I, not one you eat. And like the number, the special number Pi 3.1415927 blah, blah, blah. Actually it's not 127, it's 12678, whatever. Okay. Taking a deep breath. Okay, so yeah, and you can have third-party solutions. So these third-party solutions will extract the data from the SCADA system or even from the PLC, DCS, or RTU directly, and they will log the information. And you can also get alarm management tools do exactly the same thing. But SCADA is designed and has always been designed from the beginning to be an all-in-one solution for all of that. If you want more advanced features, you can get products that are specifically designed for that specific task, like alarm management, like trending. So I'm not going to talk any more about that stuff because yes, it's important to acknowledge. Yes, it does exist. And that's what SCADA, that's part of what SCADA does. But it's not what I want to talk about today. I want to talk about user interfaces. Because I also think that that's more interesting and it will be of more interest to the listeners of this show, because there's a lot of parallels between what you do with SCADA and what you do with a standard user interface if you're developing for iOS, for any platform. I keep saying iOS, that's just the platform, the non-control system platform that I've programmed for myself most recently. That's the only reason I keep mentioning it. Yes, I do realize .NET, it's a big deal. Absolutely. So is Java. Yeah. Again, anything with a user interface. OK, so. Let's talk about buttons, shall we? Sure. So when you're doing up your shirt, buttons are real. Oh, hang on. Not those sorts of buttons. Belly buttons. Not them either. Okay. Push buttons. Yeah. Oh, yes. Yes. Now you're on the trolley. Okay. Was that really a saying? I got that from The Simpsons. I think it's the first time I've ever heard it. Now you're on the trolley. I think in March said something about that being like 1920s talk. Trolley car. Yeah, I know what a trolley is, and I actually understood the metaphor. It's pretty good one. It's just the first time I heard it. Now you're on the trolley. Anyway, it makes good sense. It makes no sense. So, yes, push buttons. Absolutely. And I want to it may sound weird, but we have to start with. I'm not going to do the history of push buttons because I think that's probably pushing it a bit much. I don't think that's all that interesting. You're pushing my buttons. Good. Anyhow, so the idea of a push button is pretty straightforward, and that is you want to do a binary operation on as an input into a control system of some kind. And the push button is essentially the finger based extension of a lever. So, if you go back to the railway days, when you're switching points, the way that you would do it is you would- There's a locking handle, you would pull the locking handle and that would release the ratchet clamp. And then you could freely move that lever forwards and backwards between usually just two positions, either opened or closed, but some of them had multiple positions. And those- That design, obviously, you needed that leverage because that leverage was what moved the points back and forth and that physically was quite heavy because those tracks were cast iron steel they were quite heavy and obviously you had friction and the linkages themselves had a bit of play in them so you would move them a few inches physically at the lever and you wouldn't get a corresponding initial movement in the actual points themselves physically so you had to move them over a a large, what they will, you know, the overall, that distance is called the throw of the lever. So, you had to throw it quite a long distance in order to get physical movement of a relatively short distance. Yeah. And yeah, that was just the nature of the beast, the mechanical issue, right? But once you move away from buttons having physical linkages and everything becomes electric, you know, it no longer becomes a case of physical action is required to move a physical object in terms of a direct mechanical linkage. So that linkage can be amplified through relays and through hydraulic systems and of course through motors. So everything is done through either electric, magnetic or hydraulic action. That allows you to then reduce significantly the amount of physical effort required in order to flip the state of whatever thing you're trying to flip the state of. In the case of points, electric points these days, you can do get away with a simple push button and that replaces all the levers. So the idea of a push button is simple and that is that you have a small spring inside a canister, you push down on the end of that canister, that depresses the spring, there's a pin in the center and that pin is depressed as the pin is depressed then that will then create a closer contact which closes a circuit. One side of that circuit will have power on it as in a voltage applied to it. Most control circuits are either, they start at 5 volts in some cases, most of them are 12, 24 or 48 volts, 24 being the most common in control systems, 12 volts being the most common in cars mainly because six lead acid cells gives you 13.8 volts open circuit and when that's under a reasonable amount of load, they consider 12 volts to be the average and that's a regulated car battery will get you 12 volts. So a lot of systems are based on 12 volt DC logic. Control systems are set at 24 because of the high current requirements for some relays and so on and so forth and that's two car batteries worth depending on that. So the idea is you push the push button, current then, you close the circuit, the current flows through that switch and it can then be made to actuate whatever you need to have actuated. Or in the case of a PLC, an RT or a DCS, that push button provides a very small current into the input of an input card that is sensed by the PLC and is then used as an instruction for that to do something. So, you know, start button pushed, you know, or jog conveyor belt, for example. So push buttons traditionally are round and they round because well, round is easier to machine. You put that on a lathe, you spin it around and it's easier to, extrude also, or you could extrude as well. Sorry. So you can machine it, you can extrude it. It's easier to do that than it is to do a square or a rectangle. However, and also, you know, from a physical point of view, you touch a push button. So, you know, as I actually discussed in the very first episode of Pragmatic, when we were talking about the iPhone and the way that the manufacturing had evolved, you know, hands want to touch smooth surfaces. They prefer to touch a smooth surface. Sharp edges, jagged edges, pointy edges are all the enemy. If you're trying to make something as nice, tactile feeling as possible, sharp edges are bad. So, what you want to do is you want to have push buttons that you're going to be pushing a lot need to be rounded and smooth. So, typically they tend to be rounded. The other factor driving this circular nature is, of course, there's the bullseye. There's the bullseye thing with the eye. So, the eye is drawn towards the centre of the bullseye. If it's a large, if it's a square or a rectangle, that's less obvious. And of course, finally, if you look at the human finger, the human finger, when looked and on, is approximately circular. So there you go. Push buttons. What else can I say? Toggle switches. So a toggle switch is essentially like a push button, but what I described just before is a momentary action. That's what they refer to as a momentary action where you've got a spring loaded system and the spring loads when you apply pressure that compresses the spring and that throws the switch. That's great. But when you take your finger off the button, you know, the spring will then obviously the kinetic energy stored in the spring will force that to extend and then the contact will be broken and your current, your circuit will be broken, the current and voltage that will stop and whatever it is will disappear, that it's controlling. That's what they refer to as a momentary action push button. A toggle switch is different. It adds a toggling function such that when you push it, basically it latches in the on position and you'll hear it click usually. So as you click it, it'll go click, click, and then you'll take your finger off, but the button will remain in the depressed state. In other words, in the on state, you push that again, it'll go in ever so slightly to release the latch. And then that button will return to its fully outright and extended position. When you remove your finger from it. Obviously toggle switches come in other forms. if we're not talking about push buttons, toggle switch is also, you know, a light switch is a toggle switch. So, you know, in North America, for example, two predominant types, you've got a flick switch, which basically it rotates around a common point. So you've got a, you have an actual pivot point and as you flick the switch up and down, the rectangular knob on the end will literally rotate around a common point and that will flick both up and down. Other ones you have a slider toggle switches and what you do with those is they're the long rectangular type with a small rectangular protrusion and you will slide that up or you will slide that down to turn lights on and off for example. But they are still technically toggle switches although some people refer to them the slider type switches as a slider switch but honestly it's toggling on or off. Okay, the next thing is an indicator button. It's a special kind of button that also has a state indication that it's on or off. So they'll have an LED or the old style have a lamp, like a small lamp built into it. And the actual button itself won't be made out of a solid material, won't be made out of solid metal, it won't be made out of solid, well, chances are not solid metal, though, you know, I guess you could drill and this is what Apple does is that they'll drill thousands of microscopic holes, laser-sized holes, and that'll let the light bleed through. But generally speaking, they will not be a solid material. I guess if you drill thousands of microscopic holes, it's technically not solid. But anyway, it's, I should say not solid, I should say transparent or opaque, or partly transparent, and fully opaque, perhaps. Anyhow, so indicator buttons will allow that to shine through. Right. Finally, associated with buttons are physical labels. So on a traditional control panel, you're going to have a physical label either beneath, above or directly adjacent on the left or the right of the button telling you what the button does. It could be simple like jog or could be forward or an abbreviation FWD. meaningful. Or it could be a, you know, like a multiple sentence, you know, label that says, should you choose to push this button, bad things will happen. You may wish to reconsider pushing this button because bad things will happen. Are you sure you really want to push this button because bad things will happen? You get the idea, right? So obviously brevity is your friend, especially if you've got a control board that's covered in hundreds of buttons. But at the same time, if you've got 10 buttons that all say forward and nothing else that's probably not good enough So that's how machines traditionally handled the buttons. So if I had a control panel on an old machine from pre-computer days, pre-Scada days there would be no Scada system, there would be no touch screen, there would be no other interface other than a bunch of buttons and a few indicators So, continuing along that theme want to talk a little bit about indicators. But before I do, I'd like to talk about our first sponsor for this episode. And that's Harvest. Now many people listening to this show spend their time working on home projects and work projects too, and you lose track of time. Now we talked about this on the show before about being realistic about how much time you have available. And one way you can track your time is by using Harvest. They have a simple to use web app where you can create tasks. They also have a mobile app for both Android and iOS. and it's easy to select a task or an activity and start and stop a timer from any of them. On the Mac, it installs a neat menu bar icon that detects when you've been idle for a long time. When you come back, you can choose to deduct those idle minutes or hours from the total. It's little touches like that, that's pretty cool. Anyway, it's a great way to track your time and where it's going, and after you've done that, it's really easy to look back at your time sheet to see where your time's gone. That's handy enough, but if you're working on a project with a team, your coworkers can track their time. It makes it really easy to manage everyone's time on that on a project as a whole. Now, Harvest also makes invoicing easy. It's quick and painless to set up clients, multiple points of contact of those clients. You can then build an invoice based on that information. You can select one or more people to send it to at that client. You can send yourself a copy, you know, and better than that, it allows you to pull hourly rates that you enter into the system and combine that with your timesheets to create invoices practically automatically based on your timesheets. and it all integrates nicely with PayPal and Stripe. Now I've been using Harvest invoices for this podcast and tracking my time, and it's now taken over as my invoicing system of choice. It's that nice. Check out Harvest at getharvest, all one word, .com and sign up for a free 30-day trial and start tracking your time and invoicing others simply and painlessly. There's no credit card required. There's no obligation. They just want you to see how great and how handy it can be. There's no excuse not to give it a try. Now, once your 30-day trial's over and you've realized just how great Harvest is, Use the coupon code pragmatic at the checkout and you'll also save 50% off your first month that applies to any of their plans. Hurry though because this offer expires on the 15th of January, 2015. Thank you again to Harvest for sponsoring Pragmatic. Okay, so now let's talk about indicators. So this is gonna be a little bit quicker. An indicator is essentially like a light bulb, mini light bulb, if you'd like, tiny little things, well, relatively speaking. And they used to just refer to them as lamps. These days, of course, lamps are dying. Thank goodness, because there's nothing worse than the lamp test button. You know, you walk up to the panel, push lamp test and all the lights would turn on just like a Christmas tree, but a very expensive industrial Christmas tree. Anyway. And then, of course, you have to go on, change out all the light bulbs, the ones that are broken, very tedious and boring. unscrew the cap and get your fingers in there and you know it's all rusted in place it's been there for years so then you gotta get the pliers out and try and pry the damn thing out and once you get it out you're gonna put the new one in and put the lens back on then retest the lamp ay-yi-yi and of course no one ever tells you that it's wrong so it becomes a maintenance activity you gotta carry that out and anyway good memories so anyway we've moved on LEDs yes LEDs love them they never die. Well, they do, but it takes them a lot, lot longer to die, which is good. So anyhow, LED indicators. Yep, they turn on to tell you the state of something. You can use different colors, of course, you know, most common colors being red, yellow, and green. Occasionally, I see blues, but less common. So, physical labels, again, same story. What's the light telling me if it's on? If it's, you know, and of course, buttons can indicate their state through being on or off as a binary thing or of course they could be flashing you know so you can have it flashing a certain rate yeah if you start doing the thing where you know you're doing Morse code with your with your light you probably need more lights you know because you'll get this you'll get these people that say I want to minimalize I am a indicator minimalist yeah hi I'm John, I'm an indicator minimalist. It's been 30 days since my last indicator It's really simple. Three blinks for active, two blinks for paused, one blink for shut down Yeah, exactly. That's the sort of rubbish that these people think is acceptable It's like, oh, I've minimalized it down to one light and therefore that's a good thing No, if I need an instruction manual that's 15 pages long to decipher what the hell the damn lights mean, you've done it wrong. Anyway, okay. So again with the physical labels like I said. Okay, now the next thing to talk about is the graphical equivalent. So before we talk about the graphical equivalents and some of the other little foibles and so on, need to talk about color because color is a big problem. Or rather, no one thought it was a big problem until they realized that it was. So how much do you know about color blindness, Vic? A little bit. I have been told. I've never been like scientifically tested and proven, but my mom always used to tell tell me I was colorblind. Yeah, see the thing is colorblindness is very, very misunderstood as a condition. So, okay, so first of all, what colorblindness is in case you don't know, because there are probably people that don't understand how it works. But here's the thing, okay, numbers will vary. And there's various reports that I've read on this. And there's a few links in the show notes, feel free to have a look if you want more details. There is a Wikipedia article, but I found that there was quite a few other articles out there, like hyperphysics had a good one, but the numbers vary. So, I don't know the exact figures. I'm not a biology, I'm not a biologist person. Biology thing guy. Anyway, I'm not that. So, the numbers are probably not all that important, but it's the relative numbers that are generally the same percentages. So, here we go. All right. Our eyes, our retinas sense light and decode that information for the brain through the optic nerve, carries through the optic nerve. So the retina itself consists of two kinds of receptors. One type of what they refer to as rods, the others they refer to as cones. That has to do with their orientation, how they physically look. One, they literally look like a bunch of rods, and the other ones look like a bunch of cones. Although technically you could look at it and say they're all cones, it's just that one is oriented differently. So one's more on its end-ish and the other is more lying down flat, I guess. But anyway, it doesn't really matter. The point is that they're called rods and cones. So there you go. Now, the average person, and this is where the numbers vary, between 90 and 120 million rods, which is a lot in each of your eyes to this point of view. So, rods are more sensitive than cones are to light intensity, but they can't distinguish colour. Now, the cones, however, they can distinguish colour and in providing their colour sensitivity, but there's only between six and 7 million of those. May I say only. That sounds like quite a lot, but the truth is that, you know, that in relative terms is significantly less than the 90 to 120 million rods that we have in our eyes for detecting light intensity. So, rods are much more- are highly concentrated in a central yellow spot known as the macula. The cones are found most densely in a 0.3 millimetre diameter rod free area in the very centre of the macula referred to as the fovea centralis. Sounds very Latin to me. And that explains why we can't detect colour very well in low light situations, you know, usually, well, usually at night time. Everything tends to look grey. And that's simply because of the fact that there are much less of them and the sensitivity that we get from the vast number of rods that we have, it gives us that sensitivity to low light, but not the color in low light. In terms of the cones, they detect three primary colors, red, green, and blue. No surprises there. But what is surprising is the current estimates that they've got as to the proportion of which and the way the brain compensates for the different ones is really quite fascinating. So, the set of numbers that seemed to get the most agreement that I could find is around about 60 to 65% red, about 30% green and as little as 5% blue. So, as I said, the stats will vary, but it's fascinating that the different wavelengths that these cones are able to detect is predominantly the red. Mostly what's left is green, and there's just a little tiny bit of blue, but the brain tends to compensate for that to adjust and bring up the blue level. And how it does that is still not fully understood. So, we know that the quantity of the blue cones is significantly less, But they are much more sensitive. So anyway, and just as a point of fact, none of that has anything to do with the pigmentation colour of your eye, in case you're wondering. That's a completely different thing. This is the retina and you can't tell by looking at it. You know what I mean? Like some people that are colourblind, you can't tell by looking into their eye, they're colourblind. Yeah. Which someone once tried to tell me and I'm like, "eh, no". I've heard that before. I didn't know if there was any truth to it or not. No, that's BS. I've heard that people with certain eye colours are more prone to it than others and all kinds of things like that Not statistically proven. Okay. So, no. Okay. So, there are three types of colour blindness and their technical names are monochromacy, dichromacy and anomalous trichromacy. God, that's a tough one. Say that three times fast. Trichromacy, trichromacy, trichromacy. There you go. I don't do bad. Anyway, so far- Okay, far more commonly, however, clinically they're referred to as in the same order, roughly, total colour blindness, red, green and blue and blue, yellow. I've heard other people talk about blue, green and red, blue and so on and so forth, but clinically, apparently not, based on the research that I did. I'm not colour blind at all. However, plenty of people are. 8% of men and 5% of women are colorblind in one way or another. Now, that's not an insignificant number. No, it's not. And when you consider it in my industry is still very male dominated. It's a very significant proportion. So we're talking 8% is close enough to 10%. So call it one tenth. And that's always been the number that I've worked with. So at one tenth, if you've got a room of operators or a base of operators on a site and there are 10 of them, you're guaranteed to have one on average that will be colorblind. So when you're designing your colors and when you're designing the complexity of colors and color indications, you have to take that into account, you can't ignore it. Yeah, this is why you need high contrast. Yes, and we're going to get to that. So, all right, just a few more little asides. It's commonly, most commonly, it's an inherited thing, colour blindness is inherited. It comes on, it's part of the X chromosomes, but it can also result from non inherited reasons. For example, shaken baby syndrome, which is a disturbing potential, as well as, of course, as well, of course, long exposed to ultraviolet light will damage the retina. So, you know, doing dumb stuff like staring at the sun for a long period of time. Okay. Yeah. Yeah. You know that burning feeling, you know, burning in the back of your eyes. Yeah, that's it. That's a bad feeling. Stop looking at the sun. Thank you. Yeah. I know it's a pretty eclipse. Stop it. Yeah. Okay. Right. So, people- The thing with colour blindness is that people think, oh, you know, if I am red-green colourblind, I can't tell the difference between red and green. Well, yes and no. What it means is that it is much, much more difficult for someone that is red, green, colourblind to tell the difference. If you've got a green number with a red surrounding, it makes it much more difficult to tell if the contrasts are similar. It's difficult to tell what that number is with that background interfering. So, colourblindness is more about the fact that your eye is unable to tell the difference between the colours in a very, very narrow area. So, if you were to take it, take the number away from the red background and put a green number on, say, a grey background, then most people that are colour blind would be able to tell what number it was. So, it's not a complete inability to tell because the eye can still sense differences in contrast. It just means that if you have colours that are very similar in red and green scale and they're directly adjacent to each other, their eye will have difficulty in discerning the boundary. So, that's kind of a big deal. And you have got to keep that in mind. So, it's not like you can't see anything red. Exactly. You can still... Their eyes can still compensate to a point at which they can make out the shapes, no problem. They can make out what the words would say. But if someone said, "is that red?" then they would look at that and they would struggle and say, "well, you know, I'm not sure". Yeah, and you put it against a certain other colours and they just have a hard time seeing the difference between the two Yeah, because people think, you know, "Oh, yeah, red-green means that I can't use red or I can't use green or something" No, no, no, no, no, the reason I call it red-green, for example, or blue-yellow is it's the discerning between the two that becomes difficult So, if you... because it's very rare for people to be completely monochromatic, right? Where they can't sense any colour at all, that's extremely rare, it still happens, but it's rare So, usually you'll have some functioning receptors of those colors, but they'll be highly deficient. So, they tend to get overwhelmed by the others. So, you'll sense, you know, all your greens and your blues, but you won't sense anywhere near low. Instead of getting 60 to 65 percent of the red, you might get two or three percent of the red, of your red cones will be working correctly. And therefore, the green will swamp the red. You know, so nothing is black and white, nothing is as straightforward and as clear cut and as simple as you would like to think. So, it's more about an awareness of the way in which you choose your contrast levels and the way in which you choose your colour schemes when you're representing textual information. That's more of the issue than the raw colour itself. If that makes sense. Yeah. Okay. So, anyway, there's a great article by Steve Steve Drew. It is only a draft article, but I was able... It brought together lots of interesting concepts, and I found one of my new favourite three-letter acronyms. It's JND. Do you want to know what that means? JND? JND. I don't think I do. It stands for "Just Noticeable Difference". OK, that's a good one. Yeah, I sort of mean that tongue in cheek, but you know, oh, great. So, it's the just noticeable difference, right? So, and that's in- Just enough. Just enough that I can tell the difference. But anyhow, it's- And that was being used in reference to contrast sensitivity. So, and when I say that, I mean, in terms of perception of different levels of luminance. Now, in Steve's article, he refers to most people being able to perceive differences in luminance between two to four percent. I find that number to be misleading because in my experience, it's more like 10 to 20%. And the reason that I say that is it's because everything is relative to the immediately adjacent compared item or compared colour. So, for example, if I put a shade of grey next to another shade of grey and they are right next to each other or even not that far apart, you know, like 10, 20, 30 pixels or points apart, your eye, your brain will be able to tell the difference quite strike quite markedly and I would believe the 2 to 4% you know I probably believe more like 10% but yeah I believe it at that sort of level but if you're going to then say here is screen number 1 and it's got a box on it and that box is 10% grey I then go to the next screen and it is a box and it's 12% grey but I'm not going to tell you which is which you have to tell me which is darker because they're not in front of you at the same time I think... - You don't have the context. That's right. So the brain can discern relative differences in luminance and contrast sensitivity certainly when they're next to each other immediately adjacent and in front of you at the same time but if you go between pages and if you want to deal with absolutes and say 20% grey has this meaning, 40% grey has this meaning, 60% grey has this meaning if you take all of those into consideration you'll find out that oh actually it's not 2-4% 2 to 4%, it's more like 10 to 20%. It's really quite bad. Now, I'm not suggesting that you should be designing your, you know, choosing your color palette based on that, you know, in terms of operator comprehension when you're doing a SCADA system. But as the tendency in my industry is to go towards more of a gray scale, and that's something that's happened on the Mac, on the OSX, oh man, I said it, OS10 platform. Waiting to get crucified, brother, for that little slip. It happens. Yes, it does. Anyway. So, you're going to look at that and you're going to say, well, I've got a grey scale and, you know, 20% grey, it means this, and then 40% means something else. And you're tempted to do that. Don't do it, you know, because most people are going to start complaining, it looks the same or worse. I don't remember what it means. You know, like I said, the light before, you know, if you're blinking out Morse code to convey information, you're doing it wrong. And if you have got five levels of grey to determine five different states for one device, you're doing it wrong. I'm sorry, but that's just the wrong way to do it. Because our browser is like "oh, that looks the same, I don't remember". Anyway, I need the user manual and I'll hold out, you know, the colour swatches you'll get when you're going to... That's what I was going to say, it's like a pH colour sample guide. That's it. That's it. It's like I can operate my SCADA system, is my valve open or closed? Oh, the shade of the valve shows you how open or closed the valve is in a scale of zero to 100%. So its greyness changes in depth while the valve opens. That's a winner. Are you kidding me? What's wrong with you? Slap you around, boy. Don't do that. Crazy people. Anyway. No, I have never done that. No, I have never seen that done. And I hope to God I never see that done. But it's just the sort of quote unquote "cool" idea that a young programmer would come up with. It would be just the best. No, no, it wouldn't. Don't. Okay. All right. All right, so that leads me to the idea of how big your palette size should be, and this is going to be very hotly debated. But, you know, to be honest, I try and stick to less than ten colours if I can. And I mean, ten colours in the entire SCADA system. If you have too many, you end up having to have a legend or a lookup table or a manual handy in order to tell the difference. Most people won't remember and they can't tell the difference between that many different colours usually anyway. So, I try and keep it to less than that if I can. You don't want to memorise 50 shades of grey? Well, only the good pages. Okay. There are good pages? I am reliably informed that there are. Anyhow, let's never mind. I don't know. Okay. I didn't mean to. Sorry. Yeah, that's okay. That's fine. That's fine. Okay. And now it's time to go skeuomorphic. Oh, yeah. Oh, yeah, baby. Skeuomorphism. That's what we're going to get down with shortly. But before we do, we're going to talk about our second sponsor for this episode, and that is lynda.com. Now lynda.com is an easy and affordable way to learn. You can instantly stream thousands of courses created by experts in their fields of business, software, web development, graphic design, audio, and lots and lots and lots more. Way too many to list here. Now they've got an enormous library of titles to choose from. Now got new courses added every day to make sure that their library is both relevant and up to date, which is very important. They work directly with experts from many different industries and software development companies to provide timely training, often the exact same day that that software release becomes available so that you know that you've got the latest information the moment you are the most likely to need it. Now these are nothing at all like the homemade tutorial videos you might find on YouTube that might tell you a little snippet but it's unindexed, it's buried somewhere deep inside it and you just really want to know that one little bit and you can't find it. Well, linda.com make high quality, easy to follow and well indexed and to me that's the big thing. Well indexed video tutorials with transcripts broken down into easily searchable sections. Now the bite-sized piece approach makes it really easy to stop and pick up where you left off whenever you need to so that you can learn at your own pace, in your own way and importantly in your own time. Now whether you're a complete beginner with no knowledge at all about a subject or you're a modern to advanced user looking to brush up on the latest version of whatever software using. Lynda.com has courses that span the entire range of those experiences. You can learn on the go as well since Lynda.com have iPhone, iPad and Android apps. They also support playlists, they provide certificates, there's evidence when you complete courses and if you're on LinkedIn you can even publish them directly to your profile. Now many, many years ago when I left Windows behind and I say "left it behind", I still use it at work when they make me, I switched to a Mac and I got stuck into a Lynda.com tutorial called Tiger the Basics. Followed up a little bit later with Leopard, new features and essential training the following year. Now that was seven years ago, getting close to eight years ago. I mean, this is, Lynda.com, they are not a new thing. They've been around for a long time for a very good reason. And they helped me out a lot back then. And now, most recently I've been using Logic Pro X for editing this podcast and they have excellent tutorials on that as well. So what's it worth? Well, for one low monthly price of $25, you get completely unlimited access to over a hundred thousand video tutorials. That's a lot in their library. Premium members with an annual plan can download courses to their iPhone, iPads, Android devices, and watch them offline. Premium plan members can also download project files and practice along with the instructor. Now, maybe you're getting into pages, numbers, keynote. now they sync up nicely, well, relatively well anyway, between the Mac, the iPad and the iPhone, but you're just scratching the surface of what's possible. Well, lynda.com has training for all those apps and all of their latest versions. If you're into Office 365, like I am as well, then same deal for Word, Excel, PowerPoint, and there's lots and lots more. Those are just common examples. Now, I've been talking with lynda.com for quite a while now and I've been enjoying their content on and off for years. So I'm really happy to be able to provide Pragmatic listeners with a special offer to access all their courses for free for 10 days. Visit lynda.com/pragmatic to try out lynda.com free for 10 days. That's l y n d a dot com slash pragmatic. Thank you once again to lynda.com for sponsoring Pragmatic. OK. Skeuomorphism. Now, that's actually a Greek word and it's a, you know, conjunction of two different words meaning shape container. Or container shape or shapey, containey, thingy. Anyway, skeuomorphism is therefore being skeuomorphic. I skeuomorph, therefore I am or something like that. I don't know. Okay. Okay. Yeah. Anyway, so I'm just going to let that one ride. Yeah, good idea. Now, obviously, I'm talking about as it applies to user interfaces digitally. Now, but the word of course, predates computers and predates SCADA systems and user interface design. It's just, it's been adopted by the community to refer to anything that resembles something in the real world being represented in a virtual world. Green felt and faux leather for the win. Yeah, that kind of thing. Yeah. But of course, I'm being far more simplistic. I'm talking about representing a button. So we're going to represent a button and operate a button as you would do so in the real world. But here's the first problem. When SCADA first came out, touchscreens were just not a thing. I mean, we had light pens. Yeah, light pens. But even light pens didn't quite have the same sort of impact, although they did do the whole button and the button depressing thing when you tapped on the button with your light pen. But seriously, it wasn't that great. Even with touchscreens, you know, you don't physically get to depress the button. There's no- most systems with touchscreens do not have haptic feedback. So, what you're left with is you're left with a visual representation of your finger touching the screen or far more commonly, the mouse cursor and the left mouse button being selected, being pressed down and released. And the button will visually appear. It'll have a 3D effect typically that shows the button. Yeah, it looks 3D as though it's popping up out of the page, out of the screen. And you press the button and it looks like it's depressing, going flat. In some SCADA systems or some operating systems, it'll look like it starts out flush with the screen. You push the button, it looks like it's getting depressed deep back into the screen. Either way, there's a 3D skeuomorphic effect that mimics what a push button looks like in the real world when you press it. So, the thing is, why does that matter? Because it's not really a button, you know? Yeah. So, it doesn't matter, except it does matter. In fact, it really does matter because it lowers that barrier of entry for new users. So, someone comes along. They look at it and it's a button. Yeah, they know what a button looks like. There've been plenty of buttons and people think, you know, well, when do I learn what a button is? Okay, well, think about it. When was the first time you ever pushed a button? Now, if you're old, old, oh, geez, that I always don't know how to say if you're old, but- Watch it. Yeah, I know, I know, cranky old guy, what I was born and all that sort of thing. But no, seriously, when you push a button on a phone, on an old style telephone, and I'm not talking about a rotary dial where you put your finger in a hole and you spin the dial around and you wait for it to go... Or if you're impatient, you drag it, right? You go... Oh, yeah, sound effect king. That's terrible. Whatever. Anyway, you know what I'm talking about. I'm talking about touch-tone phones, right? Yeah, you know what was worse than the rotary dial? What's that? Did you guys have over there? We had, for a time period, we had what was called pulse mode. Yeah. And it was it was push button phones that actually recreated, I guess it was audio skeuomorphism, it recreated the rotary sensation. Yeah that was a telephone exchange problem because the telephone exchange was still waiting to hear the audible clicking noise so they had to create phones. So it needed it? Yeah. Okay. Yeah some telephone exchanges didn't accept touch tone. So that was the problem is that the phones advanced faster than the telephone exchanges just gonna be retrofitted with DTMF gear. Interesting. Maybe we should do a show about that at some point. Anyway. All right. Yes. But yes, we did have those. And anyway, right. Good. Lovely. So that's there's that button. But here's the other one doorbells. People have doorbells. Right? You go up, you push a button on the doorbell. Okay. Now when you're going in and out of a car park, let's say in the car park is has metered access and has an access boom gate, you push a button. It was do, it dispenses a ticket. You know, there are dozens, if not hundreds of examples that I could give you of push buttons in the home, in the workplace, out and about at the shopping centre, shopping mall, you know, whatever, you know. Toggle switch is far more common, of course, because everyone, you know, light switches are probably the most common kind of switch that people will operate. But ultimately, you know, a push button or a toggle switch, you know, people learn what they are from a young age, you know, five, six, seven, eight, nine years old. So, by the time they start using a computer, the idea of a button that looks something like what they've already learned how to use in the real world means that they understand inherently what that does. So, you push that, it's going to toggle the state. If it's a light, turns the light on and off, you know, opens and close the door, rings the doorbell, whatever it is, right? And that's why skeuomorphism matters, because it lowers that battery of entry. It makes it easier for people to learn. So if you're all about, here's a manual, read the manual, figure it out. First of all, you're a jerk. Second of all, you know, I don't want you working for me. And thirdly, you know, oh my God. If your job is to make something that looks visually beautiful at the expense of being easy to learn, then again, I would suggest you're doing it wrong. Okay. It's all about balance. It is all about balance, absolutely. So, just quickly as an aside, beyond Skada, last year in the Apple world, there was a big kerfuffle because Apple introduced iOS 7. And what did it do in iOS 7, Vic? Buttons didn't look like buttons anymore. No, they didn't. They removed a lot, if not, you would argue almost all of the skeuomorphism from iOS. A lot of people, very cranky pants when that happened. So, and I totally understand why. Because suddenly buttons didn't look like buttons anymore, they just looked like text. Yeah, it was a drastic change. It was. And regardless of whether you're pro or con, I mean, the change was drastic and it was an adjustment. Exactly. Okay, so here's the thing, I've been working on a bunch of different projects in my career where people thought it would be just so awesome to have text that is selectable, but it's a button, but it's text, but it's a button, but it's text, But you're not getting it. It's a button, but it's text. And I'm like, no, it's text or it's a button or it's text overlaid on top of a button. But if it's a button, it has to look like a goddamn button. Okay. A button is a button is a button is a button. Why? Because that is a skeuomorphic user interface paradigm. Whoa. Buzzword bingo. And people understand it. So, if I'm- If I have a screen full of text and one word of it, let's say the word "hello" is actually a button, and when you click "hello", it turns the lights in the room on and off. How are you going to know that that's selectable if it's just text and that text looks exactly the same as all the rest of the text? You're not going to know. Well, the key there would be to make that text not look like all the rest of the text. Well, yes, of course. But hold that thought for a moment. Let's just say you are an idiot. I just suggest- You're calling me an idiot. No, I'm not calling you an idiot because you came up with the right answer. No, no, no, no, no, no. I'm talking about the idiots that designed the SCADA systems that I'm thinking of. There's two in particular I'm thinking of right now. And you know what? The text is exactly the same in every way. Some is selectable, some isn't. Same font, same capitalisation, same colour, same pitch, same everything. And I pointed this out to them and they said, well, that's what the user manual's for. And I'm like, come closer, come closer so I can slap you, you know. So there are people- And this is why I say that I wish the goodness that there was more of this cross-over if people have done like, you know, iOS and Windows Phone and and Android development coming across into SCADA to provide some degree of sanity in the user interface design, because so many of the people there just don't get it. OK, and I'm not suggesting that I get everything either. It's a learning curve. It's just that in terms of my place in the learning curve, I like to think I'm further along when it comes to the user interface stuff, because I've had a foot in both camps. Anyway, all right. So, please don't do that. And of course, you know the way they solved it with HTML, right? They put an underscore under it and usually change the color as well with a different contrast. So, you know, it's not like this is a new issue that has just only been discovered. This is something they figured out a long time ago, like how old is HTML? How long is the web? You know, 20 plus years ago. So SCADA system has been around 20 to 30 years. This is not a new problem. This has been solved well and truly solved, and they're still screwing it up. So please make your buttons look like they're a button so I can tell that they're a button. Cheers. Thanks so much. Really appreciate it. OK, next thing. How do I differentiate my button? Well, guess what? We had labels before. So digitally, how do we do that? Well, yeah, screen real estate is at a premium. It's always at a premium. I don't care what you say, screen real estate is always something that needs to be carefully considered. Scatter is no different. So what do you want to do? You want to be efficient. So what are we going to do? We're going to try and put the text that describes what the button does on the button rather than underneath it or to the side of it. And that works so long as it fits, because otherwise, if your text is push this button and something exciting will happen, well, your button is going to be about 500 pixels long and about 20 pixels high. Well, that's probably not an optimal way of doing things. Whereas if the button is simply forward and reverse. And then to the adjacent to the button, you could have so you align your buttons horizontally, one's next to the other and one says forward, one says reverse, and next to it, it says motor MCP 1171. It's like, oh, OK, so that's that motor there forward and reverse. Got it. Yeah. Rather than having motor 1171 forward and then motor 1171 reverse next to each of the buttons individually and having narrower buttons. So, it's a more efficient use of space to line things up as a grid and to group them and then to keep the amount of text on the button to a minimum. Some people take it too far and then they'll start abbreviating and then their abbreviations aren't consistent. So, I've come across systems, systems where they've had FWD and FRD and they both stand for forward. And I'm like, OK, drop the same. Yeah, I know. It's like drop the same letters out of each of them, please. It's not rocket science anyhow. So, you know, you know, consistency, that's what I'm asking. That's all I want. Just be consistent, please. OK, here's one that I've come across, changing the text live on a button. Oh, man. That is fraught with danger. Why? Before I explain why I think it's fraught with danger, why do you think that be fraught with danger. So what I mean, just to make sure I'm clear, is I push a button and as I push the button, the text on the button changes its state as well as the button changing its state. Now, why would you think that's the case? Give me a little more context here. When the text changes, is it changing the function and purpose of the button or just changing to reflect the status of whatever the button represents? Okay. What it is, is let's say you've got a button that represents the on and off of a light switch. So when the button is in a given state and it says on, you click it when it says on, the text changes to off. Okay. Then you click the button when it says off and then the text change back to on. That's a tricky one. Most people usually in that type of situation, often with play/pause buttons are the same kind of thing. They usually have to push it once or twice to figure out which state is being reflected. Yep, exactly. Because they don't know, like, I don't know, it's one of the things that Apple's done that actually annoys me because on most of their devices, when you're playing, you see the pause button to indicate pause, and when you're paused, you see the play button to indicate that you can push it to play. But the Apple TV does that backwards. Contrary to everything else they've got. When it's playing, it shows you the play button and when it's paused, it shows you the pause button. Yeah, exactly. So it comes back to user interface, like space efficiency. The problem that I've got with that whole idea of changing the button text is the first question that comes to the mind of an operator is, so does the text on mean that it's currently on? What does it mean if I push the button? Push it to turn it on. It will turn on. I know what I'll do, like you said, I'll toggle it on and off and on and off and on and off until I figure out what it does. Yeah, because that's the way that you should do all of your control system operations by trial and error. Oh, should I flare the gas right now? Oh, let's see. On. Oh, look at that big flame. Off. Oh, now the flame's off. Ah, I know which way around the button is now. Sold. OK, if that's that's the way you think that you should do your damn control system again, come closer so I can slap you. No. I'm a firm believer that changing text on buttons is just a bad idea. Take up the extra space and put an on and an off button or better still, don't use a button, use an on off indication switch, like a use like a similar to what Apple have gone on their slider. A segmented control. Not necessarily a segmented control. It's a standard user interface. I think it's just UI button. That's a slider switch. So, you know, you tap on it and it changes state. It goes from green, but also the slider indicator goes from left to right. You know, like a more traditional North American slider light switch style. - Yeah, that one's called the UI toggle. - UI toggle, thank you. Sorry, it's been a while since I've used that. - I clarified, 'cause there is a UI slider and that's like what you see as volume knobs. - Yeah, you're right. I'm sorry, I'm getting my terminology mixed up. It's been a while since I programmed. Yeah, UI segmenting control is the different one. That's the, that's when we can have two, three, four, five, whatever else. And you tap one, it selects and highlights that one and unhighlights the others. - Like radio buttons. - Yeah, like radio buttons. That's right, yes, exactly. So anyway, all right. Okay, so that's the text on a button. But there's another, there's another issue with that. So like I said, you've got, you know, inverted logical meaning versus textually correct logical meaning. So even if it's not on the button, what about the text next to the button? So, or, yeah, or in the case of an indicator, you know, so let's talk about an indicator for a second. So if the indicator is on, then the text next to the button is generally should be considered to be true, such that if you have an indicator on and it says motor in fault, OK, so when the indicator is on, motor is in fault. Okay. So what about the flip side of that? Motor healthy. So if the light is on, you would think, okay, motor is healthy, but some people will program it the other way around and saying light on equals bad. Well, what is this light indicating? It's indicating the health of the motor, therefore motor healthy. And it's like, no, you've inverted the logical meaning of your indicator. So I have always preferred textually correct logical meaning, which is to say that if I have a binary state or if I have a textual condition, that the, the, the, how that text reads is string literally what the indicator light means in its on state. And the common mistake that a lot of people make in SCADA systems is that logic will often come into PLCs inverted. So rather than having a push button that makes a contact, it's actually a push button that breaks a contact. So if you look at a digital input, the digital input will always have current flowing to it, will always have voltage applied to it and it'll show up as a logical one. You push the button, it breaks the circuit, it drops to zero volts, you get a zero instead. That's what they refer to as fail safe logic. Because if you get a break in the wire and that button is for something critical, like machine stop, then, you know, that logic is inverted. So often what you'll see is, just as an aside, is start buttons will be normally open and stop buttons will be normally closed. The idea is that if anything breaks the circuit through damage to the button, damage to the cabling, damage to the connections or the input and the signal goes to zero, the button, the machine will naturally tend to stop. And in order to start the machine everything must be, well, hunky-dory and working. You've got to fix the issue. Yeah. So that's so-called fail-safe design, right? And I'll apply that to logical inputs for fault status. Mm-hmm. Okay, so that's all well and good, they bring it into the machine, motor in fault or motor healthy. So an indicating on a logical one, because it's inverted logic, because it's fail safe design. What does that mean? Well, a logical one will mean, oh, my motor is healthy. So a zero is actually a fault state. So the mistake that people make is they bring the healthy indicator in. But that's not what you want to do. What you want to do is you want to indicate when there is a fault condition. And I'll make a few references to ASM, which is Abnormal Situation Management and that's another whole episode in and of itself. But ASM principles state that you should only draw operator attention when operator attention is required. And that means that you don't want to indicate that there is a healthy state. You only want to indicate if there's a false state. You want to indicate exceptions. Exactly. So anyway, just another interesting aside about naming conventions. and clarity. Okay so indication, indication for state, indication for warning and indication for alarm. Now these are all subtly different things so you can indicate the state of the system that is neither a warning nor a fault or an alarm. It is device running, device on. It doesn't mean that anything's wrong it's just telling you that something is happening. It's your window into the system it's telling you yes this sensor in this location tells me something just went past. Lovely. So you know that's obviously the simplest. Yeah obviously then we already talked about you know indicating for a warning, indicating for an alarm. Now then the argument of solid versus flashing. So overloading indicators and when I say overloading what I mean is you know having multiple states displayed through a single indication. So whether you use flashing, long flash, short flash, Morse code flashing, whatever, or on off, so solid versus off. So solid on versus solid off versus some kind of flashing. Overloading indicators, like I said, bad idea. But honestly, ASM, if you read ASM, flashing is to be avoided. Flashing distracts. So if you have a part, let's say you've got a screen and the top left corner, something is flashing, but the bottom right corner is where you have a currently have got a fault that you're trying to deal with the flashing. The top left corner will distract you from what's in the bottom right corner that you're trying to focus on. Flashing to be used very sparingly. Next thing, just want to quickly cover and we're, we're getting close to, to wrapping up. I mean, I could go on and on, but honestly, It's better if I draw a line at some stage. Okay, so command response. Now, this is one that doesn't occur to a lot of people because a lot of people think, well, I send a command, the system gets it, it does stuff. And I see what happens, you know, or I get feedback to say it's happened. Okay, real world scenario. That is never how it works, ever. Latency is real and latency occurs in multiple levels. So if I go and indicate, if I click on a button that says start motor, the sequence of events goes something like this. The mouse left click is translated by the software, the SCADA software, and then it's assembles a message. The message is assembled, takes a real amount of time to assemble that message. And, you know, it may be requesting alarm, it may be requesting alarm data, you know, trend data, whatever from the PLC. It assembles that as a message and then messages that down to the device. The device, the PLC, the RT, the DCS will receive that message, decode it, unpack it and say, right, you are a set request for this bit in this memory location, go set yourself. that will have a time delay. The network latency carrying that packet of data, I'm assuming it's carrying over ethernet or some packet switch network of some kind. Even if it's token ring, then you've got a delay, it's a fixed delay based on who gets the token and when, whatever, same thing, you get a delay. Once it's in there, these things have what they refer to as a scan, a scan cycle. So from the start of scan cycle to the end of the scan cycle, if you inject new data at a point early, like at a point in the scan such that it's already happened. In other words, the code has already passed that scan. The scan has already passed the bit of code that's affected by the bit that you've just set. It's not gonna see it until the next scan. So you'll have a one scan delay. That scan delay could be 25 milliseconds. It could be as much as five or six seconds. DCSs will typically have multiple scan classes such that one scan class scans at a fast rate. So you put code in there that's in vital that is executed quickly and other ones that have slower scan classes. So the scan rate could be variable depending upon what part of memory the variable, it's variable based on where the variable is in the memory, the variable memory. It's all variable. Get too many variables. Anyway. Okay. So all of that then goes out to the motor, signals, the motor usually through a comms communications bus these days, traditionally through hardwired signaling. That all takes time, although that's not very long. And then finally the motor will respond and it'll start. Power will go to the motor and it'll pull the contactor. Contactor will take time to actuate. And then as that contactor actuates, power will flow to the motor. The magnetic field will establish. The center rotor will start to spin and hey, presto, the magic of my control system has just started my engine, my motor, sorry, spinning. Hey, presto. But that's not the end of the story, because then you need an auxiliary contact that closes with your contact and then be fed back into the PLC to tell you, yes, indeed, my contact are closed and it is very likely my motor started spinning. Still not evidence it's spinning, but you know, and then that needs to come back in a packet that's scanned by the SCADA system and then displayed on the screen to show you that, yes, it is running. All right. So that's an example of a local system. Now take that and make that a remote telemetry unit, an RTU, which is a PLC a long distance away. OK, RTU, long distance away. Now I'm going to add in a telemetry system. The telemetry system does not communicate in a matter of milliseconds. Or even seconds, it's in minutes, because you've got to hop between five different mountaintops, it's a simplex connection. I send a packet and it comes out the other end five minutes later. You know, that's what happens. So, then that leads us to a huge latency, huge time delay between command and response. So, command response systems, I've seen a few systems done recently where there is a button that's used as a dual purpose indicator and it irritates the living, you know, what out of me. So I just don't feel like getting beeps out this week. But anyway, so command response button. Here we go. I click the button, an indicator light on the left. There's two indicator lights, one on the left, one on the right of the button. They're physically on the button. Indicator light on the left indicates solid on. I have now commanded it to turn on. After the signal has been received in the RTU, the action has been applied and then it responds back to the SCADA again, it then turns on the response acknowledged. So you get a command response, two indicators on a single button to account for the time delay. So as an operator, I can look at the button and I can objectively say, I have sent the command. Why is that important? Because you don't want the operator to keep clicking the damn button. Gotcha. So I need to know, yes, the message was sent. Was it sent? Yes. Stop clicking me. Don't you wish you had something like that on the email send button, right? Yeah, it's like, yeah. Or the submit button on a form on the web, it's like, submit. It's like, please do not keep on pressing it. No, don't. No, you'll get charged more than once. Do not reload this page or you'll get multiple credit card transactions, you know. This is an attempt to overcome that. But the implementation, the way it had been done was not actually correct. So it wasn't command response from I sent a command, then the device responded that it had actually reacted. It was command has been sent, response, yes, in fact, the command got there, but I have no idea if it did anything. So the command response was actually the command response of the command, not the command response of the actual command intention, if that makes sense. Yep. So it's kind of like me saying to you, yo, Vic, tap your mic and you say, yes, I will tap my mic. And it's like, great. But you never tap your mic. I'm like, oh, well, thank you. Thank you very much. Thank you for screwing up my analogy. But yes. Okay, so buttons as buttons, buttons as indicators, indicators as buttons, as indicators and indicators. There you go. There you go now you know. Try to keep them separate, boys and girls. Just do it. These. Do it for John. Thank you. [laughs] - Do it for John. - Do it for me. Do it for me. And all the other operators will thank you. Well, maybe they won't thank you. Some of them are miserable a lot. But that's because they work longer hours. And they do shift work. And that just makes anyone cranky after you do it for a few years. Anyhow. Alrighty. And you know what? I think I might leave it there. There is so much more to say about SCADA that is just scratching the surface. And you know, Navigation is one I had down on the list. I think I'll leave Navigation for another day. We were going for over an hour and I think I want to draw the line there. If you want to talk more about this, you can reach me on Twitter @johnchidjie and you can check out my writing and this podcast and others I've made. They're all hosted at techdistortion.com. If you'd like to get in touch with Vic, How can they get in touch with you Vic? They can find me on Twitter @vighudson1 And you recently started back doing the AppStory podcast is that right? I did they can find that at appstorypodcast.com Fantastic. Alrighty if you'd like to send any feedback about the show please use the feedback form on the website that's where you'll also find the show notes for this episode under podcasts pragmatic if there are topics you would like me to cover you can suggest and vote on them at the site on the topics once you sign up for a free account. I've also started to release excerpts from the show that are off topic and cut from the main episode I'm calling it a addenda. Look for it at the site under podcasts addenda. You can follow Pragmatic Show on Twitter to see show announcements and other related stuff. And I'd like to also have a final thank you to both of our sponsors for this episode. The first one being Harvest. If you'd like to track your time quickly and easily with the ability to turn those into time sheets for invoices for your clients with built-in support of PayPal and Stripe, then Harvest is what you need. Check out Harvest at getharvestalloneword.com and sign up for a free 30-day trial today. Once your 30-day trial is over, use the coupon code "Pragmatic" at the checkout and you'll also save 50% off your first month. But hurry, this offer expires January 15, 2015. I'd also like to thank Lynda.com for sponsoring Pragmatic. If there's anything you'd like to learn about and you're looking for an easy and affordable way to learn then lynda.com can help you out. Instantly stream thousands of courses created by experts in their fields of business, software, web development, graphic design and lots and lots more. Visit lynda.com/pragmatic to get a free 10-day trial. If you've ever wanted to learn something new, what are you waiting for? Thanks again, Vic, and of course, thank you to everyone for listening. [MUSIC PLAYING] (upbeat music) [Music] [Music] [Music] [Music] [Music] [Music] [Music] [Music] [Music] You can say something if you want. Thank you. Something. Thank you, something. Thank you, something. Well, you said to say something if I wanted. Fine. Fine then, say this. Y'all come back now, you hear? Oh, boy, here we go. Y'all come back now, you hear? Much better. Thank you very much.
Duration 1 hour, 27 minutes and 22 seconds Direct Download
Episode Sponsors:
Lynda.com: Lynda.com is the easy and affordable way to learn where you can instantly stream thousands of courses created by experts in their fields of business, software, web development, graphic design and lots more. Visit the URL below to get a free 10-day trial. If you’ve ever wanted to learn something new, what are you waiting for? Visit lynda.com/pragmatic to learn more.

Harvest: Harvest allows you to track your time quickly and easily with the ability to quickly turn those timesheets into invoices for your clients with built-in support for both PayPal and Stripe. Visit the URL below and sign up for a free 30 day trial today. Visit getharvest.com and use the Coupon Code PRAGMATIC and you’ll also save 50% off your first month but be quick - this offer expires on January the 15th, 2015!

Show Notes

Previous Pragmatic Episode Links:

Related Links:


Premium supporters have access to high-quality, early released episodes with a full back-catalogues of previous episodes
SUPPORT PRAGMATIC PATREON APPLE PODCASTS PAYPAL ME
STREAMING VALUE SUPPORT FOUNTAIN PODVERSE BREEZ PODFRIEND
CONTACT FEEDBACK REDDIT FEDIVERSE TWITTER FACEBOOK
LISTEN RSS PODFRIEND APPLE PODCASTS SPOTIFY GOOGLE PODCASTS INSTAGRAM STITCHER IHEART RADIO TUNEIN RADIO CASTBOX FM OVERCAST POCKETCASTS CASTRO GAANA JIOSAAVN AMAZON

People


Vic Hudson

Vic Hudson

Vic is the host of the App Story Podcast and is the developer behind Money Pilot for iOS.

John Chidgey

John Chidgey

John is an Electrical, Instrumentation and Control Systems Engineer, software developer, podcaster, vocal actor and runs TechDistortion and the Engineered Network. John is a Chartered Professional Engineer in both Electrical Engineering and Information, Telecommunications and Electronics Engineering (ITEE) and a semi-regular conference speaker.

John has produced and appeared on many podcasts including Pragmatic and Causality and is available for hire for Vocal Acting or advertising. He has experience and interest in HMI Design, Alarm Management, Cyber-security and Root Cause Analysis.

Described as the David Attenborough of disasters, and a Dreamy Narrator with Great Pipes by the Podfather Adam Curry.

You can find him on the Fediverse and on Twitter.