4.FADL

4.1 FADL representation

First, we would like to discuss on the minimum units of FADL. The design of these units is important, since we use this level description as the FA unique method of a Class toward FA equipment, like CNC, Manipulators. We design these units to fix the boundary of realtime control and control sequence, i.e. the minimum units describe the behaviors of the elements of the equipment (motor, DI/DO, etc.), the synchronization mechanism and the geometrical calculation methods. Because the expression lower than these units heavily depends on the physical model or the hardware architecture and can not be pre-defined, on the other hand, the expressions upper than these units will describe the equipments logical movement/state-transitions and have rare dependencies on the elements of the equipment.

As the sample implementation of ``FADL,'' we employed PERL Ver. 5 as the base common script language, because of its freely available source code and module concept toward Object Oriented
Implementation or further enhancement. For example, the abstraction of the hardware is implemented using the hash database of PERL.

The following section tells the minimum units of FADL.

4.1.1 Motor Control

Outputs of FADL interpreter toward the control of motor are listed in Table 1 and 2 (Table 2 indicates the optional commands).

Table 4.1 Motor Control Commands
Command NameDescription
AxisServo() motor control ON/OFF
AxisReset() reset the motor
AxisBreak() motor break ON/OFF
AxisStatus() query the status of the motor
AxisAcc() set the acceleration ratio of the motor
AxisDec() set the deceleration ratio of the motor
AxisSpeed() set the speed of the motor
AxisMove() set the target position of the motor
AxisMoveAdd() add the target position during the motor is working
AxisCps() set the continuous path stream of the motion
AxisCpsAdd() add the continuous path stream data to the current motor motion
AxisSync() set the master-slave operation of the motor
AxisWait() wait the finishing of the command ID
AxisHome() detect the home position of each motor
AxisAbort() abort the motor movement and clear data
AxisStart() start the movement of the motor
AxisStop() stop the movement of the motor

Table 4.2 Motor control commands (option)
Command NameDescription
AxisVspeed() set the vector speed of multiple axis
AxisArc() draw arc on 2 axis
AxisBezierS() bezier curve control of an axis position at indicated time
AxisBezierP() bezier curve control of multiple axis position
AxisUser() user defined function

4.1.2 DI/DO Control

Table 4.3 DI/DO control
Command NameDescription
Set() set a value to the DO (pointed as its address)
Query() get a value from DI (pointed as its address)

4.1.3 Event (Signal) Handling

We made special expression toward Signal Handling. Table 4.4 shows the commands, the users (the vendor of machine works) can write their original event handling routines using object oriented programming style. The great merit of this programming style is its easiness in maintaining the event handling, which are usually independent to the main stream of the program.

Table 4.4 Signal Handling
Command NameDescription
SignalDefine() define a signal (event)
SignalDestory() destroy the defined signal (event)
SignalEnable() enable the defined signal
SignalDisable() disable the defined signal
SignalHandling()define the method to the named signal

4.1.4 Coordinates

Table 4.5 Coordinates
Command NameDescription
Trans() translational transformation of the co-ordinate
Rot() rotational transformation of the coordinate


Next Paragraph