Industrial automation is largely based on PLC-based control systems. PLCs are today mostly programmed in the languages of the IEC 61131 standard which are not ready to meet the new challenges of widely distributed automation systems. Currently, an extension of IEC 61131 which includes object oriented programming as well as the new standard IEC 61499 are available. Moreover, service-oriented paradigms where autonomous and interoperable resources provide their functionalities in the form of services that can be accessed externally by clients without knowing the underlining implementation have been presented in the literature. In the supervisory control theory, methodologies based on formal models have been developed to improve the coordination of concurrent and distributed systems. In this paper, an event-driven approach is proposed to improve the design of industrial control systems using commercial PLCs. At a lower level, basic sequences are coded in elementary software objects, called function blocks, providing their functionalities as services. At an upper level, a Petri Net (PN) controller forces the execution of such services according to desired sequences, while by a PN supervisor constraints on the sequences are satisfied.