An internal combustion engine (1) causes an air/fuel mixture in a cylinder
to combust due to ignition by a spark plug (14). An engine controller (50)
calculates an ignition delay of the gas in the cylinder on the basis of an operational
state of the engine (1)(53), and it calculates a knock generation
index which is an indicator of the occurrence of knock on the basis of the ignition
delay (53). The controller (50) calculates a limit ignition timing
at which knock is not generated, on the basis of the knock generation index (54),
and by controlling the ignition timing of the spark plug (14) to the limit
ignition timing (55), appropriate control of the ignition timing is achieved
by means of a small number of adaptation steps.