Hi, the KRC 1 I have has 4 SYS digital outputs defined (50-53), and I want to move them so I have a continuous range of digital IO for devicenet mappings.
I tried to find where they were defined by text searching for "$out[50]" machine.dat, robcor and other files in the R1 folder, but nothing could be found. What could I do more to find the location where the outputs are defined?
find source of SYS outputs
-
DrOetker -
January 15, 2019 at 10:59 PM -
Thread is marked as Resolved.
-
-
Take archive and search through it with AgentRansack
-
Take archive and search through it with AgentRansack
BareGrep!Jokes aside, you may need to expand your search parameters. As Panic said, start with a full Archive, and use a program that can search its entire (unzipped) contents looking for text patterns. Start off limiting it to *.DAT files, expand beyond that later if necessary. Some declarations may not use the full syntax of "$OUT[50]", so you might need to search for "[50]" or even just "50".
-
That worked! Tx! I used the linux grep route and found the declarations of the signals. I now wonder if it is safe to move the signal to a different digital output. I am sure that no one uses the actual output since it is mapped to a devicenet device which is configured to ignore the data but I might overlook something of how the KRC handles the SYS signals internally. E.g.:
can I update this safely to: -
you can map the signals any where you like its up to you
-
Yes, you can re-map those signals to any $OUT you like, if you're not using them. $OUTs are intended to be mapped to FieldBus networks for transmission to devices outside the KRC cabinet, but if you don't have an external device waiting to receive that particular SYS output, you can map it to any $OUT you're not using (there's usually lots of unused bits in the $OUT array).
The only thing you can't do is assign them to 0, or delete them. They have to go somewhere in the $OUT array. The KRC just doesn't care if that $OUT actually goes anywhere electrically/physically, or isn't connected to anything.
Ditto for the $IN SYS signals. Plus $IN[1025] (always True) and $IN[1026] (always False) which are "special case" signals. $INs can be mapped to multiple system inputs, so you can (for example) map $IN[1025] to $MOVE_ENABLE and $DRIVES_OFF (and however many others you need) without any issues.
-
Updating the $OUT declarations in /STEU/$machine.dat is not reflected by the IO monitor, which still shows "SYS" at the changed out-address. I did this:
- cancelling the submit interpreter
- make changes in the *.dat files
- start the interpreterbut no succes. What am I doing wrong?
-
Mmm... you might need to do an I/O Reconfig after making the changes. Or, if that option isn't present in your KSS version, perform a cold boot.
If you open $MACHINE.DAT again, are your changes still present, or have they been reverted?
How, exactly, did you make the changes to $MACHINE.DAT? I recall that, on some systems, when I tried adding comment lines to a MADA file, they would be rejected -- I could change the $IN/$OUT numbers, but nothing else, not even the order of the lines.
When you saved your changes to $MACHINE.DAT, were any messages generated?
What $OUTs did you try changing those signals to? Were those $OUTs already associated to anything else?
One "back door" method: make a complete Archive of the robot. Open the archive and make the changes to $MACHINE.DAT, close the Archive, then Restore it onto the robot (make certain to have a "clean" copy of the Archive just in case anything goes wrong).
-
please READ FIRST and share some info like KSS version. This is KRC1 alright but there is a huge difference in KSS versions.