PLC on an Anilam M1400 CNC Control

talibozek

Member
Join Date
Mar 2005
Posts
3
Hello,

For starters, I have about 24 hours of PLC programming experience...but I have skills in other languages, C, C++, etc.

I'm trying to help my father out in connecting a HAAS rotary indexer to a CNC with an Anilam M1400 control. It's a relay connection to activate the indexer and the indexer control has a relay connection back to the Anilam to signal it cycle has completed.

I'm not sure what type/brand/model PLC is used in this control, but I can see the instruction set is very limited compared to some of the documentation that I've been reading online.

The problem that I am having is that I need to activate a relay for 500ms, then release. Here is a snippet of what I have to do this so far (that doesn't work)

LD T10
IF 5
RES HAAS_START
EDF 5

IF 10 ( M_CODE eq 10 )
SET HAAS_START
OUT TON10 .5
EDF 10

M10 is used to activate the indexer in the Anilam control software. Activating the relay works fine.
Now, all this TON10, T10 stuff, I found pieces of in some old PLC code I found in a pile of papers. I'm not even sure if T10 is associated with TON10.
Depending if I used an LD or an LDI, the control will either hang after an M10 instruction or the relay will cycle so quickly that the control will not detect the activation.

I'm hoping someone out there is familiar with this style. I haven't been able to find anything similiar to this online.


Thanks for your help,
-Tim
 
Yes, correct, it is PC Based. I was able to find a manual for the Anilam IPI, which helped me greatly.
Now I have a question about inputs and now a PLC reads the inputs.
The problem I think is that the indexer provides a 250ms pulse when it has completed its rotation. I think the PLC misses the pulse. Is there a way, without an external circuit, to make an input buffered so that the PLC will be able to catch that it's input has gone high since the last loop?
 
talibozek said:
Yes, correct, it is PC Based. I was able to find a manual for the Anilam IPI, which helped me greatly.
Now I have a question about inputs and now a PLC reads the inputs.
The problem I think is that the indexer provides a 250ms pulse when it has completed its rotation. I think the PLC misses the pulse. Is there a way, without an external circuit, to make an input buffered so that the PLC will be able to catch that it's input has gone high since the last loop?

Yes, a internal timer or latch circuit can be used "catch" and/or "extend" the input.

Is the PLC in your situation a different piece of electronics or is it a piece of software running on the PC in combination with some I/O boards.
 
It's a physically separate module from the PC. You have to manually upload the code from the control to the PLC module.

I tried this piece of code without much luck...

#define HAAS_FIN X1
#define HAAS_START Y5

IF 10 ( MCODE EQ 10 )
LD HAAS_FIN
OTI HAAS_START
EDF 10

I understand this to be, "Activate HAAS_START until HAAS_FIN goes high or 30 seconds has elapsed"

This resulted in HAAS_START going high for ~30 seconds...even though I can see the X1 (HAAS_FIN) LED blink for 1/4 second.

Is this considered a catch or latch instruction?

thanks,
-Tim
 
talibozek said:
It's a physically separate module from the PC. You have to manually upload the code from the control to the PLC module.

I tried this piece of code without much luck...

#define HAAS_FIN X1
#define HAAS_START Y5

IF 10 ( MCODE EQ 10 )
LD HAAS_FIN
OTI HAAS_START
EDF 10

I understand this to be, "Activate HAAS_START until HAAS_FIN goes high or 30 seconds has elapsed"

This resulted in HAAS_START going high for ~30 seconds...even though I can see the X1 (HAAS_FIN) LED blink for 1/4 second.

Is this considered a catch or latch instruction?

thanks,
-Tim

No, a latch will hold the state until such time as its released. This sounds more like a timer; the input signal starts the timer and the timer's output will be set for as long as the timer is programmed to (in this case 30 seconds).

In "psuedo C" (its been a few languages ago)

#define input boolean
#define timer_preset 30
#define output boolean
#define timer integer

output = false
while (not input) do nothing {wait or input signal}
timer = 0
output = true
while (timer < timer_preset) do every second timer = timer + 1
output = false
 

Similar Topics

I have a cell with a compact guardlogix as the plc and I have three hmi's and two vfd's on this cell. I been experiencing momentary comms faults...
Replies
2
Views
27
Hi, hope you doing well I am looking for SIEMENS PLCSIM equivalent in GE FANUC PLC, RX3i PLC thank you
Replies
2
Views
18
Hai, I'm working on Allen Bradely PLC RS Logix 5000 V20 i tried to communicate modbus communication with AB plc and RS 232 to Ethernet converter...
Replies
1
Views
36
Trying to learn PLCs going to start by buying an Arduino Opta Wifi to practice with but what's the PLC I should get next?
Replies
10
Views
249
Hello, When I try to read from the PLC, the following error occurs: There is no project name. Failed to read the intelligent function module...
Replies
1
Views
78
Back
Top Bottom