The IEC 61499 standard defines a generic architecture for designing distributed industrial control systems based on function blocks. The standard, however, lacks a formal model of computation to describe the behavior of function block compositions. While various models have been prescribed in the literature to define the composite behavior on a single computational node, few have been proposed to directly address compositions in a distributed setting. This paper proposes a globally asynchronous locally synchronous (GALS) model for distributed function block systems. The model provides an abstract way to view communication between function blocks without implying yet any particular implementation. This abstraction can then be subsequently refined to obtain various implementations with different tradeoffs. We do so using an approach that is fully compatible with the standard's notion of communication function blocks, which abstract underlying communication mechanisms from the application. As a contribution, we have developed a compiler that automatically synthesizes separate programs for a given distributed function block system without needing any additional middleware or run-time environment to execute the resulting distributed code. The efficacy of the proposed approach is demonstrated through an industrial case study.