AutoCAD Electrical Forum
Welcome to Autodesk’s AutoCAD Electrical Forums. Share your knowledge, ask questions, and explore popular AutoCAD Electrical topics.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

PLC I/O wire number increments

2 REPLIES 2
Reply
Message 1 of 3
Anonymous
401 Views, 2 Replies

PLC I/O wire number increments

Does anyone know how to get a plc i/o wire number to increment after a
termination?

I want O:7/0 to go to O:7/0A after a fuse.

Any help will be appreciated.

Keith
2 REPLIES 2
Message 2 of 3
Anonymous
in reply to: Anonymous

I have tried to get it to do that but it appears after the first device out
of a PLC
the wire # changes to the default format. I think this is something for
AutoDesk
to consider in the next release??

--
Phil Custer II, PE
Custer Services, Inc.
custer@landfillgas.com

"krollenhagen" wrote in message
news:14D3B715E71FC9D4DBEA27BEC2A48312@in.WebX.maYIadrTaRb...
> Does anyone know how to get a plc i/o wire number to increment after a
> termination?
>
> I want O:7/0 to go to O:7/0A after a fuse.
>
> Any help will be appreciated.
>
> Keith
>
>
Message 3 of 3
Anonymous
in reply to: Anonymous

Keith,

You can use this little utility to semi-manually insert incrementing PLC I/O
wire numbers. It's one step above manually typing them in. Cut and paste
below into an ascii text file, call it plcwnum.lsp. Then "APPLOAD" this file
and type plcwnum [enter] at the AutoCAD command line to run. Pick an I/O
address or I/O wire number or I/O connected wire and then
"pick,pick,pick..." the wires that extend out from it. I/O address-based
wire numbers should pop in.

This utility makes use of some of the user "API" calls shown in the on-line
help. I encourage you to enhance it, make it work cooler!

Nate.
===========

; 20-Nov-03 NEHolt created
; --
(defun c:plcwnum ( / en ed x new_wnum base_wnum ix_cnt index pt1 pt2
wnum_blk_hdl
pick_xy xitnow ss suffixlst new_wireno ins_xy)
; Semi-automatically insert incrementing I/O address wire numbers
(setq suffixlst (list "A" "B" "C" "D" "E" "F" "G" "H" "J" "K" "L" "M" "N"
"P" "R"))
(while (setq x (entsel "\nSelect MAIN I/O wire connection (LINE wire or
WNUM itself):"))
(setq ix_cnt "")
(setq base_wnum nil)
(setq en (car x))
(setq pick_xy (cadr x)) ; point point
(setq ed (entget en))
(cond
((= (cdr (assoc 0 ed)) "INSERT") ; user may have picked on wire number
block
(setq base_wnum (c:wd_getattrval en "WIRENO*")) ; get wire number
attrib value
(if (AND (not base_wnum)(wcmatch (cdr (assoc 2 ed)) "PLCIO*"))
(progn ; Appears user may have picked on the PLC I/O module
itself. Try an
; auto-repick to see if user picked on a TAGA* I/O address
attribute
(if (setq x (nentselp pick_xy))
(progn ; okay, maybe it's our lucky day...
(setq en (car x)) ; picked entity
(setq ed (entget en))
(if (AND (= (cdr (assoc 0 ed)) "ATTRIB")
(wcmatch (cdr (assoc 2 ed)) "TAGA*"))
(progn ; Yes, lucky day. Get I/O address value TAGA*
attribute value
(setq base_wnum (cdr (assoc 1 ed)))
) ) ) ) ) )

)
((= (cdr (assoc 0 ed)) "LINE") ; user probably picked on line WIRE
; Look for wire number pointer tied to this LINE entity. Points at
the
; wire number block insert.
(setq wnum_blk_hdl (car (wd_wnet_find_ptr_for_whole_net en)))
(if (AND wnum_blk_hdl (handent wnum_blk_hdl))
(progn
(setq base_wnum (c:wd_getattrval (handent wnum_blk_hdl)
"WIRENO*"))
)
)
)
)
(if base_wnum
(progn ; Okay, now prompt user to pick on wires for the incrementing
; I/O address-based wire number assignments.
(setq index 0) ; start at beginning of suffix list
(setq new_wireno (strcat base_wnum (nth index suffixlst)))
(setq xitnow nil)
(while (AND (not xitnow)
(setq x (entsel (strcat "\n Pick wire for wnum
assignment: " new_wireno))))
(setq en (car x))
(setq ed (entget en))
(cond
((= (cdr (assoc 0 ed)) "LINE") ; user picked on a "WIRE"
(hopefully!)
(c:wd_putwnf en new_wireno) ; insert wire number on selected
network
)
((= (cdr (assoc 0 ed)) "INSERT") ; user picked on a block insert
(!)
; See if lucky and user picked on a wire number block insert.
Block
; name will have a "WD_WN" prefix if it's a wire number block
insert.
(if (wcmatch (cdr (assoc 2 ed)) "WD_WN*")
(progn ; yes, user picked the wire number insert. Need to
find the LINE
; wire that it's sitting on.
(setq ins_xy (cdr (assoc 10 ed))) ; XY coord of wire
number block insert
; Set up a diagonal fence to cut across and capture any
underlying
; line wire.
(setq pt1 (list (- (car ins_xy) 0.05) (- (cadr ins_xy)
0.05) 0.0))
(setq pt2 (list (+ (car ins_xy) 0.05) (+ (cadr ins_xy)
0.05) 0.0))
(setq ss (ssget "_F" (list pt1 pt2) '((0 . "LINE"))))
(if (/= ss nil)
(progn ; a LINE entity captured.
(setq en (ssname ss 0)) ; first or only LINE captured
(setq ss nil) ; release the selection set
(c:wd_putwnf en new_wireno) ; pop in the wire number
(it should
; update the existing one and reset the component
wire
; connection X?TERMxx attributes that "touch" this
wire.
) )
) )

)
)
(setq index (1+ index)) ; increment pointer
(if (= index (length suffixlst))
(progn ; no more suffixes remain, exit now
(setq xitnow 1)
)
; ELSE
(progn ; calculate next wire number
(setq new_wireno (strcat base_wnum (nth index suffixlst)))
) )
; If AcadE had to do a ZOOM extents to follow the wire number
off-screen
; then variable "Z_prev" will be set to 1. If so, do a ZOOM PREV
to return
; the display to the original position.
(if Z_prev (command "_.ZOOM" "_PREV"))
(setq Z_prev nil)
)
) )
)
(princ)
)

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk Design & Make Report

”Boost