TPControl D:P:S
alecg
Posts: 30
Can anyone please tell me where to adjust the D:P:S setting for an iPad/TPControl Device?
I have defined the device as 10002:1:0 in NetLinx Studio, but when I push buttons on the device, the output bar shows them as coming in from 10002:1:1!
I don't understand where to set or define the System ID as it relates to the tablet itself.
Is this in TPDeisgn4, TPTransfer, or am I missing something else really obvious?
I have defined the device as 10002:1:0 in NetLinx Studio, but when I push buttons on the device, the output bar shows them as coming in from 10002:1:1!
I don't understand where to set or define the System ID as it relates to the tablet itself.
Is this in TPDeisgn4, TPTransfer, or am I missing something else really obvious?
0
Comments
You can read that declaration like this:
10001(device):01(port):0(whatever system number this code is running on). Your master must be set to system ID 1 and your touch panel is connected to that system. If you intend a different system number you must hard code it as such and also make sure said master is set to that system ID.
I guess what I'm really trying to figure out is why the iPad reports (Notifications Tab of the Output Bar in Studio) as 10002:1:1? I never set that Touch Panel's System ID to 1. Can I change it? What if I have multiple iPads, would they all be part of System ID 1? Is that something that TPControl/Transfer does automatically?
Eric, you mention that if I wanted a different System ID, I would need to hardcode that. I understand how that works in NetLinx Studio, but how do I do that to (set the System ID of) the Touch Panel?
Panel doesn't have a system number by itself, it's system number of master he is connected to ! If you have multiple panels/ipads on one system they'll have a different device number each (or you'll get a conflict and serious issues) but all will carry same system number if they are all connected on same master.
I want to believe you, but I'm taking this DIRECTLY FROM THE MANUAL (Netlinx.Language.Reference.Guide.pdf - Page61):
This keyword defines the devices referenced in the program.
DEFINE_DEVICE
TP1 = 128:1:0// device number = 128, port = 1, system = 0
TP2 = 129:1:0// device number = 129, port = 1, system = 0
TP3 = 130:1:0// device number = 130, port = 1, system = 0
VCR1 = 10:1:0 // device number = 10, port = 1, system = 0
VCR2 = 11:1:0 // device number = 11, port = 1, system = 0
Devices can be specified by a single device number such as "TP = 128" or as a fullyqualified
device specification such as "TP = 128:1:0"
Plus I've pulled upwards of 50 modules that all use 0 as the System ID for both the Processor and the Touch Panel. Are you confusing Port with System ID? I'm referring to the last digit, not the middle one.
I have only 1 Master. By your logic (and I agree!) my panel should have the same System ID as my Master.
Here is my DEFINE_DEVICE:
dvSharp = 0:3:0
dvdSharp = 41001:1:0
dvTP = 10002:1:0
dvFrequencyTelnet = 0:4:0
When I press buttons on the iPad, it shows up as 10002:1:1.
How does it get that last 1? How do I change it?
You must be looking at diagnostic messages from the processor, which is system 1. So it reports the system it is "showing up" at. If the panel had connected to system 2 (as a slave to system 1) and you looked again, you would see the address report SYSTEM 2 as part of the panel address. As such, the SYSTEM NUMBER is a function of the device's CONNECTION TO A MASTER THAT HAS A SYSTEM NUMBER.
The panels and such do not "have a system number", they make a call to a system. The 0 is a wildcard in programming here such that defined devices can connect regardless of any system they are connected.
In the panel in AUTO/LISTEN mode, you can tell it what system number you want to connect to (which actually just limits a connection to a matching master), or if you use the URL mode, you'll note that the SYSTEM item in the panel is locked to "0". It will talk to whatever system number the master at the URL happens to have.
And since your code has not limited the panels to a specific system number in your coded addresses, the panels can talk "from" any system number and their comms will work.
I believe this scheme is key to understanding the AMX system in general.
Now go to DIAGNOSTICS - DEVICE ADDRESSING. Check-mark CHANGE SYSTEM, enter System 1, New System 2. Then click change Device/System, then Reboot Master.
Now when you reboot, your D:P:S with show 10002:1:2.
Your thought that if you are only dealing with a single controller 0 will work is correct, but like others have said 0=system number I'm connected to. Do the above test to prove it to yourself.
Or better yet, try to change the System to 0 and it will not let you. Try changing system number 1 to 0 and you will get an error.
Kevin D.
1-the master's System ID is set by you via any number of methods. That system ID is not code dependent. The system ID can be from 1 to 255. It comes out of the box set to 1. Any AMX device connected to that master acquires the system id of that master. Each device can only be connected to one master.
2- in code the system id zero is just a convenience for you the programmer. It's a shorthand way of creating code that will work on a master set to any system ID. So, for example if your code said
DEFINE_DEVICE
dvTP_01. = 10001:01:0
If you set the system id of your master to 5 - your notifications would say 10001:01:5 because the touch panel is connected to system 5. Without changing he code at all but changing the master system id to 101 - the the exact same TP would send notifications to 10001:01:101.
Make sense?
I agree completely that understanding D:P:S is paramount to understanding AMX. This is what I've been trying to wrap my head around in building test systems.
I also agree that my lack of experience is showing!
And I completely understand the most recent round of responses. Thank you all for the insight and method.
I tried shr00m-dew's suggestion and truly that did help me.
So as I now understand it, if the system ID is 1 (0 being nothing more than a programmer's convenience in dealing with any ONE specific controller) is it best practice to address all of my DEFINE_DEVICE calls to the actual system ID? e.g.
dvSharp = 0:3:1
dvdSharp = 41001:1:1
dvTP = 10001:1:1
dvDebuggingTelnet = 0:4:1
My personal preference, and the standard practice here is:
1) Use system 0 for all devices in single master systems. This eliminates the chance of code not working when replacing a failed master in a single master job.
2) Always use system 0 for all local virtual devices in a master, even if there are multiple masters. Using a remote master's virtual device for a local module doesn't work well, so this practice eliminates the possibility. Specify the remote system number if the local master's code needs to send things to a virtual on another master.
3) Always specify the actual system numbers for all physical devices needed in code for multi-master projects. But try not to put every remote device into every master's code if it isn't referenced anywhere in the local code (this help keep down device status traffic between masters).
Paul
You can try doing this through NXS or Telnet and it will report the device number could not be changed.
Darn, I was really hoping for the self-referential melt-down.
Paul