MSG Instruction Inside AOI

I was not aware that V10 is still available, the current version is V12 on PCDC.
If I recall, V10 does not support all current Stratix catalog numbers and Stratix 5800.
 
It’s curious that the AOI would be written in such a way as to limit it to being used by a single HMI.
 
Last edited:
Yup, not ideal for multiple HMIs. The pages write to Animation_Active on open and close. If multiple HMIs are looking at home pages and one closes, that would stop the messaging and the still open HMI would see stale data. Trying to get details from different ports would not work. Both HMIs would see data for the last selected port, but at least the port number would be indicated with Selected_Port_Name.

V10 is not protected. Copy-paste from there would help with some initial rung structures for the messaging steps if you want to create an unlocked version. They would still take a bunch of editing. Have two large monitors side by side to tackle it.

Last V10 information, I think:

Home page 2 FW_Type, off = lite, on = full

On port page 2, octets and packets have the separate least significant digit. Discards, errors, and unknown are a single DINT.

Under switch image in the home page, I have a couple banners.
‘Stale Data: AOI Faulted’ appears if AOI_Error is on
‘Stale Data: AOI Not Enabled’ appears if AOI_Enabled is off
‘Stale Data: Controller not Communicating’ appears if PLC - HMI comms is down

Notice in the ladder I added unlatch to the MSG.er bits if the connection is lost. I had one lock with an error when disconnecting cables. That was an easy way to fix that.

All this is tested with V10. Use at your own risk. No warranty and the like…
 
Thanks for the feedback, everyone. Between the prebuilt AOI and indirect addressing for some message instructions, I've got a program that pretty much meets my requirements.

I have another question - not directly related to AOIs and MSG instructions, but I didn't think it warranted another thread since it's for the same project.

I've defined a UDT that represents a port on a Stratix switch, and an array of 26 of these to represent the ports on a given switch. The UDT has numerous arrays as members, such as an array of six SINTs for the MAC address.

Because of the way the CIP Generic "Get Single Attribute" message works, I can't programmatically change the index of the destination element. To get around this, I've declared another instance of the port UDT, this one to serve as temporary storage for the data. The idea is that the message gets written here, and then it gets copied to the port with the appropriate index.

The problem I'm having is with the copying part. If I use a COPY instruction with my source as Temp_Port.MAC_Address and the destination as Port_Array[index].MAC_Address, I get an error: "Invalid data type. Argument must match parameter data type." I get the same error if I try to copy Temp_Port.MAC_Address[0] to Port_Array[index].MAC_Address[0]. I don't understand this because both data types are an array of 6 SINTS.

If I try to use a MOVE instruction, I get that same error, though I can get around it by using the instruction on a single byte - Temp_Port.MAC_Address[5] to Port_Array[index].MAC_Address[5], for example.

I feel like there's something I'm not understanding about the way the MOV and COP instructions work with regard to arrays and UDTs. Can anyone help clarify this?
 
Logix does not like COP SingleUDT.SixUINTs UDTArray[Index].SixUINTs Length=1.

It does work fine as COP SingleUDT.SixUINTs[0] UDTArray[Index].SixUINTs[0] Length=6.

Edit: You could also copy the entire single UDT to the array with COP SingleUDT UDTArray[Index] Length=1

DA0B6072-D0ED-4ADF-829D-E760BC61F1EA.jpg
 
Last edited:
Thanks, 5618.

For whatever reason, I just can't get the first variant of that instruction to compile. Here's a screenshot, for reference.
Picture

The second variant compiles without issue and works like it's supposed to.
 
Last edited:
I'm resurrecting this thread for a bit more information about the V10 AOI and a supporting AOI that's part of the package. I replaced a L43 with a L306 and carried over the same old Stratix AOI for a 5700. The old path to the switch was 1,1,2,192.168.1.99. The new path is 4,192.168.1.99. The V10 AOI errored with that.

NET_NodeMSGPathCreate is an AOI written in ST called from the main Stratix AOI to convert the path string to the MSG instruction format. That didn't recognize 4 as a valid port for the path. On line 143 of that AOI was a limit check for 1 to 3 as valid ports. I changed the upper limit to 4 and all was fine. I expect that's not a problem in the newer versions, but this older more open AOI is my preference for the 5700.

I'm using some Stratix 5200 this year. For those, I'll probably rewrite the newer AOI unlocked with access to the HMI data I want, or make a routine that does about the same thing.
 
I guess I need to grab this newer AOI and take a look at it, I have my own block written from scratch from 2018, but it only supports the 5700, 5400, and 5410. I'm guessing the new block supports the 5200 and 5800? If so, I will use it as a reference to modify my own. I wonder why they have it locked down... either way I would rather have my own. I use the information to populate alerts that get sent to the operator, so I need the data live, not when some faceplate is open.

Does anyone know of a message reference for the Stratix or Cisco IE switches? I've never found anything, but I know it must exists. All the messages I have found have been using wireshark + old faceplate, plus some brute force to find working messages.
 

Similar Topics

I'm using a SLC typed write from the ControlLogix5572 to the MicroLogix 1400, with path: 2, (MicroLogix IP). The ControlLogix equipment has a...
Replies
0
Views
87
Hello all, I am currently trying to establish a message instruction to pass data from a 1756-L73 to a 1756-L71. My communication path from the...
Replies
8
Views
352
Hello Friends I am trying to connect to a Zebra printer. I can print the label with hyperterminal both by RS232 and TCP/IP. Now, I am trying to...
Replies
7
Views
276
Can Anyone tell that How Msg Instruction comes under Unscheduled communication and How System Overhead time slice(SOTS) function connected to it...
Replies
1
Views
968
Studio5000, V31 I'm Messaging a MassFlow Meter, specifically to pull the Engineering Units (units of measure) for 6 instances. Basically, do I...
Replies
2
Views
1,205
Back
Top Bottom