Function blocks - Part 1: Architecture