AdvancedHMI Software
General Category => Open Discussion => Topic started by: Archie on September 25, 2015, 10:01:42 PM
-
Version 3 is in a stage of winding down meaning there will only be bug fixes and minor features added. The plans for version 4 is in the works. I would like to ask what everyone would like to see in Version 4.
A most likely noticeable change will be in the PLCAddress properties. With the upcoming version 4 these properties will not only let you put in an addresss or tag name directly, but also open a dialog that lets you specify scaling parameters. This means current properties like ValueScaleFactor and ValueScaleOffset would go away.
Universal Apps are also being investigated. Under this format, an AdvancedHMI app would be able to run on a desktop, tablet, phone, and Raspberry Pi.
So if you have any visions of where you like to see the next major version go, please post your ideas.
-
There were several topics discussing a possibility of using AHMI on a Raspberry Pi with a serial based PLC connected to it (and a touchscreen).
I guess that ethernet driver seems to be working fine for this kind of setup and if serial connection could be resolved as well then that could make AHMI very "attractive".
-
A good user manual would be what I'd want
-
It would be nice to import tags that are exported from the ControlLogix and CompactLogix platforms. Then have them available to select from the controls with a drop down list.
-
When you add a new Windows form it always shows up as white background, 300x300 size.
Could you add a way to change the new form defaults so I can make them with the background and screen size for the project I am working on at the time? Then I change the defaults when I start a new project.
-
A component that would show a burner flame and the length of the flame or intensity controlled by an analog value or just on off
-
+1 with maxketcham , however I know how hard writing manuals are , so if you do , can I suggest you treat a manual like your extra controls and sell as expansion packs by the chapter .
I'm sure others will agree that you deserve a better income stream for all your hard work .
Paul
-
Hi All,
thanks to AdvancedHMI,
am waiting realy and many other people like me are waiting AdvancedHMI to work with http protocol or web interface.
if possible.
many thnks
Ibrahim
-
Hi,
It would be possible to improve the historical record (Datalogger), to send a pdf, xls, xlsx. etc plot them along with all your data and that information also select between ranges of dates and times.
-
Another thing I would like to be able to do, along with being able to show MPG movies in a window - be able to show live video from a camera fed into the computer. I work on a system now that the operator can pull up a live shot from a camera inside the machine while it's running.
-
It would be nice to import tags that are exported from the ControlLogix and CompactLogix platforms. Then have them available to select from the controls with a drop down list.
+1
-
It would be great if I could run AdvHMI on multiple platforms. I'm looking into the feasibility of controlling Allen-Bradley Micro850 Series PLC via AdvancedHMI on iPad, which means I need a way to run the .NET framework. I'm looking into the Mono platform from Xamarin to accomplish .NET on iOS, but it's just adding another layer of complexity. Would love to be able to use AdvancedHMI natively on iOS and Android.
-
After my own frustrations and seeing the same from other posters here I think the single easiest thing you could do that would make users much happier long term is some sort of reliable upgrade path with every new release.
For instance, every new release can reliably update your old project files to the latest version.
Currently nearly every new release/bugfix requires completely dumping your old project and starting completely fresh. For me with a smaller setup that's still 5 hours of work all over again just to get a few bugfixes, for other people with large industrial setups I wouldn't be surprised if they would have to spend 100 hours redoing their entire project because the latest release isn't upgradable or compatible. I can't be the only person to be slightly frustrated when I finish building a complex panel just to see a day later a new release is put out that addresses some bugs I've been seeing, but it involves redoing it all from scratch or search and replacing hundreds of files.
Anyway, I'm sure that's way easier said than done. And even if not it's still totally free so we can't complain!
-
After my own frustrations and seeing the same from other posters here I think the single easiest thing you could do that would make users much happier long term is some sort of reliable upgrade path with every new release.
For instance, every new release can reliably update your old project files to the latest version.
As of version 3.80, the solution went through a major restructure to ease the pain of upgrading and was a huge step forward. However some version updates after that still correct names or change classes, which breaks a previous project when upgraded. To maintain full backward compatibility would begin to make software maintenance tedious and require a lot of time. This in turn would take away the ability to keep the software free. In order to meet in the middle, a couple weeks ago a new service was added the web site for us to upgrade projects for a very small fee.
-
In order to meet in the middle, a couple weeks ago a new service was added the web site for us to upgrade projects for a very small fee.
Sounds like a good compromise, I'll most likely be taking advantage of that service soon!
-
oh wow I just saw the price for the upgrade service - more than fair! You could charge twice that and it'd still be a deal
-
Siemens MPI or ethernet driver. Preferably ethernet.
-
Scenario:
AdvHMI being used to communicate with multiple PLCs on ModbusTCP or Modbus RTU.
If any machine (PLC ) switches off , application goes unresponsive .
In-stead it should gracefully switch off communication to non responsive PLC and continue servicing other healthy PLCs.
Thanks .
-
Another thing I would like to be able to do, along with being able to show MPG movies in a window - be able to show live video from a camera fed into the computer. I work on a system now that the operator can pull up a live shot from a camera inside the machine while it's running.
See this:
http://advancedhmi.com/forum/index.php?topic=976.msg5123#msg5123
-
Hi,
Firstly, it has been over a year since I played with Advanced HMI so if any of my suggestions are implemented already, my apologies.
Would it be possible (or wise) to have a form type for hosting the comm objects?
As I remember it, for each HMI page in my project, I had to have a COMM object on each form in order to access the same PLC. That meant if the IP or settings were changed, I had to go through each page and update each instance.
Here are a couple of ideas on how this could go...
* A separate service app that provides COMMs - separate to the UI (like a traditional SCADA package)?
* Or perhaps a special 'manager' form that runs in background (potentially under the notification panel) that hosts the COMM objects once only.
At design time, HMI controls on the HMI pages could somehow pick up the list of COMM object(s) from the 'manager' form
At runtime, the 'manager' form when displayed could show useful info like comm status / comm logs (e.g. the COMM objects could be a visible objects with settings/status information and default interactions like 'Data Scope (i.e. ASCI View)', 'Error Log', 'Debug log' etc)
One of many possible future benefits of this arrangement might be to implement a global alarm control or anything that needs to be continuously polled regardless of the page currently visible?
Another request - I would love to be able to perform animation on all the major properties of the HMI controls. Not just from a PLC value, but from an expression / evaluation.
Examples (pseudo code examples to get point across)
* For the controls Visible Property, I would like to be able to enter if(PLC1:DM:0 < 10, True, False)
* For the text colour I could put Colour.FromRGB(PLC1:DM:1, PLC1:DM:2, PLC1:DM:3)
* For the Fill value of a tank I could put (PLC1:DM:5 + PLC1:DM:6)
* Each of these could potentially be built from an expression builder (i.e. editing one of these properties could display a builder form where the projects COMM objects would be listed, common functions, operators etc for the user to choose from)
How you would achieve this - there are a few ways to skin it.
Perhaps the properties of a HMI control are derived from an 'Evaluator' class that knows how to parse the PLC addresses and expressions to a result suitable for the base property type?
Or perhaps an 'Animator' control where you bind an expression to a controls property? (not quite as neat but perhaps easier to implement & would work for standard .NET controls too)
Lastly, I do realise we have the option to code this in a VB event but visual configuration is often easier for folk than coding.
Any how, keep up the good work.
Regards, Steve.
PS, are you looking for co developers? I have many years experience in both .NET and PLCs (mostly OMRON, Mitsi and some older AB - I've even written drivers for my own projects for each of these in various languages). I am toying with the idea of getting stuck into something & this looks like a fun project.
-
GE Fanuc series ninety protocol( SNP) for the older CPUs that don't support modbus. Great work Archie
-
GE Fanuc series ninety protocol( SNP) for the older CPUs that don't support modbus. Great work Archie
AdvancedHMI used to have a GE SNP driver that was contributed by a user. When the software went through some driver requirement changes, the user that written the driver was no longer available, so the driver had to be dropped from the distribution.
Some of the older versions on Sourceforge may still have that driver. Probably around version 3.21
-
1. Would like to see opc-xml drivers. Seems like many devices nowadays are shipped with opc-xml web service.
2. Mathematical Expressions on tags and property on widget with expressions such as visibility /color/location property has logic.
-
I think conversion to Universal Apps would be a good path. Something that makes different OS's less of a hassle to port to.
-
I see a lot of growth/use for AHMI for data logging and creating reports and graphs(one of my current projects). I would like to see an expansion in this area such as a field in the dataloggers for column headers . Thanks
-
Siemens TCP/IP Ethernet driver ,many Seimens Simatic S7-1200 plc's on industrial sites lately . would be nice to build HMI's for these systems
Darrell
-
I did use AHMI for data logging/database/traceability, using MS Access mdb format (yes I know, but it was what I had) because we wanted some application easy to move from PC to PC without having to setup SQL or other type of servers. Now that I have a little more knowledge with databases, SQLite is better option (still I have not used it before), but can see its widespread use in large databases and still just embedded in just a file.
So I would like to to see some easy way to integrate a basic data logging using SQLite, like Access does. I know this is asking too much, but hey, I can dream.
-
reading/writing UDT tags for CLX
-
A trend chart that can read from multiple controllers on the same graph.....that's easily configured:)
-
A user manual (pdf format?) would probably be tops on my list right now. One that describes and provides example/s for every control available in AdvancedHMI. Another feature is regarding the properties window for each control. When one clicks on a particular property of a control, there should be a brief description down below in the description window that briefly describes what the property is for/does, etc. For instance, when you click on the "Three State" property of a standard Windows checkbox, it says "Indicates whether the checkbox will allow three check states rather than two". And so forth...
More controls would be another nice addition, even if there was a reasonable premium for them (I've purchased all premium controls available thus far). Different types of valves (servo, directional, etc...), pneumatic valves.
I understand that this software if free, so I'm certainly not complaining. Just some things that would be nice to have in future releases. :)
-
I use AHMI for home automation and found it to be very reliable, robust and flexible for viewing / monitoring purposes. I think opc data storage could be improved....
So I would like to see enhancements made to the basic data logger to allow simple time & date logging of opc data items ( including TAG name plus plcaddress ref) and their status (ie good/bad) to external log/csv/etc files in user selectable time frame eg each hour/day/week/month and with the option of the log file data over write after eg X weeks/months/years. Also user selectable sample interval to record the opc data with start/stop times (scheduleing) for each log file would be a big bonus. Another good option would be to be able to set the number of decimal places of each opc data item before it is logged(file space saving). From the log files the data can be sliced and diced however the user wants to display it by use of 3rd party applications. Another alternative is to popplate a database with the opc data. Eitherway easy access to opc history is of growing importance to me.
I would also like to see easier population of the plcaddress details by incorporating online/live data opc items list that feature in 3rd party opc explorers. This will help avoid taping errors for opc items.
Hope this helps
-
Not sure if the really applies here ,
One thing I don't want to see, is for advance HMI to go the way of the new style of programing your see on phones and all over the internet now , Im not sure what is being called , flat style , 2d , clean , flat style icons , I really don't know . I worked on a job recently where the new HMI's where done that way and no one like it to say the least , all the displays where very bland looking , flat style icons and is wasn't easy to tell differences on the screen. When something is highlighted , you shouldn't have to look for 3 min's to find it on a screen. Something changes , you want to be able to easily see it .
Now on the other hand HMI's done with ADHMI ,where eye popping , and done with proper colors and graphics and easy to see , In industrial setting this is what you want , less likely to make mistakes.
I love this product , But If Advance HMI every goes to this new style , I for one will stop using it.
Darrell
-
When you add a new Windows form it always shows up as white background, 300x300 size.
Could you add a way to change the new form defaults so I can make them with the background and screen size for the project I am working on at the time? Then I change the defaults when I start a new project.
I posted a tip on one way to achieve this. See it here:
http://advancedhmi.com/forum/index.php?topic=1174.0
-
Tag management - export & import of tags.
Overload Modbus read & write methods for int, float; currently all data are string
-
The ability to insert tags or variables in the text of messages , labels etc.
Paul
-
If it's not already a thing, and if it is please inform me how to do this, an implementation for Universal Apps would be good.
-
If it's not already a thing, and if it is please inform me how to do this, an implementation for Universal Apps would be good.
That will be coming in the future. All of the drivers are being updated for compatibility in UWP.
-
It would be nice to configure the number of digits in the gauge, or have at least 4 digits.
I wanted to display motor rpms with it, but couldn't get more than 999 :-(.
-
Homie,
There is a gauge with 5 digits in this topic:
http://advancedhmi.com/forum/index.php?PHPSESSID=eb5ca1864fc0b141aa321fd853ded7d2&topic=945.0
-
Thanks!
Found time to test that today. Works after some minor user issues.
I miss a LIKE Button here in the Forum :-).
-
Thanks!
Found time to test that today. Works after some minor user issues.
I miss a LIKE Button here in the Forum :-).
Always thought that also.
-
When can we see the update??
-
seconds to hrs:mm:ss button, and hrs:mm:ss to seconds button.
Just finished my first plc programming project with hmi interface.
i am very very pleased with advanced hmi.
free.
easy to understand.
easy to apply and integrate.
Amazing support.
Thank you Archie for your product.
-
First thanks a lot for all the work that had been done with AHMI !
I tested (or almost tried...) a lot of HMI softwares around and I ended up with this one that seemed the simplest to install and implement and on the same time opening a lot of possibilities !
I suppose that now one of the best values to add might be new Components. For example compressors, up/down switches, lights...
-
To connect to DNP3
As many graphic elements
- pumps
combustion engines
generators
fans
Boilers
agitator
Color Pipes
injection plunger
You can read the files generated by the dataloger directly load the graphics for display, putting the date range, tag name or address.
-
I like to request a change in exception handling. Currently if you throw any exception in a data subscriber event listener method/subscriber (not sure what the official .net term for that is) it will be caught in the AHMI library. I'd like to request a change so that only the exceptions that need to be caught by the library are instead of all of them.
For example in this library method when OnDataChanged(e) is called any exception thrown there is caught.
Private Sub PolledDataReturnedValue(ByVal sender As Object, ByVal e As MfgControl.AdvancedHMI.Drivers.Common.PlcComEventArgs)
Try
'* Fire this event every time data is returned
OnDataReturned(e)
'* Case may be switched so find key based on that
Dim TargetKey As String = ""
For Each key In SubscribedValueList.Keys
If String.Compare(key, e.PlcAddress, True) = 0 Then
TargetKey = key
End If
Next
If e.Values(0) <> SubscribedValueList(TargetKey) Then
'* Save this value so we know if it changed without comparing the invert
SubscribedValueList(e.PlcAddress) = e.Values(0)
If InvertValue Then
m_Value = Convert.ToString(Not CBool(e.Values(0)))
Else
m_Value = e.Values(0)
End If
'* This event is only fired when the returned data has changed
OnDataChanged(e) '* <--- any exceptions thrown by the user/programmer in a subscribed method are caught below.
End If
Catch ex As Exception
DisplayError("INVALID VALUE RETURNED!")
End Try
End Sub
If it's not already a thing, and if it is please inform me how to do this, an implementation for Universal Apps would be good.
That will be coming in the future. All of the drivers are being updated for compatibility in UWP.
Love this
-
Could you possibly integrate or add a controls for VNC?
-
Support for Siemens S7 PLCs (300/400.....)
-
seimens would be nice S7-1200 - 1500
-
If i am not mistaken, s7-1200 cpu's support modbus tcp communication, soo i think that Ahmi modbus tcp communication will work too, but i didnt try it yet. In the near future i can report when i try.
-
Support for Codesys 3.5
-
Support for Codesys 3.5
I pushed for this for many years, but 3S Software refuses to release the specifications for the protocol. They want to make sure they can sell their communication library.
-
If i am not mistaken, s7-1200 cpu's support modbus tcp communication, soo i think that Ahmi modbus tcp communication will work too, but i didnt try it yet. In the near future i can report when i try.
Please do it so. In a short term (like 4 months) I will have equiment with Siemens, first time for me, and I would like to keep using AHMI in my projects. So an advice that is working fine, would ease my mind.
-
The lack of a decent alarm component is the top on my list. I realize that this can be rather difficult but I'd like to see at least a template form or something that comes with AdvanceHMI which can give noob users an idea how to do it better.
Also I think the whole navigation is a bit clunky, I created an MDI Client application which works much cleaner than your typical pages version.
Maybe offer a template for that too?
-
The lack of a decent alarm component is the top on my list. I realize that this can be rather difficult but I'd like to see at least a template form or something that comes with AdvanceHMI which can give noob users an idea how to do it better.
Also I think the whole navigation is a bit clunky, I created an MDI Client application which works much cleaner than your typical pages version.
Maybe offer a template for that too?
I linked a project a while ago. It's a little clunky, but works well.
http://advancedhmi.com/forum/index.php?topic=1813.msg10341#msg10341 (http://advancedhmi.com/forum/index.php?topic=1813.msg10341#msg10341)
I tested with ML, CpLX/CLX, and Modbus (Productivity 2000).
James
-
Also I think the whole navigation is a bit clunky, I created an MDI Client application which works much cleaner than your typical pages version.
Maybe offer a template for that too?
Although the MDI exists in the .NET framework, it has lost favor in recent years. To address the short comings of the separate forms display and navigation, the Main Menu driven format was introduced into the base package of AdvancedHMI.
-
read/ write tags wiht OpcUA and OpcDA
-
read/ write tags wiht OpcUA and OpcDA
OpcDA is already there with the OpcDaCom driver. Hopefully in the future OpcUa will become an option.
-
I would Like to see a driver for the AutomationDirect Productivity series processors Ethernet/IP. I have been using them more and more to replace the Allen Bradley's in our machine builds. Thanks
-
I would Like to see a driver for the AutomationDirect Productivity series processors Ethernet/IP. I have been using them more and more to replace the Allen Bradley's in our machine builds. Thanks
What's wrong with using modbus tcp?
-
I would Like to see a driver for the AutomationDirect Productivity series processors Ethernet/IP. I have been using them more and more to replace the Allen Bradley's in our machine builds. Thanks
What's wrong with using modbus tcp?
There are limitations as to what you can do versus what you'd be able to with native (for lack of a better term?) communications with the processor. It also increases development time. I'm using a DoMore PLC to control my home lighting, smoke detectors, sump pumps, etc. and would LOVE a driver for the Automation Direct controllers. I'd be willing to purchase good drivers.
+1 for Automation Direct drivers
Chris
-
How about a Controls Component that could convert and display modbus tcp strings.
Thanks Larry
-
How about a Controls Component that could convert and display modbus tcp strings.
Thanks Larry
For now, you could try using the BasicLabel control from this post:
http://advancedhmi.com/forum/index.php?topic=1946.msg11054#msg11054
-
How about a Controls Component that could convert and display modbus tcp strings.
Thanks Larry
For now, you could try using the BasicLabel control from this post:
http://advancedhmi.com/forum/index.php?topic=1946.msg11054#msg11054
Thanks Godra, I will try it out today.
-
How about a Controls Component that could convert and display modbus tcp strings.
Thanks Larry
For now, you could try using the BasicLabel control from this post:
http://advancedhmi.com/forum/index.php?topic=1946.msg11054#msg11054
Thanks Godra, I will try it out today.
I have updated the SubscriptionHandler in the "AdvancedHMIControls" and the BasicLable in the Controls Folder. I have set the modbusDriver max length and when I run the project I still get no value. If I set the "InterpretValueAsModbusString" back to False I get a numerical value from the address. This shows that the string is there. I tried using Archie's Button read and it works but I need a read without the click event.
Private Sub btnRead_Click(sender As Object, e As EventArgs) Handles btnRead.Click
Dim length As Integer = 6
Dim i As Integer = 0
Dim StartAddress As Integer
Dim Buffer As String = Nothing
While i < length
StartAddress = 40009 + i
val = ModbusTCPCom1.Read(StartAddress)
Dim BufferBytes As Byte() = BitConverter.GetBytes(val)
Dim SingleChar() As Char = {"", ""}
'From integer to ascii
SingleChar(0) = Chr(BufferBytes(1))
SingleChar(1) = Chr(BufferBytes(0))
Buffer = Buffer & SingleChar(0) & SingleChar(1)
i += 1
End While
tbxRead.Text = Buffer
End Sub
Larry
-
How about a Controls Component that could convert and display modbus tcp strings.
Thanks Larry
For now, you could try using the BasicLabel control from this post:
http://advancedhmi.com/forum/index.php?topic=1946.msg11054#msg11054
Thanks Godra, I will try it out today.
I have updated the SubscriptionHandler in the "AdvancedHMIControls" and the BasicLable in the Controls Folder. I have set the modbusDriver max length and when I run the project I still get no value. If I set the "InterpretValueAsModbusString" back to False I get a numerical value from the address. This shows that the string is there. I tried using Archie's Button read and it works but I need a read without the click event.
Private Sub btnRead_Click(sender As Object, e As EventArgs) Handles btnRead.Click
Dim length As Integer = 6
Dim i As Integer = 0
Dim StartAddress As Integer
Dim Buffer As String = Nothing
While i < length
StartAddress = 40009 + i
val = ModbusTCPCom1.Read(StartAddress)
Dim BufferBytes As Byte() = BitConverter.GetBytes(val)
Dim SingleChar() As Char = {"", ""}
'From integer to ascii
SingleChar(0) = Chr(BufferBytes(1))
SingleChar(1) = Chr(BufferBytes(0))
Buffer = Buffer & SingleChar(0) & SingleChar(1)
i += 1
End While
tbxRead.Text = Buffer
End Sub
Larry
I copied the wrong code sorry. Here is the code that works with the button"
Private Sub BtnReadPLCClick(sender As Object, e As EventArgs) Handles btnReadPLC.Click
Dim str(8) As String
'* Read it from the PLC
str = ModbusTCPCom31.Read("40002", str.Length)
Dim ResultString As String
ResultString = MfgControl.AdvancedHMI.Drivers.Common.CalculationsAndConversions.WordsToString(str)
tbxReadPLC.Text = ResultString
Debug.Print(ResultString)
End Sub"
This converts the the modbus right to display the string. Using the new basic label I get the integer values for the string. Any help would be great. I will be using this on about 10 AutomationDirect P250's as a collection point for the sql database. Thanks for your time and effort on this great product......
Larry
-
I have attached pictures of my test project.
Why don't you go ahead and try to replicate it in a fresh AHMI v3.99x project (besides for the bottom BasicLabel which was using EthernetIPforCLX driver)?
Remember to replace the BasicLabel control and SubscriptionHandler class (you do this by adding each one of them as existing item to their corresponding folder).
Each BasicLabel for Modbus has only 1 address inside PLCaddressKeypadCollection (the same address as its PLCAddressValue) so you can use the AlphaKeyboard pop up to write strings.
-
The modified BasicLabel control was updated and replaced (so download it again from the link provided previously).
-
Thanks again Godra
-
Thanks again Godra
Godra, I tried as you said" new start up, downloaded and added both The "SubscriptionHandler & BasicLabel" this morning added one modbusTCPCom driver Copyed your settings except for the IP address and point address. Was on line with the PLC in view.
Still when run the label is blank with the "InterpretValueAsModbusString" set to true.
If I set it to false The label show the integer value for the regester address.
The PLC is a "AutomationDirect P2-550. I am not sure what to do. I need it to be able to poll the address's running in the back ground. No user input. I am able to read the string using a "BasicBotton" and a"AnalogValueDisplay" From a post by Archie.
Private Sub btnReadArchie_Click(sender As Object, e As EventArgs) Handles btnReadArchie.Click
Dim str(4) As String
'* Read it from the PLC
str = ModbusTCPCom1.Read("40009", str.Length)
Dim ResultString As String
ResultString = MfgControl.AdvancedHMI.Drivers.Common.CalculationsAndConversions.WordsToString(str)
tbxReadArchie.Text = ResultString
End Sub
-
I just tried it as you did and it didn't work for me either.
This seems to have something to do with subscriptions or the driver, since a single BasicLabel with enabled InterpretValueAsModbusString property doesn't subscribe properly.
If you put another BasicLabel on the form and set its PLCAddressValue to 40008 (or some other 4xxxx address), not necessarily enabling the InterpretValueAsModbusString, then your first label should show the string.
-
This definitely has something to do with the driver's Subscribe function since it doesn't work if I try to use it through the code, without any BasicLabel on the form.
This doesn't work:
Me.ModbusTCPCom1.Subscribe("40008", 2, 250, AddressOf PolledDataReturned)
This works:
Me.ModbusTCPCom1.Subscribe("40008", 1, 250, AddressOf PolledDataReturned)
This also works:
Me.ModbusTCPCom1.Subscribe("40008", 1, 250, AddressOf PolledDataReturned)
Me.ModbusTCPCom1.Subscribe("40009", 10, 250, AddressOf PolledDataReturned)
This also works:
Me.ModbusTCPCom1.Subscribe("40008", 5, 250, AddressOf PolledDataReturned)
Me.ModbusTCPCom1.Subscribe("40015", 10, 250, AddressOf PolledDataReturned)
Archie would have to check this.
-
I just tried it as you did and it didn't work for me either.
This seems to have something to do with subscriptions or the driver, since a single BasicLabel with enabled InterpretValueAsModbusString property doesn't subscribe properly.
If you put another BasicLabel on the form and set its PLCAddressValue to 40008 (or some other 4xxxx address), not necessarily enabling the InterpretValueAsModbusString, then your first label should show the string.
I just tried it with the 2 basiclabels and still got nothing as the string in the first got the integer in the second one.
Not sure where to go from here?????
-
All I could suggest is that you download the ModRSsim2 simulator, use it instead of your PLC and see if you will get the responses I've been mentioning.
-
Here is one more suggestion for tests with your PLC:
In Visual Studio, open the BasicLabel class and set a breakpoint as it is in the attached picture.
Then run the app and see if it stops at that line.
-
I just tried this BasicLabel control with MicroLogix 1100 controller and ModbusRTU driver.
It worked the same as with the ModRSsim2 simulator.
-
Here is one more suggestion for tests with your PLC:
In Visual Studio, open the BasicLabel class and set a breakpoint as it is in the attached picture.
Then run the app and see if it stops at that line.
Godra, I put the break in and ran it and no it did not stop at the break. ?????
-
My last suggestion to you is to be patient and wait for Archie to implement Modbus string reading into the driver.
-
My last suggestion to you is to be patient and wait for Archie to implement Modbus string reading into the driver.
Godra, Again Thanks for your help and quick reply's. This is one of the best Forum's and product for any type of automation. I will post when I get it solved.
Thanks to all.
-
My last suggestion to you is to be patient and wait for Archie to implement Modbus string reading into the driver.
Godra, Again Thanks for your help and quick reply's. This is one of the best Forum's and product for any type of automation. I will post when I get it solved.
Thanks to all.
Godra,
P2-550 PLC from AutomationDirect, Scanner string in 4 register’s using an “AnalogValueDisplay†to show the string on the form. Using The ModbusTCPCom, and a timer for the read event. Starting the time on form load. Timer set to 200ms.
This is working great.
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
Dim str(7) As String
'* Read it from the PLC
str = Modbus51.Read("40002", str.Length)
Dim ResultString As String
ResultString = MfgControl.AdvancedHMI.Drivers.Common.CalculationsAndConversions.WordsToString(str)
AnalogValueDisplay34.Text = ResultString
End Sub
This will work fine on the AutomationDirect Productivity2000 series controlers. Thanks again for all the time and effort you put into helping with this. This is the best product around and the support is Great... Larry
-
Cool.
If you want to experiment, you might try squeezing your code like this:
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
'* Read it from the PLC
AnalogValueDisplay34.Text = MfgControl.AdvancedHMI.Drivers.Common.CalculationsAndConversions.WordsToString(Modbus51.Read("40002", 8))
End Sub
I haven't tried it but it looks logical.
-
Cool.
If you want to experiment, you might try squeezing your code like this:
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
'* Read it from the PLC
AnalogValueDisplay34.Text = MfgControl.AdvancedHMI.Drivers.Common.CalculationsAndConversions.WordsToString(Modbus51.Read("40002", 8))
End Sub
Thanks Godra, I'll try it tomorrow and Thanks again for all the help. Larry
I haven't tried it but it looks logical.
-
Larry,
The modified BasicLabel control was updated and replaced again.
Who knows, if you give it a try again then it might work this time (you can always resort to going back to whatever you are using currently).
-
I would like to see some B&R Ethernet drivers. The OpcDa is finicky and it’s no fault of Archie, it just s is what it is. ModbusTcp works with B&R but I am not sure how well reading 92 addresses at once would perform.
I’m sure there are bigger fish to fry but just wanted to throw it in the ring.
-
Larry,
The modified BasicLabel control was updated and replaced again.
Who knows, if you give it a try again then it might work this time (you can always resort to going back to whatever you are using currently).
Just trying it now . Still just gives the numerical value of the string. Where is the new one located so I make sure I have the latest copy?
Thanks Larry
-
With a fresh AHMI project, you just need to follow these instructions:
1) Remember to replace the BasicLabel control and SubscriptionHandler class (you do this by adding each new modified file as existing item to its corresponding folder). Rebuild your solution.
2) Place one BasicLabel on the form and just set PLCAddressValue to 40002.
3) Place another BasicLabel on the form and set its PLCAddressValue to 40002, set its InterpretValueAsModbusString to True and set its ModbusStringLength to 8.
Post what exact number you get in the first label and what you get in the second label.
-
With a fresh AHMI project, you just need to follow these instructions:
1) Remember to replace the BasicLabel control and SubscriptionHandler class (you do this by adding each new modified file as existing item to its corresponding folder). Rebuild your solution.
2) Place one BasicLabel on the form and just set PLCAddressValue to 40002.
3) Place another BasicLabel on the form and set its PLCAddressValue to 40002, set its InterpretValueAsModbusString to True and set its ModbusStringLength to 8.
Post what exact number you get in the first label and what you get in the second label.
Basiclabel1 shows int value for string Basiclabel2 shows blank if I change the InterpretValueAsModbusString to false on label 2 and on in label 1 then label1 is blank and label 2 show the int value?????????
I have 4 of these processors now and can test anytime. The string is a barcode scan compiled in the PLC and stored to 400002 - 400009 to be displayed on the panel view for the machine. The other way works well.
Let me know if you want to try again. Thanks Larry
-
With a fresh AHMI project, you just need to follow these instructions:
1) Remember to replace the BasicLabel control and SubscriptionHandler class (you do this by adding each new modified file as existing item to its corresponding folder). Rebuild your solution.
2) Place one BasicLabel on the form and just set PLCAddressValue to 40002.
3) Place another BasicLabel on the form and set its PLCAddressValue to 40002, set its InterpretValueAsModbusString to True and set its ModbusStringLength to 8.
Post what exact number you get in the first label and what you get in the second label.
Basiclabel1 shows int value for string Basiclabel2 shows blank if I change the InterpretValueAsModbusString to false on label 2 and on in label 1 then label1 is blank and label 2 show the int value?????????
I have 4 of these processors now and can test anytime. The string is a barcode scan compiled in the PLC and stored to 400002 - 400009 to be displayed on the panel view for the machine. The other way works well.
Let me know if you want to try again. Thanks Larry
Sorry I forgot the number "27243" and if I scan a different barcode I get a different number.
-
In the first label, try the 40001 address.
-
In the first label, try the 40001 address.
Godra, When it ran I got a " System.OverflowException: 'Arithmetic operation resulted in an overflow.' " If I change it back to the real address it runs like before.
Larry
-
Set the address to 40010 and also in Visual Studio, open the BasicLabel class and set a breakpoint as it is in the attached picture.
Then run the app and see if it stops at that line.
-
Yes it stops at the breakpoint.....
Larry
-
I will ask you to go back to what works for you.
Since Modbus drivers need fixing for the Subscribe function, let's wait for Archie to make those changes (and hopefully introduce Modbus string reading as well).
Just FYI, you can always click the "Continue" button when the app stops at the break point. If it needs to process that same break point line then it will stop at it again otherwise it will continue running the app.
You would normally use break points to make sure that the code is being processed, look at the current values of variables in the lines above the active break point as well as to step through the code by pressing F11 button, which would then show you the flow of processing one line at the time and throughout all classes involved.
-
I will ask you to go back to what works for you.
Since Modbus drivers need fixing for the Subscribe function, let's wait for Archie to make those changes (and hopefully introduce Modbus string reading as well).
Just FYI, you can always click the "Continue" button when the app stops at the break point. If it needs to process that same break point line then it will stop at it again otherwise it will continue running the app.
You would normally use break points to make sure that the code is being processed, look at the current values of variables in the lines above the active break point as well as to step through the code by pressing F11 button, which would then show you the flow of processing one line at the time and throughout all classes involved.
Godra, Thanks for the tips (I need them) and thanks for all the time on this. I have about 15 different machines to get data from at the start of their cycle and validate the right BOM and then collect the production data at the end. The build group is on number 5 and I am on number 3. I am so glad to find the AdvancedHMI product. We were planing on using "Mango" for the data collection. We ran into a trouble with the MS updates taking down Mango every time. This will allow me to put much nicer and more working data on each workstation PC. Plus combine DB and PLC data on the PC.
Thanks For all your work and time......
Larry
-
Larry,
If you would care to experiment again, there is a ModbusTCP driver you could try for a test:
http://advancedhmi.com/forum/index.php?topic=1975.0
Try to read all the posts to see what features it has and try using the modified BasicLabel with it.
-
Larry,
If you would care to experiment again, there is a ModbusTCP driver you could try for a test:
http://advancedhmi.com/forum/index.php?topic=1975.0
Try to read all the posts to see what features it has and try using the modified BasicLabel with it.
Godra,
I have been using the ModbusTCP driver for the AutomationDirect P2-550's and I still can't find the way to read a string with the BasicLabel. I'll keep trying to test when I get time. This code from Archie works very well for the serial number strings., and the AnalogValue Display works fine. This will read any length string I have.
"Dim str(7) As String
'* Read it from the PLC
str = Modbus51.Read("40002", str.Length)
Dim ResultString As String
ResultString = MfgControl.AdvancedHMI.Drivers.Common.CalculationsAndConversions.WordsToString(str)
AnalogValueDisplay34.Text = ResultString" .
I have P2-550's at work and at home so if you need to test some thing let me know. I am learning a lot from all here on the forum.
Thanks for all your time. Larry
-
Run as a Service! :)
Actually, I've got a C# app running as a service now, except that DataSubscriber wouldn't work so I had to manually implement it.
This works great for data logging!
Disclaimer: Yes, I'm compliantly including the source environment along with the Service app files.
LG
-
Larry Griffin,
Since you already have some "Run as a Service" solution, would you care to share it with members of this forum as well?
-
Since you already have some "Run as a Service" solution, would you care to share it with members of this forum as well?
To provide a basis to build on, I'll first refer to the following MS tutorial on creating a windows service:
https://docs.microsoft.com/en-us/dotnet/framework/windows-services/walkthrough-creating-a-windows-service-application-in-the-component-designer
Once you've got a Service created, add an AHMI Com component such as ethernetIPforCLXCom, from the toolbox, to the design sheet. You can now read from or write to the PLC just as you do within a normal Windows Forms App.
I wasn't able to get the DataSubscriber to work within a Service, possibly due to my own incompetence, although it had worked within a Windows Forms App. But it's pretty easy to achieve the same thing. I set up a 500ms timer to read a tag and compare it to the previous value. If it has changed, then I call a function to deal with it. That's essentially what the DataSubscriber does behind the scenes.
In my case, the data I wanted to collect was a 128-byte string that the PLC updates every 15 to 45 seconds. In order to avoid having to read that entire string every 500ms, I setup a Boolean tag that the PLC toggles after every update of the 128-byte string. So I can monitor the Boolean value every 500ms, but I only need to read the long string if the Boolean value has changed. Note: The Boolean value is returned by ethernetIPforCLXCom.Read() as a string, i.e. "True" or "False", even though the PLC sends it as a bit, 1 or 0.
LG
-
Here is a simple guide to making a standard EXE run as a service. Unfortunately the original link at the bottom of this document seems no longer available and the Microsoft Resource Kit link is broken as well, so you would have to search for this.
-
There is a ton of info out there on running as a service. Additionally, there are utilities that do that for you, they are also persistent, meaning if for some reason they stop, they will restart automatically.
-
Pipe dream.
Conversion to Avalonia https://github.com/AvaloniaUI/Avalonia
Convert to .Net Core and .NetStandard
-
Alarms, Login, Logs
Hi everyone, I'm new here. Spent roughly a week in learning and most on it not on the main functionality of the HMI I need to prepare, but on the alarms, logs and login. I downloaded some examples, but none is working completely. And these are main components for a SCADA.
I want to say, it's a nice application and really within minutes you can make something work, but after this for tweaking minor things a week or two will pass.
-
Maybe someone had already done this with their own developed app, but an Advanced HMI android/ios app would be nice for monitoring purposes would be extremely helpful. Something that you could view at a glance on a smart device to monitor a process away from the shop would be awesome. Ideally you could have limited I/O features (for safety of course) if you wanted, could monitor whatever values you wanted from temperature to cycle count, ect.
-
I would like some new work with http protocol or web interface will be done in next release.Lets see when it will happen.
Regards
Krogerexperiencee (https://krogerexperiencee.com/greatpeople-me-kroger-employee-login-portal/)
-
Maybe someone had already done this with their own developed app, but an Advanced HMI android/ios app would be nice for monitoring purposes would be extremely helpful. Something that you could view at a glance on a smart device to monitor a process away from the shop would be awesome. Ideally you could have limited I/O features (for safety of course) if you wanted, could monitor whatever values you wanted from temperature to cycle count, ect.
I did this in android and IOS but it's not so straight forward. Using what I learned using AHMI I used Xamarin Forms in visual studio to build an app that would poll a MySql server. My HMI has a backend that's just updating values to the server and the mobile app just reads values. or at least the version I give the field guys. be warned the Xamarin / XAML designer is a big pill to swallow learning, there no drag and drop controls you code everything but don't let me discourage you it's free to use.