Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - timryder

Pages: 1 [2] 3 4 ... 6
16
Support Questions / Variable for PLC IPAddress
« on: July 27, 2020, 10:59:07 AM »
I have clients that want to be able to change the PLC's IP Address and i was wondering if it were possible to write the ip to a string variable and have the COM object use that instead of manually entering it int he designer.  Any thoughts about a dynamic IP address? Maybe some routine that executes on startup?

17
Ahh, gotcha.  No that would be very irresponsible to do. Had I shown a picture of the panel itself I'm sure you would have noticed the safety circuit and deduced it was interlocked appropriately.  But good info for anyone who reads this thread as well.

18
Application Showcase / Re: SE vs Ignition vs AHMI
« on: March 12, 2020, 01:50:35 PM »
For those of us who haven't ever used Ignition, it's not completely obvious.  Not to mention that with .Net it's completely possible to reproduce every single one of those.  But thank you for identifying them for me.  Looks really good. Dare I say Cleaner than the other implementations.

19
I am a little bit leery with the door switch, since it concern with safety aspect.

Not sure what you mean exactly, but the door is completely interlocked with a redundant safety relay circuit to the laser marker.  The Laser will instantly stop and all output power is removed as well as a physical shutter moves into place in the path of the beam.  It's very safe.  As if that wasn't enough, we actually engage a mechanical lock on the door anytime the Laser output is on.  The customer can't even open the door while it's performing it's function. 

20
Nice work! I've seen those ADAM modules long time before, but always wondered how they work with no real time OS like windows. Are you polling data from it, of so at what rate? Do you use a background worker for this?

Asking because this is something I want to learn to do (multi thread and background workers), there are many applications I could use it.

AHMI has helped me a lot with its already made controls that does not require to write code for these, but now I was looking for do it myself in other drivers like for Siemens.

So from my main thread I call an initialization Function and check to make sure the Adam module , Camera and Laser can be reached by Ethernet.  From each check I start a background worker thread for each device where I continuously loop untill the main thread closes the worker threads. 

I'm polling the Adam module at 25ms interval and the Keyence at 100ms. I created a class for an input device which contains name, port, bit, state etc and I loop through and check/set all the inputs on the Adam.  Then I write to the Outputs in a similar fashion.

I also have a Auto Process thread which uses the input values and can also set the output states for the I/O conditionally.  I'd be happy to give you the code if you want.  It can use some improvement but it's a start.

Thanks everyone for your compliments!

21
Nice! Are BCR camera and laser head from Keyence? CO2?

The Camera is an SR1000 from Keyence and the Laser is an MD-X1000 from Keyence also.  Its a Fiber Laser Marker.

22
Application Showcase / Controlling an entire machine as HMI and PLC.
« on: March 02, 2020, 11:58:04 AM »
This is an overview of a project I did later 2019 which showcases the potential power of AdvancedHMI and how nearly limitless it can be due to the fact that it's a .NET application.

The machine is a stand-alone laser marking station with a camera, fume extractor, servo motor for automated door, safety circuit, indicators lights, input sensors and push buttons. And they're all being controlled by AdvancedHMI.

I started with the idea of, do I really need a PLC? The short answer is NO, but I do need something to convert my Discrete 24v I/O into an Ethernet packet of data I can both read and write with. So I did some hunting online and found several resources, but ultimately decided to go with a product by Advantech called the ADAM-6052-D. It is a 16ch I/O 24vdc module which has Ethernet for both read and write capability.  They offer TCP/IP, ModbusTCP and many other protocols as the cheap cost of $235.00 at the time of this post. They also provide free .NET Libraries for their products which make integrating it a breeze! (THIS IS NOT A PLUG FOR THIS COMPANY OR PRODUCT. I AM NOT AFFILIATED) Just note there were several others I could have chosen but this one met all my criteria.

I bought this item and started testing it first in my lab and discovered it did exactly what I wanted, I could both read digital inputs and write digital outputs at my will. I had 2 other devices that I needed to communicate with and control a 2D Barcode Camera and Laser Marking System. This didn't take much effort as my company partners with Keyence this was a quick choice. Keyence allows for ASCII over TCP for controlling their system as well as reading status' any time.

So all the pieces were together and I started production on the machine.  Our customer has some very stringent requirements for the marking data and they would include a Checksum calculated on a marking data string which changes every part because it's serialized and the markings must be unique and cannot be duplicated. No problem. AdvancedHMI Framework being .NET, it' s a piece of cake to write up a Function to read the string from the Laser, manipulate the data, check it against a database with a SQL query for uniqueness and send it back down the Laser to be marked. Then with my custom "Auto Process" Thread which is constantly looping in the background similar to how a PLC does, I could trigger the actions of all the machinery via the Discrete I/O from the ADAM module and after marking, trigger the camera to read the marking over TCP and verify read versus the intending marking.

So all of this was done using the power of .NET and the AdvancedHMI framework was the perfect solution for me. The machine is running in production now with no issues and it has massive amount of tasks and is done with some super simple cost effective components. This was posted just as an encouragement to think outside of the box for this product. It has much more powerful potential than just a simple HMI application. Not that it doesn't do so very well, it does, but it's limitless with what it can do.

23
Support Questions / Re: Email QUESTIONS
« on: March 02, 2020, 11:05:38 AM »
Could use the Inner Exception to debug where the issue is better.  When that comes up, look on the Exception Handler dialog for the "See Inner Exception" and post that information.

24
Support Questions / Re: Running 2 instances
« on: February 27, 2020, 03:10:26 PM »
That's not what Archie means.

Right-Click on the "AdvancedHMI" project in the Solution Explorer and open up the Project Properties.

On the Application tab there is a checkbox for "Make single instance application".  Uncheck this and it will allow for multiple instances of the same .exe to run simultaneously.

25
Feature Request / Re: Driver communications log (error log)
« on: February 27, 2020, 03:04:14 PM »
Agreed, as do I.  I haven't looked in depth at the driver code but I imagine it can't be that hard to do.  It would make for a VERY useful debug tool.  Thanks for the consideration.

26
Feature Request / Driver communications log (error log)
« on: February 27, 2020, 10:48:48 AM »
It would be amazing if there was an ability to set a Log file for the communications driver. I would have saved so much time if I could go back and look at the driver to see what error's occurred when testing something.  Could it be possible to enable a Log feature into the driver and have it store to a .txt file locally?

27
Support Questions / Re: Show Control On top Of other Control
« on: February 27, 2020, 10:44:14 AM »
You could always just try to put those controls on a panel or a groupbox?

28
Why not just create a function which reads the tag data directly from the PLC and stores their values in your own variable?

REALLY rough example, i write VB.net mostly.
Code: [Select]
try
            {
                //Create a new Driver instance
                var plcDriver = new AdvancedHMIDrivers.EthernetIPforCLXCom();
               
                plcDriver.IPAddress = "192.168.1.1";
                plcDriver.PollRateOverride = 150;


                string _testTage = "Robot1:I.Data[0]";
                int _subscribeTotal = 32;
                int _subscribeCount = 0;

                //UnsubscribeTags();

                for (int i = 0; i < _subscribeTotal; i++)
                {
                    string tag = String.Format("{0}.{1}", _testTage, i.ToString());
                    Console.WriteLine(tag);
                    string _testTagData = plcDriver.Read(tag);
                    Console.WriteLine(_testTagData);
       
                    someDataContainer.Add(_testTagData);
                }
                _subscribeCount++;

                Console.WriteLine("Finished Subscribing.");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, ex.TargetSite.Name);
            }

29
Application Showcase / Re: SE vs Ignition vs AHMI
« on: February 27, 2020, 10:13:07 AM »
Looks really good Phrog, which picture is which?

30
Open Discussion / Re: Controlling PilotLight
« on: April 04, 2019, 11:38:06 AM »
Im interpreting this as AHMI being the Logic Controller (Master) in the Modbus network and writing code to control the Slaves. I have done this with EtherNet/IP and standard TCP applications where AHMI is controlling a Laser Marker, Camera and the PLC for motion and general machine interaction.

Pages: 1 [2] 3 4 ... 6