A-B 1394 Servo Drives & GML Commander

Dr. Watson

Member
Join Date
Dec 2005
Location
Ohio
Posts
62
Anyone familiar with the 1394 drives and GML programming software? I have a couple of issues. I finally found out I have to have the exact program loaded on my laptop to communicate online, which I was able to do. While online I made no changes. I did try an upload and ended up faulting the controller. The error was something along the lines of not being able to stop the controller??? Anyway, the only thing I did do while online was hit "file--->save"...that's it. Now I can't get online again...any ideas?
The other thing I was wondering is if there is any way to view the last fault. If I have a runtime or global fault and it has been cleared, is there any way to view what the exact fault was at a later time?
TIA
 
When connecting to a servo controller with GML Commander, you need to open the correct file first. You cannot monitor logic directly as it runs as in a PLC. You can watch the lower right hand window (terminal window) to see messages generated by the controller and print blocks from the program. You can monitor system, axis, and user variables in the bottom center window. The tree view on the bottom left is where you select which category of information is displayed in the bottom center window. There are some things you can monitor directly this way, and other things (like dedicated inputs) require you to query the controller and it will report using the terminal window (bottom right).

You can't upload a GML diagram from a controller. The controller contains a script program compiled and downloaded from a GML program. It also contains setup data for each axis which is separate from the script file. It is possible to re-generate (by hand) a GML file from a script file, but it's very tedious. You have to translate the script commands individually.

If you go online using the wrong program, any changes to the user variables or axis configuration may not match. If you know that nothing like that has changed, it is okay to monitor with the wrong offline file.

To upload the program or the setups from the controller, it must be stopped first. This can be tricky depending on how it's programmed and how the RIO interface is used. Often the program will not stop on the first attempt. It is usually better to stop the program first (using the "stop program" button at the bottom) until you see Program Stopped appear in the terminal window. Then you can upload and download both script files and setup data for each axis. Then press the Go button to restart the program. It is important to understand how the PLC interacts with the 1394 controller before doing this. I have some that have the PLC programmed to start the GML program any time it isn't running. On those machines, I have to force this feature off before uploading or downloading the program in the motion controller.

It is possible (often preferred) to make logic changes without disturbing the axis setup values (gains and dynamics). In the Configure ... Control Options dialog there is a checkbox to "Download Drive/Axis Data with the Diagram". Uncheck this box to make changes to logic only when you download.

While online, if you go to Configure ... Axis Use ... <select your axis>, you get a multi-tabbed dialog that shows all the axis setup and configuration details FOR THE OFFLINE FILE. If the online file matches the offline file there will be a little checkbox on the apply page next to the controller icon (see pic).

gml_sample.jpg


For some reason, the software can tell this fact as soon as you're online, but it won't let you upload or download changes. If you have a match, you can adjust gains and dynamics on the fly. Just be sure to save any changes to the power up values and to the offline file. Some parameters have power-up and working values. You can make changes to the working values that are lost when you power cycle or hard reset the controller.

The status words that show global and axis faults are retentive, (except for overtravel faults) until they are reset in the program. They can be handled with an infinite variety of methods. Any logging or storage of status words is usually done in a connected PLC, but could be done with GML user variables.

Every axis fault will cause a global fault. It is common to copy each axis status word to a PLC word and log and report from there. If this hasn't been done, you can trouble shoot the system by looking at the Axis System Variables while on-line.
Select the axis in the lower left hand tree, and look at axis_status, and axis_fault variables in the bottom center window.

There's tons more ...
What specifically are you trying to do?
 
Last edited:
OkiePC said:
There's tons more ...
What specifically are you trying to do?

Lol...heck, I'm just trying to get online with the #### thing. Good information, thanks alot. Like I said, I got a copy of the program and was able to go online yesterday. I did hit "save" while I was online, but only looked around at the fault tags, I didn't change any logic or values. Now I can't get anything but "trying to connect". The same program is (supposedly) running in a number of other drives here and I have the same issue. I verified my com port and cable by getting online with a SLC, so I know that's not the problem (I used the straight through cable as an extension connector with the null modem cable for the slc).
 
Is Linx still running in the background when you do this? It will not release the com port to Commander if this is the case, so you will get that error. Been a while since I have been online with a 1394.


David
 
davidg68124 said:
Is Linx still running in the background when you do this? It will not release the com port to Commander if this is the case, so you will get that error. Been a while since I have been online with a 1394.


David
Nope...I have to disable linx as a service for just this reason. Even rebooted the laptop a couple of times to make sure the port was released.
 
I run RSLinx as a service and just "Stop" the DF1 driver when I have to use commander, or any other program that needs com1. Then if I reboot, the driver is restarted normally.

The serial port on the motion controllers can be set up a variety of ways, and the baud rate can be changed. Mine are all standard RS232, and I just connect to serial port "A" with a straight thru cable. With the offline file opened in commander, go to File ... Properties ... Configure Serial Interface ... to choose a com port and set the baud rate. The baud rate in your controller must match this setting. I think the default baud is 9600. I prefer 19.2k if making a lot of changes, since it downloads much faster. You have to get connected to be able to see what the controller baud settings are. I don't think that appears anywhere in the offline file. I ususally just try changing it in the offline file to each possible setting and alternatively hitting the online button. Sometimes I get garbage mixed with valid text in the terminal window if the baud rate is set wrong!

Hope This Helps
Paul C.
 
OkiePC said:
I run RSLinx as a service and just "Stop" the DF1 driver when I have to use commander, or any other program that needs com1. Then if I reboot, the driver is restarted normally.

The serial port on the motion controllers can be set up a variety of ways, and the baud rate can be changed. Mine are all standard RS232, and I just connect to serial port "A" with a straight thru cable. With the offline file opened in commander, go to File ... Properties ... Configure Serial Interface ... to choose a com port and set the baud rate. The baud rate in your controller must match this setting. I think the default baud is 9600. I prefer 19.2k if making a lot of changes, since it downloads much faster. You have to get connected to be able to see what the controller baud settings are. I don't think that appears anywhere in the offline file. I ususally just try changing it in the offline file to each possible setting and alternatively hitting the online button. Sometimes I get garbage mixed with valid text in the terminal window if the baud rate is set wrong!

Hope This Helps
Paul C.
Hmmm...Is the baud rate a "per project" setting, or is it universally set for all projects? The reason I ask this is because I just figured it would be stored in the offline image and I copied over the exact same file I was able to go online with before. If the settings are not stored in thoffline, there is a chance they were changed in GML. I'll have t go get the maintenance laptop and check. Thanks again.
 
Well I can get online pretty much at will now, but its kind of strange. I have to open the project, change the baud rate from 9600 to 300, attempt to go online, change the baud rate back to 9600, go offline and then back online and it connects. Is it possible that the comm port on the drive is locking up the port?
 
I have caused the controller serial port to lock up by connecting to it with incorrect settings or cables (very rare). When this happened, I had to power cycle the controller to get it talking again. Look at the switch settings for serial port A, and compare with the manual pages 91-92. Make sure the cable you're using matches the pin out shown. Also, when you can get online, have a look at CPU usage. The thing might be too busy to talk to you! I have seen strange things happen when CPU utlilization exceeds about 60%.

http://literature.rockwellautomation.com/idc/groups/literature/documents/um/1394-um000_-en-p.pdf
 
Switch settings match the book...I wouldn't be suprised at all if the thing is overloaded. From what I've heard, most of these were installed in '88 and the program is very large. I'll check out the CPU usage when I get a chance.
Thanks for all the input, Okie.
 
Ok, I can get online no problem now and I've learned quite a bit in the last couple of weeks, but now I have another problem. I've got a PLC-5 communicating to this drive via RIO. I understand the RIO mapping of the GML address to PLC5 address (GML address 6 is MG 2, input 02) but I have a number of block transfers pushing and pulling data to and from the 1394 that I don't quite understand. The BTW & BTR parameters are as follows:
Type: Generic block transfer
Rack: 002
Group: 0
Module: 0
Control Block: BT12:xx
Data file: N19:xx
Length: 0
Continuous: No

I guess my question is, how does the PLC 5 know what data it is looking at with only specifying rack 2, MG 0? Also, How does it know how many words to transfer with a zero specified for length? Any help greatly appreciated!
 
I don't have access to software or manuals right now. Basically if you want to read and write to user variables in the 1394, you use block transfers like this. To read variables, you send a BTW read request, then a BTR. The read request (i think) is where you tell the 1394 where to start in the user variable list.

To write to the user variables from the PLC, you only need a BTW. The starting user variable address in the controller, the data format, and a few other things are specified in the first (3 I think) words of the data that is transferred. I believe these configuration values are in HEX, so you'll have to search in the manuals and use the radix function in RSLogix to nail it down to specifics.

It's possible (commonplace) to send floating point values back and forth by just copying them to integers and then doing the block transfers. It's also very common to just use integers, but change the decimal point location in the 1394 as part of the block transfers. All these options are specified in the first couple of elements of the BTW. For example, your integers might be 1000, 1350, and 50 in the PLC5, but in the 1394 you might see 10.00, 13.50 and 0.50 if your set up values specify two decimal places. It's designed to be very flexible which is good, but makes it harder to figure out what's going on without good documentation to explain it.

I wish I had the software at home, I could tell you a lot more.

Hope this helps
PaulC
 
Thanks Paul...you've given me more information in 10 minutes than I've been able to find in 3 days, lol. Would I find this information in GML's help files, or in the 1394 manual?
Thanks again.
 
Dr. Watson said:
How does it know how many words to transfer with a zero specified for length? Any help greatly appreciated!
When a block transfer instruction has a length of zero, the actual length is determined auto-magically by the destination device (up to 63 words).
 
Quote:
Originally Posted by Dr. Watson
How does it know how many words to transfer with a zero specified for length? Any help greatly appreciated!


When a block transfer instruction has a length of zero, the actual length is determined auto-magically by the destination device (up to 63 words).


In addition to what Gerry said, the last word in the block transfer data is an EOF character 13 decimal (or hex, I can't remember for sure). I have seen block transfers work when the length was specified, and the EOF character was missing, but I would make sure it's there just to avoid the possibility of overwriting the rest of the data ...
 
Last edited:

Similar Topics

I am looking to upgrade some of our old Servo Drives to the newer kinetix 5700 style. currently we have 4 1394 axis that are all driven by 5kw...
Replies
1
Views
870
I have an Allen-Bradley 1394 servo drive that is giving me an intermittent over-travel fault. (a couple of times a day) This system has be...
Replies
2
Views
2,248
We are replacing a 1394 controller and I am trying to decipher the RIO side of the controlling PLC (SLC) I am at a loss as to how the addresses of...
Replies
3
Views
2,031
I am looking for a person that has the skill/knowledge to test/repair AB 1394 Servo controllers using GML Commander. Please contact me asap. Thank...
Replies
0
Views
1,735
OK guys, I know this is going way back but I am sure there are some guys who have seen this before. I have a 1394 servo running a 2 axis pick and...
Replies
3
Views
2,054
Back
Top Bottom