IoT applications and other distributed control applications are characterized by the interaction of many hardware and software components. The inherent complexity of the distributed functionality introduces challenges on the detection and correction of issues related to functionality or performance, which are only possible to do after system prototypes or pilot installations have been built. Correcting these issues is typically very expensive, which could have been avoided by earlier detection. This paper makes four main contributions. (1) It presents a virtual prototyping approach to specify and analyze distributed control applications. The approach is based on a domain model, which can be configured for a specific application. It consists of eight domainspecific languages (DSLs), each describing one system aspect. (2) The DSLs provide each stakeholder in the application’s lifecycle a natural and comprehensible way to describe his/her concerns in an unambiguous manner. (3) The paper shows how the DSLs are used to automatically detect common configuration errors and erroneous behavior. (4) The virtual prototyping approach is demonstrated using a lighting domain case study, in which the control system of an office floor is specified and analyzed.