A Free HMI with Eye Catching Graphics is Now Available

ok, first off, I am a total newb with no real experince with plc's other than pressing the start and stop buttons on the machines I used to run that a plc controlled. I am opening a very small Nano Brewery and would like to utilize a plc and create an HMI interface on a flat panel Glacier industrial computer I bought off ebay. it is running windows 2000 professional and I have a small plc "Unitronics Vision 120-22-UN2" and here is a link to the communications protocols it uses http://www.unitronics.com/Series.aspx?page=120#Tab=Communication

I guess my basic questions are about whether or not this HMI setup you guys are working on will work with this plc. I know I havent given you much to work with, but as I said, I dont really know what to ask. any help will be greatly appreciated and I might even send you some beer one day...
 
Any recommendations on setting up indicators? I am using a micrologix 1100 with the DF1 driver. I am ussing the Basicbutton as a manual control trigger, and as an indicator I am using the following code, under a timer_tick
Code:
    'LOCKUP EXTENDED
        If DF1Comm1.ReadAny("I:0/1") = True Then
            BasicButton1.BackColor = Color.Lime
        Else
            BasicButton1.BackColor = Color.LightGray
        End If
        'LOCKUP RETRACTED
        If DF1Comm1.ReadAny("I:0/2") = True Then
            BasicButton2.BackColor = Color.Lime
        Else
            BasicButton2.BackColor = Color.LightGray
        End If

If i have too many buttons on one screen it can really bog the system down. I have raised the timer interval to 2+ seconds now to prevent it. I think what is getting me issues is that this code is constantly changing the color, instead of looking for a value change.

Does anyone have any recommendations on looking for a value change? I have also looked at modifying the BasicButton control to act more like a Pilotlight to change states automatically, but I am stuck. I see where all the settings are in the .vb, but dont really follow what is triggering the update.


Thank you for your assistance

Kenneth
 
v2comp, I'm guessing not, but maybe Archie will chime in.

kjacoby, Have you tried assigning you colors directly to the button properties rather than through code? I'm thinking that you don't want to update it with a timer. Just set the PLC address in the button properties as well as the colors and see what result you have.
 
v2comp, I'm guessing not, but maybe Archie will chime in.

kjacoby, Have you tried assigning you colors directly to the button properties rather than through code? I'm thinking that you don't want to update it with a timer. Just set the PLC address in the button properties as well as the colors and see what result you have.

That is what i am currently working on, but in the .vb code for the basic button, i am having trouble finding where to put the code to change the colors. I dont see what is calling for an update.
 
kjacoby

With your code, you are reading values in synchronous mode, which means it will tie up the user interface waiting for the data to come back from the PLC. There are several ways to improve the performance.

1) modify the BasicButton to add another property. This will require you to copy and paste in 4 locations to get it to subscribe, receive data, and unsubscribe

-OR-

2) Use Asynchronous reads:

Code:
DF1Comm1.AsyncMode=True
'* Read the whole word in a single read
DF1Comm1.ReadAny("I:0.0")

Code:
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Private[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Sub[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] DF1Comm1_DataReceived([/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]ByVal[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] sender [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]As[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] System.Object, [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]ByVal[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] e [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]As[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] Driver.PLCCommEventArgs) [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Handles[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] DF1Comm1.DataReceived[/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]If[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] e.PLCAddress = [/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]"I:0.0"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Then[/COLOR][/SIZE][/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff] '* Check if bit 1 is true[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff] If[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] (e.Values(0) [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]And[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] 2 > 0) [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Then[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2]   BasicButton1.BackColor = Color.Lime[/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff] Else[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2]   BasicButton1.BackColor = Color.LightGray[/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff] End[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]If[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]End[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]If[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]End[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Sub[/COLOR][/SIZE][/COLOR][/SIZE]
 
Last edited:
Where abouts do I put this code? Under a timer?

DF1Comm1.AsyncMode=True
'* Read the whole word in a single read
DF1Comm1.ReadAny("I:0.0")

and how do i tell which bit to look at?

If e.PLCAddress = "I:0.0"Then
'* Check if bit 1 is true
If (e.Values(0) And 2 > 0) Then

the And 2? change that to 0,2,4,6,16...?

I have been looking at changing the custom button to include and indicator, and i believe that would be easier down the road. where would i put the code? i have the code in already for the properties, but dont know where to put it to change the color on update.

thanks for the help
Kenneth
 
Where abouts do I put this code? Under a timer?

DF1Comm1.AsyncMode=True
'* Read the whole word in a single read
DF1Comm1.ReadAny("I:0.0")

and how do i tell which bit to look at?

If e.PLCAddress = "I:0.0"Then
'* Check if bit 1 is true
If (e.Values(0) And 2 > 0) Then

the And 2? change that to 0,2,4,6,16...?

I have been looking at changing the custom button to include and indicator, and i believe that would be easier down the road. where would i put the code? i have the code in already for the properties, but dont know where to put it to change the color on update.
You perform the read in a timer event.

The other pieces will be in the datareceived event as shown in the above post.

This is the formula to check each bit

(e.values(0) and 2^bitnumber)>0

2^bitnumber=
bit 0 = 1
bit 1 = 2
bit 2 = 4
bit 3 = 8
bit 4 = 16
bit 5 = 32
bit 6 = 64
bit 7 = 128
.
.
.
 
Awesome! Got it. Thank you.

any advise on modifying the control? You said:
1) modify the BasicButton to add another property. This will require you to copy and paste in 4 locations to get it to subscribe, receive data, and unsubscribe

what am i copy and pasting? i have my public properties setup, but lost after that. do i need to add a timer component to it, to poll for the bit? or is this already part of the dfcomm component?
 
any advise on modifying the control? You said:
1) modify the BasicButton to add another property. This will require you to copy and paste in 4 locations to get it to subscribe, receive data, and unsubscribe

what am i copy and pasting? i have my public properties setup, but lost after that. do i need to add a timer component to it, to poll for the bit? or is this already part of the dfcomm component?
This is a bit more advanced, but I'll give an example:

In the BasicButton.vb code, Add the property:

Code:
[SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]'*****************************************[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]'* Property - Address in PLC to Link to[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]'*****************************************[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Private[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] NotificationIDBackColorChange [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]As[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Integer[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Private[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] _PLCaddressBackColorChange [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]As[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]String[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] = [/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]""[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2]<System.ComponentModel.Category([/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]"PLC Properties"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])> _[/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Public[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Property[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] PLCaddressBackColorChange() [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]As[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]String[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Get[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Return[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] _PLCaddressBackColorChange[/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]End[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Get[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Set[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]ByVal[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] value [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]As[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]String[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])[/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]If[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] _PLCaddressBackColorChange <> value [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Then[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2]_PLCaddressBackColorChange = value[/SIZE]
[SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]'* When address is changed, re-subscribe to new address[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2]SubscribeToCommDriver()[/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]End[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]If[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]End[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Set[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]End[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Property[/COLOR][/SIZE]
[/COLOR][/SIZE]

In the SubscribeToCommDriver sub, add this code:

Code:
[SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]'********************************[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]'* BackColor Change Subscription[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]'********************************[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]'* If already subscribed, but address is changed, then unsubscribe first[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]If[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] NotificationIDBackColorChange > 0 [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]And[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] SubscribedPLCAddressBackColorChange <> _PLCaddressBackColorChange [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Then[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2]_CommComponent.UnSubscribe(NotificationIDBackColorChange)[/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]End[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]If[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]'* Is there an address to subscribe to?[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]If[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] _PLCaddressBackColorChange <> [/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]""[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Then[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Try[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]If[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] _CommComponent [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]IsNot [/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Nothing [/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Then[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2]NotificationIDBackColorChange = _CommComponent.Subscribe(_PLCaddressBackColorChange, 1, 250, [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]AddressOf[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] PolledDataReturnedBackColorChanged)[/SIZE]
[SIZE=2]SubscribedPLCAddressBackColorChange = _PLCaddressBackColorChange[/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Else[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2]DisplayError([/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]"CommComponent Property not set"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])[/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]End[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]If[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Catch[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] ex [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]As[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] MfgControl.AdvancedHMI.Drivers.PLCDriverException[/SIZE]
[SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]'* If subscribe fails, set up for retry[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2]InitializeSubscribeRetry(ex, _PLCaddressBackColorChange)[/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]End[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Try[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]End[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]If[/COLOR][/SIZE]
[/COLOR][/SIZE]

Add a private variable to indicate a successful subscribe:

Code:
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Private[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] SubscribedPLCAddressBackColorChange [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]As[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]String[/COLOR][/SIZE][/COLOR][/SIZE]

Then add the handler for when data comes back:

Code:
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Private[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Sub[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] PolledDataReturnedBackColorChange([/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]ByVal[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] Values() [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]As[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]String[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])[/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Try[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]If[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] Values(0) [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Then[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]MyBase[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].BackColor = Color.Lime[/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Else[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]MyBase[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].BackColor = Color.LightGray[/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]End[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]If[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Catch[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2]DisplayError([/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]"INVALID BackColorChange VALUE RETURNED!"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])[/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]End[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Try[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]End[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Sub[/COLOR][/SIZE][/COLOR][/SIZE]


After you build the project, you will then see a new PLCAddress property. I would also recommend making a property for the Lime color instead of hard coding it.

NOTE: The forum keeps removing the indentions in the code making it harder to read.
 
Archie, thank you very much! this code is a lot faster than my old method. I havent dug much more into changing the control, but the async mode will be a lot easier to reconfigure in my current programs. I am trying to bog it down right now and cant. I have it changing the colors on 16 buttons, with a 25 ms update, and a 250 ms pulse on my bits running in a test program.

Thank you!
Kenneth
 
A real newbie question here, knows very little about plcs but loves playing :D and would like to play with this for a little home project.
Was wondering what would be the most suitable "cheap" plc which would work best with this hmi software.
The most basic smart relay like a Zelio / Logo / Pico would suffice for my actual needs, but I would like to buy whatever would be most compatible with this "cool" hmi software.
Any recommendations ?
 
Was wondering what would be the most suitable "cheap" plc which would work best with this hmi software.
The most basic smart relay like a Zelio / Logo / Pico would suffice for my actual needs, but I would like to buy whatever would be most compatible with this "cool" hmi software.
Any recommendations ?
I would consider getting a used MicroLogix 1000 from Ebay. The DF1Comm driver is the most solid driver in the software.
 

Similar Topics

Have a GE IC200CPU002 running a alarm monitoring program All of them are inputs except for the alarm sounder Looking for a free HMI which would...
Replies
2
Views
803
The C-More remote HMI app on APP Store, Google Play and Amazon is now available free. The nominal charge has now been removed...
Replies
5
Views
2,354
Hi I have a phoenix contact installation and I'm looking for hmi software to manage my project better. It has to be as cheap as possible, free if...
Replies
3
Views
2,466
My brother recently bought a KEP HMI for a small project, he asked me to check out the software which is called EasyBuilder 8000...
Replies
1
Views
3,711
Hello, i have a data historian system it is a GE proficy historian. i need an application that can be used to display the data in a HMI format. i...
Replies
25
Views
9,522
Back
Top Bottom