“Я вышел родом из…” Не буду продолжать цитирование известной песенки, а то некоторые неправильно поймут )))
Вообще по первому специальному образованию я “электромонтёр промышленного оборудования”. Однако в армии попал в войска связи, и после армии пошёл по этому пути - работал в телефонии, которой посвятил около 15 лет (от электромонтёра до инженера-электроника).
Но душа требовала чего-то иного (я не очень люблю работать руками), и поэтому я переквалифицировался в программисты (где-то году в 2003 примерно). И в автоматизацию я попал, можно сказать, из программистов.
И здесь хотел бы рассказать о том, как опыт программирования мне мешает при проектировании систем автоматизации.
В целом, конечно, этот опыт очень помогает. Но есть некоторые вещи, которые мешают.
Могу сказать, что в целом программисты не очень дисциплинированы (ну во всяком случае среди моих знакомы такие все), и они очень не любят заниматься проектированием - им надо сразу чего-нибудь “кодить”, то есть писать программу.
Отчасти это оправдано, потому что надо писать программу “не отходя от кассы”, пока есть “связь с космосом”. То есть пока прут мысли. И тратить это время на проектирование, алгоритмы и т.п. программисты не любят.
Вот это-то мне и мешает в автоматизации!
В современной автоматизации тоже очень много программирования, однако оно отличается от прикладного программирования тем, что ваши программы АСУ управляют напрямую “железом”, считывают показания разных датчиков (ток, давление и т.п.) и должны менять своё поведение в зависимости от этих показаний.
То есть АСУ - это системы реального времени, где происходит множество параллельных взаимосвязанных процессов. Поэтому незначительная ошибка в программе АСУ может привести (и приводит) к очень труднонаходимым глюкам, в то время как подобные ошибки в компьютерном программировании имеют меньше плохих последствий.
В компьютерных программах глюки, конечно, тоже не нужны. Однако в чём основное отличие?
А в том, что в прикладных программах пользователь работает, например 2-3 часа в сутки, и при этом большинство функций просто не задействуются. Из этого следует, что большинство глюков будут просто не обнаружены.
А вот АСУ работает почти всегда круглосуточно, поэтому если ошибка в программе есть, то она обязательно всплывёт. А если это труднонаходимая ошибка, то устранить её бывает непросто. Иногда я просто заново переписывал программу - так было быстрее.
В общем, к чему это всё?
А к тому, что если вы занимаетесь программирование для компьютеров, то в некоторых случаях вы можете пренебречь этапом проектирования (разработкой алгоритмов и т.п.).
А вот в автоматизации я вам делать этого не советую. Потому что сам не раз наступал на эти грабли.
Плохо продуманный алгоритм (или совсем не продуманный) программы в автоматизации в большинстве случаев принесёт значительно больший вред, чем в случае с компьютерными программами. Хуже всего то, что любая АСУ управляет оборудованием, с которым взаимодействует человек. Часто это оборудование представляет опасность для человека. Поэтому в худшем случае ошибка в программе АСУ может привести к травмам и человеческим жертвам.
Поэтому не пренебрегайте тщательным продумыванием алгоритмов АСУ. Если даже система простая и нет времени на это, то можно хотя бы набросать алгоритм на листе бумаги, как здесь:
К тому же делать это можно, например, на перерыве, в пути и т.п. Так что время найдётся...