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

Greetings All, I recently decided to start freelancing in Controls and Automation part time, most of my experience has been with Rockwell...
Replies
2
Views
47
I am having a problem communicating my PLC with Drive via Modbus connection. I start by opening the port and there is no problem, but then when I...
Replies
5
Views
34
I have worked on small projects using AB Micrologix but now we want to take a photo, process it online, and sort based on returned variables...
Replies
1
Views
76
Hi, I have a 1500 that controls a station with diferents warehouses, but i also have a 1200 that controls one of those warehouses, i have been...
Replies
9
Views
201
Hi All, we've recently upgraded from FTView SE v10 to v12. Since the upgrade we've been having a problem where the HMI is slow to update tags in...
Replies
0
Views
36
Back
Top Bottom