{"id":284554,"date":"2017-04-06T17:05:02","date_gmt":"2017-04-06T13:05:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=284554"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=284554","title":{"rendered":"\u0422\u0430\u0439\u043c\u0435\u0440\u044b \u0438 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u044b CODESYS. \u0415\u0449\u0435 \u043e\u0434\u0438\u043d \u0448\u0430\u0433 Arduino \u043a \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443 \u041f\u041b\u041a"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/269\/7d4\/587\/2697d458734041e8ad9553eaa94aafda.png\"\/><br \/>  \u0421\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b (\u041f\u041b\u041a) \u0432 \u0441\u0440\u0435\u0434\u0435 CODESYS. \u0412\u0441\u0435, \u043a\u0442\u043e \u0438\u043c\u0435\u043b \u0434\u0435\u043b\u043e \u0441 \u044d\u0442\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439, \u0437\u043d\u0430\u044e\u0442, \u0447\u0442\u043e \u0432 \u043b\u044e\u0431\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 Standard.lib, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0442\u0430\u0439\u043c\u0435\u0440\u044b, \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u044b, \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0438 \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043a\u043e\u043b-\u0432\u043e \u0434\u0440\u0443\u0433\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432. \u041c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437 \u044d\u0442\u0438\u0445 \u0431\u043b\u043e\u043a\u043e\u0432 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0445 \u0434\u043b\u044f \u041f\u041b\u041a. \u0410 \u0441\u0430\u043c\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430, \u043a\u0430\u043a \u0438 \u044f\u0437\u044b\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f CODESYS, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u043f\u043b\u043e\u0449\u0435\u043d\u0438\u0435\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430 IEC 61131-3, \u0442.\u0435. \u043f\u0440\u0438\u0437\u0432\u0430\u043d\u0430 \u043f\u043e\u043c\u043e\u0447\u044c \u043f\u0440\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u041f\u041b\u041a \u0437\u0430\u0434\u0430\u0447.<br \/>  <a name=\"habracut\"><\/a><br \/>  \u041e\u0434\u043d\u0430 \u0438\u0437 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0434\u043b\u044f \u041f\u041b\u041a \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0446\u0438\u043a\u043b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0431\u0435\u0437 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0437\u0430\u0434\u0435\u0440\u0436\u0435\u043a, \u0432 \u043d\u0435\u043c \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 \u0446\u0438\u043a\u043b\u043e\u0432 \u0441 \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0432\u044b\u0445\u043e\u0434\u0430 \u0438\u043b\u0438 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u00ab\u0437\u0430\u0434\u0443\u043c\u0447\u0438\u0432\u044b\u0445\u00bb \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u044d\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u0439 \u043f\u043e \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u043c \u043a\u0430\u043d\u0430\u043b\u0430\u043c. \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430, \u0438 \u0447\u0435\u043c \u0434\u043e\u043b\u044c\u0448\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u00ab\u0441\u0438\u0434\u0435\u0442\u044c\u00bb \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u0434\u043d\u043e\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0446\u0438\u043a\u043b\u0430, \u0442\u0435\u043c \u043c\u0435\u043d\u044c\u0448\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u0442 \u0437\u043d\u0430\u0442\u044c \u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0438\u0442\u043e\u0433\u0435 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 watchdog \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0446\u0438\u043a\u043b\u0430. \u041c\u043d\u043e\u0433\u0438\u0435 \u043c\u043e\u0433\u0443\u0442 \u043c\u043d\u0435 \u0432\u043e\u0437\u0440\u0430\u0437\u0438\u0442\u044c, \u0441\u043a\u0430\u0437\u0430\u0432, \u0447\u0442\u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u041f\u041b\u041a \u043c\u043d\u043e\u0433\u043e\u0437\u043d\u0430\u0447\u043d\u044b, \u0435\u0441\u0442\u044c \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0445 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439. \u0421\u043e\u0433\u043b\u0430\u0441\u0435\u043d, \u043d\u043e \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440 \u043e \u0442\u0430\u043a\u0438\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u043d\u0435 \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u043c\u043e\u0438 \u043f\u043b\u0430\u043d\u044b, \u044f \u0436\u0435 \u0445\u043e\u0447\u0443 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e (\u043a\u0432\u0430\u0437\u0438, \u043f\u0441\u0435\u0432\u0434\u043e \u2014 \u0432\u044b\u0431\u0438\u0440\u0430\u0439\u0442\u0435) \u041f\u041b\u041a \u043e\u0434\u043d\u043e\u0437\u0430\u0434\u0430\u0447\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 (\u0431\u0435\u0437 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439) \u043d\u0430 \u0431\u0430\u0437\u0435 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b Arduino, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0446\u0438\u043a\u043b. \u041a\u0441\u0442\u0430\u0442\u0438, \u043d\u0435 \u043b\u0438\u0448\u043d\u0438\u043c \u0431\u0443\u0434\u0435\u0442 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u043d\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u043e\u0439 \u0437\u0430\u043c\u0435\u0442\u043a\u0438 \u043c\u0435\u043d\u044f \u0441\u043f\u043e\u0434\u0432\u0438\u0433\u043b\u0430 \u0441\u0442\u0430\u0442\u044c\u044f <a href=\"https:\/\/geektimes.ru\/post\/286796\/\">\u0410\u0440\u0434\u0443\u0438\u043d\u043e-\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0439 \u041f\u041b\u041a CONTROLLINO, \u0447\u0430\u0441\u0442\u044c 1<\/a> \u043e \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0432\u043e\u043f\u043b\u043e\u0449\u0435\u043d\u0438\u044f Arduino \u0432 \u043f\u0440\u043e\u043c. \u041f\u041b\u041a.<\/p>\n<p>  \u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u043e\u0432 \u043e\u0431 Arduino. \u0421 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430 \u041f\u041b\u041a, Arduino \u2014 \u044d\u0442\u043e \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0441 \u043e\u0434\u043d\u0438\u043c \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u044b\u043c \u0438\u043b\u0438, \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u043e\u0447\u0435\u043d\u044c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u043c \u0446\u0438\u043a\u043b\u043e\u043c loop(). \u041d\u0430 \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0446\u0438\u043a\u043b\u0430 \u043d\u0435 \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439, \u0438 \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438 \u043e\u0434\u0438\u043d, \u0438 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0435 \u043a\u043e\u043b-\u0432\u043e \u0440\u0430\u0437 \u2014 \u043f\u043e \u0437\u0430\u043c\u044b\u0441\u043b\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430. \u041a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043f\u0440\u043e\u0441\u0442\u0430 \u0438 \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439, \u0440\u0435\u0433\u0443\u043b\u044f\u0442\u043e\u0440\u043e\u0432, \u0431\u0435\u0437 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439, \u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0447\u0435\u0440\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u043c\u0438 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c\u0438 \u0446\u0438\u043a\u043b\u0430\u043c\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0439 \u0438 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u043c\u0438 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430\u043c\u0438 \u0442\u0438\u043f\u0430 delay(). \u041f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0448\u0430\u0433\u0438 \u0442\u0430\u043a\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0441\u0442\u0440\u043e\u0447\u043d\u043e, \u043f\u0440\u043e\u0441\u0442\u043e \u0438 \u043b\u043e\u0433\u0438\u0447\u043d\u043e. \u041d\u043e, \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. <\/p>\n<p>  \u0412 \u043e\u0434\u043d\u043e\u0437\u0430\u0434\u0430\u0447\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0432\u0438\u0434\u0438\u043c\u043e\u0439 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u044b\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439, \u043d\u0435 \u0437\u0430\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044f\u0441\u044c \u043f\u043e\u0434\u043e\u043b\u0433\u0443 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f. \u0421 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0432\u0445\u043e\u0434\u0430\u043c\u0438-\u0432\u044b\u0445\u043e\u0434\u0430\u043c\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043d\u0435\u0442, \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e, \u0430 \u0432\u043e\u0442 delay() \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043d\u0435\u043e\u043f\u0440\u0430\u0432\u0434\u0430\u043d\u043d\u044b\u043c \u0442\u043e\u0440\u043c\u043e\u0437\u043e\u043c. \u0418 \u0432\u043e\u0442 \u0442\u0443\u0442 \u043d\u0430 \u0441\u043c\u0435\u043d\u0443 \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442 \u043d\u0435\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u0435 \u0442\u0430\u0439\u043c\u0435\u0440\u044b, \u0442\u0435 \u0441\u0430\u043c\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u041f\u041b\u041a \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043a\u043b\u0430\u0441\u0441\u0438\u043a\u043e\u0439. \u0421\u0443\u0442\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0434\u043b\u044f \u0438\u0445 \u0440\u0430\u0431\u043e\u0442\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u043d\u044b\u0439 \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0438 \u0432\u0441\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u044b \u043a \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c \u044d\u0442\u043e\u0433\u043e \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430.<\/p>\n<p>  \u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043c \u0442\u0443 \u0441\u0430\u043c\u0443\u044e Standard.lib \u0438\u0437 CODESYS. \u0412 \u043d\u0435\u0439 \u043a\u0430\u043a \u0440\u0430\u0437 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u041c\u042d\u041a-\u043e\u0432\u0441\u043a\u0438\u0435 \u043d\u0435\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u0435 \u0442\u0430\u0439\u043c\u0435\u0440\u044b. \u042f \u0432\u0437\u044f\u043b \u0435\u0435 \u0437\u0430 \u043e\u0441\u043d\u043e\u0432\u0443 \u0438 \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0442\u0430\u0439\u043c\u0435\u0440\u043e\u0432 \u0438 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u043e\u0432 \u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u0447\u043d\u044b\u0439 \u043a\u043e\u0434 Arduino (\u0421++). \u0422.\u0435. \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0441\u044f \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u044c Arduino \u043a \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443 \u041f\u041b\u041a.<\/p>\n<p>  \u041d\u0438\u0436\u0435 \u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u043a\u0440\u0430\u0442\u043a\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432 (FB) CODESYS \u0438 \u0438\u0445 \u0430\u043d\u0430\u043b\u043e\u0433\u0438 \u0432 \u043c\u043e\u0435\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 <b>plcStandardLib<\/b>, \u0432\u0441\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0432\u0435\u0440\u043d\u044b \u0434\u043b\u044f \u043d\u043e\u0432\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 Arduino. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0439 \u0441\u043f\u0440\u0430\u0432\u043a\u0435 \u043f\u043e CODESYS.<\/p>\n<h3>TON \u2014 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u00ab\u0442\u0430\u0439\u043c\u0435\u0440 \u0441 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\u00bb<\/h3>\n<p>  <\/p>\n<pre>TON(IN, PT, Q, ET)<\/pre>\n<p>  \u0412\u0445\u043e\u0434\u044b IN \u0438 PT \u0442\u0438\u043f\u043e\u0432 BOOL \u0438 TIME \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e. \u0412\u044b\u0445\u043e\u0434\u044b Q \u0438 ET \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0442\u0438\u043f\u043e\u0432 BOOL \u0438 TIME. \u041f\u043e\u043a\u0430 IN \u0440\u0430\u0432\u0435\u043d FALSE, \u0432\u044b\u0445\u043e\u0434 Q = FALSE, \u0432\u044b\u0445\u043e\u0434 ET = 0. \u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e IN \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f TRUE, \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u0441\u0447\u0435\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 (\u0432 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445) \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 ET \u0434\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0440\u0430\u0432\u043d\u043e\u0433\u043e PT. \u0414\u0430\u043b\u0435\u0435 \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u043d\u0435 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f. Q \u0440\u0430\u0432\u0435\u043d TRUE, \u043a\u043e\u0433\u0434\u0430 IN \u0440\u0430\u0432\u0435\u043d TRUE, \u0430 ET \u0440\u0430\u0432\u0435\u043d PT, \u0438\u043d\u0430\u0447\u0435 FALSE. \u0422\u0430\u043a\u0438\u043c<br \/>  \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0432\u044b\u0445\u043e\u0434 Q \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u043e\u0439 PT \u043e\u0442 \u0444\u0440\u043e\u043d\u0442\u0430 \u0432\u0445\u043e\u0434\u0430 IN.<\/p>\n<h4>\u0412 Arduino IDE:<\/h4>\n<p>  \u0412\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0439:  <\/p>\n<pre>TON TON1(); TON TON1(unsigned long PT); \/\/ \u0441 \u0437\u0430\u0434\u0430\u043d\u0438\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 PT<\/pre>\n<p>  \u0412\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f:  <\/p>\n<pre>Q = TON1.Run(boolean IN); \/\/ \u0432\u044b\u0437\u043e\u0432 &quot;\u0432\u0441\u0435 \u0432 \u043e\u0434\u043d\u043e\u043c&quot; TON1.IN = IN; TON1.Run(); Q = TON1.Q;<\/pre>\n<p>  \u0412\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b TON:  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\"  src=\"https:\/\/habrastorage.org\/files\/569\/93b\/33b\/56993b33becf4b9fb1354ac095d573fa.png\"\/><\/div>\n<p>  <\/p>\n<h3>TOF \u2014 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u00ab\u0442\u0430\u0439\u043c\u0435\u0440 \u0441 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\u00bb<\/h3>\n<p>  <\/p>\n<pre>TOF(IN, PT, Q, ET)<\/pre>\n<p>  \u0412\u0445\u043e\u0434\u044b IN \u0438 PT \u0442\u0438\u043f\u043e\u0432 BOOL \u0438 TIME \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e. \u0412\u044b\u0445\u043e\u0434\u044b Q \u0438 ET \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0442\u0438\u043f\u043e\u0432 BOOL \u0438 TIME. \u0415\u0441\u043b\u0438 IN \u0440\u0430\u0432\u0435\u043d TRUE, \u0442\u043e \u0432\u044b\u0445\u043e\u0434 Q = TRUE \u0438 \u0432\u044b\u0445\u043e\u0434 ET = 0. \u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e IN \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u0432 FALSE, \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u0441\u0447\u0435\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 (\u0432 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445) \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 ET. \u041f\u0440\u0438 \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u0438 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043e\u0442\u0441\u0447\u0435\u0442 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f. \u0412\u044b\u0445\u043e\u0434 Q \u0440\u0430\u0432\u0435\u043d FALSE, \u0435\u0441\u043b\u0438 IN \u0440\u0430\u0432\u0435\u043d FALSE \u0438 ET \u0440\u0430\u0432\u0435\u043d PT, \u0438\u043d\u0430\u0447\u0435 \u2014 TRUE. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0432\u044b\u0445\u043e\u0434 Q \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u043e\u0439 PT \u043e\u0442 \u0441\u043f\u0430\u0434\u0430 \u0432\u0445\u043e\u0434\u0430 IN.<\/p>\n<h4>\u0412 Arduino IDE:<\/h4>\n<p>  \u041e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 TON, \u0434\u043b\u044f \u043a\u0440\u0430\u0442\u043a\u043e\u0441\u0442\u0438:  <\/p>\n<pre>TOF TOF1(unsigned long PT); \/\/ \u0441 \u0437\u0430\u0434\u0430\u043d\u0438\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 PT Q = TOF1.Run(boolean IN); \/\/ \u0432\u044b\u0437\u043e\u0432 &quot;\u0432\u0441\u0435 \u0432 \u043e\u0434\u043d\u043e\u043c&quot;<\/pre>\n<p>  \u0412\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b TOF:  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\"  src=\"https:\/\/habrastorage.org\/files\/b12\/11d\/56d\/b1211d56da474524b72f53e5ecc8c5a8.png\"\/><\/div>\n<p>  <\/p>\n<h3>TP \u2014 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u00ab\u0438\u043c\u043f\u0443\u043b\u044c\u0441-\u0442\u0430\u0439\u043c\u0435\u0440\u00bb<\/h3>\n<p>  <\/p>\n<pre>TP(IN, PT, Q, ET)<\/pre>\n<p>  \u0412\u0445\u043e\u0434\u044b IN \u0438 PT \u0442\u0438\u043f\u043e\u0432 BOOL \u0438 TIME \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e. \u0412\u044b\u0445\u043e\u0434\u044b Q \u0438 ET \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0442\u0438\u043f\u043e\u0432 BOOL \u0438 TIME. \u041f\u043e\u043a\u0430 IN \u0440\u0430\u0432\u0435\u043d FALSE, \u0432\u044b\u0445\u043e\u0434 Q = FALSE, \u0432\u044b\u0445\u043e\u0434 ET = 0. \u041f\u0440\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0435 IN \u0432 TRUE \u0432\u044b\u0445\u043e\u0434 Q \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 TRUE \u0438 \u0442\u0430\u0439\u043c\u0435\u0440 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043e\u0442\u0441\u0447\u0435\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 (\u0432 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445) \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 ET \u0434\u043e \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 PT. \u0414\u0430\u043b\u0435\u0435 \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u043d\u0435 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0432\u044b\u0445\u043e\u0434 Q \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0438\u043c\u043f\u0443\u043b\u044c\u0441 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e PT \u043f\u043e \u0444\u0440\u043e\u043d\u0442\u0443 \u0432\u0445\u043e\u0434\u0430 IN.<\/p>\n<h4>\u0412 Arduino IDE:<\/h4>\n<p>  \u041e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 TON, \u0434\u043b\u044f \u043a\u0440\u0430\u0442\u043a\u043e\u0441\u0442\u0438:  <\/p>\n<pre>TP TP1(unsigned long PT); \/\/ \u0441 \u0437\u0430\u0434\u0430\u043d\u0438\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 PT Q = TP1.Run(boolean IN); \/\/ \u0432\u044b\u0437\u043e\u0432 &quot;\u0432\u0441\u0435 \u0432 \u043e\u0434\u043d\u043e\u043c&quot;<\/pre>\n<p>  \u0412\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b TP:  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\"  src=\"https:\/\/habrastorage.org\/files\/03d\/476\/347\/03d476347d6746f499a8f7829ade9d6a.png\"\/><\/div>\n<p>  <\/p>\n<h3>R_TRIG \u2014 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u00ab\u0434e\u0442\u0435\u043a\u0442\u043e\u0440 \u0444\u0440\u043e\u043d\u0442\u0430\u00bb<\/h3>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u043b\u043e\u043a R_TRIG \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0438\u043c\u043f\u0443\u043b\u044c\u0441 \u043f\u043e \u043f\u0435\u0440\u0435\u0434\u043d\u0435\u043c\u0443 \u0444\u0440\u043e\u043d\u0442\u0443 \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430. \u0412\u044b\u0445\u043e\u0434 Q \u0440\u0430\u0432\u0435\u043d FALSE \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u0432\u0445\u043e\u0434 CLK \u0440\u0430\u0432\u0435\u043d FALSE. \u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e CLK \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 TRUE, Q \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 TRUE. \u041f\u0440\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0432\u044b\u0437\u043e\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430 \u0432\u044b\u0445\u043e\u0434 \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 FALSE. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0431\u043b\u043e\u043a \u0432\u044b\u0434\u0430\u0435\u0442 \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u0439 \u0438\u043c\u043f\u0443\u043b\u044c\u0441 \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0435 CLK \u0438\u0437 FALSE \u0432 TRUE.<br \/>  \u041f\u0440\u0438\u043c\u0435\u0440 CODEDESYS \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 ST:  <\/p>\n<pre>RTRIGInst : R_TRIG ; RTRIGInst(CLK:= VarBOOL1); VarBOOL2 := RTRIGInst.Q;<\/pre>\n<p>  <\/p>\n<h4>\u0412 Arduino IDE:<\/h4>\n<p>  \u041e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435:  <\/p>\n<pre>R_TRIG R_TRIG1;<\/pre>\n<p>  \u0412\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f:  <\/p>\n<pre>Q = R_TRIG1.Run(boolean CLK); \/\/ \u0432\u044b\u0437\u043e\u0432 &quot;\u0432\u0441\u0435 \u0432 \u043e\u0434\u043d\u043e\u043c&quot; R_TRIG1.CLK = CLK; R_TRIG1.Run(); Q = R_TRIG1.Q;<\/pre>\n<p>  <\/p>\n<h3>F_TRIG \u2014 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u00ab\u0434e\u0442\u0435\u043a\u0442\u043e\u0440 \u0441\u043f\u0430\u0434\u0430\u00bb<\/h3>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u043b\u043e\u043a F_TRIG \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0438\u043c\u043f\u0443\u043b\u044c\u0441 \u043f\u043e \u0437\u0430\u0434\u043d\u0435\u043c\u0443 \u0444\u0440\u043e\u043d\u0442\u0443 \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430.<br \/>  \u0412\u044b\u0445\u043e\u0434 Q \u0440\u0430\u0432\u0435\u043d FALSE \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u0432\u0445\u043e\u0434 CLK \u0440\u0430\u0432\u0435\u043d TRUE. \u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e CLK \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 FALSE, Q \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 TRUE. \u041f\u0440\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0432\u044b\u0437\u043e\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430 \u0432\u044b\u0445\u043e\u0434 \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 FALSE. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0431\u043b\u043e\u043a \u0432\u044b\u0434\u0430\u0435\u0442 \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u0439 \u0438\u043c\u043f\u0443\u043b\u044c\u0441 \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0435 CLK \u0438\u0437 TRUE \u0432 FALSE.  <\/p>\n<h4>\u0412 Arduino IDE:<\/h4>\n<p>  <\/p>\n<pre>F_TRIG F_TRIG1; Q = F_TRIG1.Run(boolean CLK); \/\/ \u0432\u044b\u0437\u043e\u0432 &quot;\u0432\u0441\u0435 \u0432 \u043e\u0434\u043d\u043e\u043c&quot;<\/pre>\n<p>  <\/p>\n<h3>RS_TRIG \u2014 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u043b\u043e\u043a RS-\u0442\u0440\u0438\u0433\u0433\u0435\u0440 \/ SR_TRIG \u2014 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u043b\u043e\u043a SR-\u0442\u0440\u0438\u0433\u0433\u0435\u0440<\/h3>\n<p>  \u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \u0441 \u0434\u043e\u043c\u0438\u043d\u0430\u043d\u0442\u043e\u0439 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, RS-\u0442\u0440\u0438\u0433\u0433\u0435\u0440:  <\/p>\n<pre>Q1 = RS (SET, RESET1)<\/pre>\n<p>  \u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \u0441 \u0434\u043e\u043c\u0438\u043d\u0430\u043d\u0442\u043e\u0439 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f:  <\/p>\n<pre>Q1 = SR (SET1, RESET)<\/pre>\n<p>  \u0412\u0445\u043e\u0434\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 SET \u0438 RESET1 \u2014 \u043a\u0430\u043a \u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f Q1 \u0442\u0438\u043f\u0430 BOOL.<\/p>\n<h4>\u0412 Arduino IDE:<\/h4>\n<p>  <\/p>\n<pre>RS_TRIG RS_TRIG1; Q = RS_TRIG1Run(boolean SET, boolean RESET); \/\/ \u0432\u044b\u0437\u043e\u0432 &quot;\u0432\u0441\u0435 \u0432 \u043e\u0434\u043d\u043e\u043c&quot;<\/pre>\n<p>  <\/p>\n<pre>SR_TRIG SR_TRIG1; Q = SR_TRIG1Run(boolean SET, boolean RESET); \/\/ \u0432\u044b\u0437\u043e\u0432 &quot;\u0432\u0441\u0435 \u0432 \u043e\u0434\u043d\u043e\u043c&quot;<\/pre>\n<p>  <\/p>\n<h2> \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0438 \u043f\u0440\u0438\u043c\u0435\u0440<\/h2>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">plcStandardLib_1.h<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>\/*  * plcStandardLib_1.h  *  * Created on: 01.01.2017  * Author: Admin  *\/  #ifndef PLCSTANDARDLIB_1_H_ #define PLCSTANDARDLIB_1_H_  #if ARDUINO &gt;= 100 #include &lt;Arduino.h&gt; #else #include &lt;WProgram.h&gt; #endif  \/* ------------------- TON ------------------- *\/ class TON { public: \tTON(); \tTON(unsigned long PT); \tboolean Run(boolean IN); \tboolean Q; \/\/ \u0432\u044b\u0445\u043e\u0434\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \tboolean IN; \/\/ \u0432\u0445\u043e\u0434\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \tunsigned long PT; \/\/ \u0432\u0445\u043e\u0434\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \tunsigned long ET; \/\/ \u0432\u044b\u0445\u043e\u0434\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f - \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0442\u0430\u0439\u043c\u0435\u0440\u0430 private: \tboolean _M; \/\/ \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0444\u043b\u0430\u0433 \tunsigned long _StartTime; };  \/* ------------------- TOF ------------------- *\/ class TOF { public: \tTOF(); \tTOF(unsigned long PT); \tboolean Run(boolean IN); \tboolean Q; \/\/ \u0432\u044b\u0445\u043e\u0434\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \tboolean IN; \/\/ \u0432\u0445\u043e\u0434\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \tunsigned long PT; \/\/ \u0432\u0445\u043e\u0434\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \tunsigned long ET; \/\/ \u0432\u044b\u0445\u043e\u0434\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f - \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0442\u0430\u0439\u043c\u0435\u0440\u0430 private: \tboolean _M; \/\/ \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0444\u043b\u0430\u0433 \tunsigned long _StartTime; };  \/* ------------------- TP ------------------- *\/ class TP { public: \tTP(); \tTP(unsigned long PT); \tboolean Run(boolean IN); \tboolean Q; \/\/ \u0432\u044b\u0445\u043e\u0434\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \tboolean IN; \/\/ \u0432\u0445\u043e\u0434\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \tunsigned long PT; \/\/ \u0432\u0445\u043e\u0434\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \tunsigned long ET; \/\/ \u0432\u044b\u0445\u043e\u0434\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f - \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0442\u0430\u0439\u043c\u0435\u0440\u0430 private: \tboolean _M; \/\/ \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0444\u043b\u0430\u0433 \tunsigned long _StartTime; };  \/* ------------------- R_TRIG ------------------- *\/ class R_TRIG \/\/ \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440 \u0444\u0440\u043e\u043d\u0442\u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 { public: \tR_TRIG(); \tboolean Run(boolean CLK); \tboolean CLK; \/\/ \u0432\u0445\u043e\u0434\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \tboolean Q; \/\/ \u0432\u044b\u0445\u043e\u0434\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f private: \tboolean _M; \/\/ \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0444\u043b\u0430\u0433 };  \/* ------------------- F_TRIG ------------------- *\/ class F_TRIG \/\/ \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440 \u0441\u043f\u0430\u0434\u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 { public: \tF_TRIG(); \tboolean Run(boolean CLK); \tboolean CLK; \/\/ \u0432\u0445\u043e\u0434\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \tboolean Q; \/\/ \u0432\u044b\u0445\u043e\u0434\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f private: \tboolean _M; \/\/ \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0444\u043b\u0430\u0433 };  \/* ------------------- RS_TRIG ------------------- *\/ class RS_TRIG \/\/ \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440 \u0441\u043f\u0430\u0434\u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 { public: \tRS_TRIG(); \tboolean Run(); \tboolean Run(boolean SET, boolean RESET); \tboolean SET; \/\/ \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0430 \tboolean RESET; \/\/ \u0441\u0431\u0440\u043e\u0441 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0430 \tboolean Q; \/\/ \u0432\u044b\u0445\u043e\u0434\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \/\/private: };  \/* ------------------- SR_TRIG ------------------- *\/ class SR_TRIG \/\/ \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440 \u0441\u043f\u0430\u0434\u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 { public: \tSR_TRIG(); \tboolean Run(); \tboolean Run(boolean SET, boolean RESET); \tboolean SET; \/\/ \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0430 \tboolean RESET; \/\/ \u0441\u0431\u0440\u043e\u0441 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0430 \tboolean Q; \/\/ \u0432\u044b\u0445\u043e\u0434\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \/\/private: };  #endif \/* PLCSTANDARDLIB_H_ *\/ <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">plcStandardLib_1.cpp<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>\/*  * plcStandardLib_1.h  *  * Created on: 01.01.2017  * Author: Admin  *\/  #include &quot;plcStandardLib_1.h&quot;  \/* ------------------- TON ------------------- *\/ TON::TON() { \tIN = false; \tPT = 0; \t_M = false; \t_StartTime = 0; \tQ = false; \tET = 0; } TON::TON(unsigned long PT) { \tIN = false; \tTON::PT = PT; \t_M = false; \t_StartTime = 0; \tQ = false; \tET = 0; }  boolean TON::Run(boolean IN) { \tTON::IN = IN; \tif (!TON::IN) { \t\tQ = false; \t\tET = 0; \t\t_M = false; \t} else { \t\tif (!_M) { \t\t\t_M = true; \/\/ \u0432\u0437\u0432\u043e\u0434\u0438\u043c \u0444\u043b\u0430\u0433 \u041c \t\t\t_StartTime = millis(); \t\t\t\/\/ ET = 0; \/\/ \u0441\u0440\u0430\u0437\u0443 = 0 \t\t} else { \t\t\tif (!Q) \t\t\t\tET = millis() - _StartTime; \/\/ \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c \u0432\u0440\u0435\u043c\u044f \t\t} \t\tif (ET &gt;= PT) \t\t\tQ = true; \t} \treturn Q; }  \/* ------------------- TOF ------------------- *\/ TOF::TOF() { \tIN = false; \tPT = 0; \t_M = false; \t_StartTime = 0; \tQ = false; \tET = 0; }  TOF::TOF(unsigned long PT) { \tIN = false; \tTOF::PT = PT; \t_M = false; \t_StartTime = 0; \tQ = false; \tET = 0; }  boolean TOF::Run(boolean IN) { \tTOF::IN = IN; \tif (TOF::IN) { \t\tQ = true; \t\tET = 0; \t\t_M = true; \t} else { \t\tif (_M) { \t\t\t_M = false; \/\/ \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u0444\u043b\u0430\u0433 \u041c \t\t\t_StartTime = millis(); \t\t\t\/\/ ET = 0; \/\/ \u0441\u0440\u0430\u0437\u0443 = 0 \t\t} else { \t\t\tif (Q) \t\t\t\tET = millis() - _StartTime; \/\/ \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c \u0432\u0440\u0435\u043c\u044f \t\t} \t\tif (ET &gt;= PT) \t\t\tQ = false; \t} \treturn Q; }  \/* ------------------- TP ------------------- *\/ TP::TP() { \tIN = false; \tPT = 0; \t_M = false; \t_StartTime = 0; \tQ = false; \tET = 0; } TP::TP(unsigned long PT) { \tIN = false; \tTP::PT = PT; \t_M = false; \t_StartTime = 0; \tQ = false; \tET = 0; } boolean TP::Run(boolean IN) { \tTP::IN = IN; \tif (!_M) { \t\tif (TP::IN) { \t\t\t_M = true; \/\/ \u0432\u0437\u0432\u043e\u0434\u0438\u043c \u0444\u043b\u0430\u0433 \u041c \t\t\t_StartTime = millis(); \t\t\tif (ET &lt; PT) \t\t\t\tQ = true; \t\t} \t} else { \t\tif (Q) { \t\t\tET = millis() - _StartTime; \/\/ \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c \u0432\u0440\u0435\u043c\u044f \t\t\tif (ET &gt;= PT) \t\t\t\tQ = false; \t\t} else { \t\t\tif (!TP::IN) { \t\t\t\t_M = false; \t\t\t\tET = 0; \t\t\t} \t\t} \t} \treturn Q; }  \/* ------------------- R_TRIG ------------------- *\/ R_TRIG::R_TRIG() { \tCLK = false; \t_M = false; \tQ = false; }  boolean R_TRIG::Run(boolean CLK) { \tR_TRIG::CLK = CLK; \tQ = R_TRIG::CLK && !_M; \t_M = R_TRIG::CLK; \treturn Q; }  F_TRIG::F_TRIG() { \tCLK = false; \t_M = true; \tQ = false; }  boolean F_TRIG::Run(boolean CLK) { \tF_TRIG::CLK = CLK; \tQ = !F_TRIG::CLK && !_M; \t_M = !F_TRIG::CLK; \treturn Q; }  \/* ------------------- RS_TRIG ------------------- *\/ RS_TRIG::RS_TRIG() { \tSET = false; \tRESET = false; \tQ = false; }  boolean RS_TRIG::Run(boolean SET, boolean RESET) { \tRS_TRIG::SET = SET; \tRS_TRIG::RESET = RESET; \tQ = !RESET and (SET or Q); \treturn Q; }  boolean RS_TRIG::Run() { \tQ = !RESET and (SET or Q); \treturn Q; }  \/* ------------------- SR_TRIG ------------------- *\/ SR_TRIG::SR_TRIG() { \tSET = false; \tRESET = false; \tQ = false; }  boolean SR_TRIG::Run(boolean SET, boolean RESET) { \tSR_TRIG::SET = SET; \tSR_TRIG::RESET = RESET; \tQ = SET or (!RESET and Q); \treturn Q; }  boolean SR_TRIG::Run() { \tQ = SET or (!RESET and Q); \treturn Q; } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">plcStandardLib_1_example.ino<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>#include &quot;plcStandardLib_1.h&quot;  #define LED 13 #define ButtonIn 7  TON TON1(500); \/\/ \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, 500\u043c\u0441. TON TON2(1000); \/\/ \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, 1000\u043c\u0441. TOF TOF1(500); \/\/ \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, 500\u043c\u0441.  TP TP1(300); \/\/ \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u043e\u0433\u043e \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u0430, 300\u043c\u0441. TP TP2(200); \/\/ \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u043e\u0433\u043e \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u0430, 200\u043c\u0441.  R_TRIG R_TRIG1; \/\/ \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0430 \u0444\u0440\u043e\u043d\u0442\u0430 \u0434\u043b\u044f \u043a\u043d\u043e\u043f\u043a\u0438  void setup() {   pinMode(ButtonIn, INPUT_PULLUP);   pinMode(LED, OUTPUT); }  void loop() {   digitalWrite(LED, TP1.Run(R_TRIG1.Run(TON1.Run(digitalRead(ButtonIn)))));   \/\/ TON1 - \u0444\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u0442 \u0434\u0440\u0435\u0431\u0435\u0437\u0433 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0430   \/\/ R_TRIG1 - \u0434\u0435\u0442\u0435\u043a\u0442\u0438\u0440\u0443\u0435\u0442 \u0444\u0440\u043e\u043d\u0442 \u0441\u0438\u0433\u043d\u0430\u043b\u0430   \/\/ TP1 - \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0438\u043c\u043f\u0443\u043b\u044c\u0441 \u043f\u043e \u0444\u0440\u043e\u043d\u0442\u0443      digitalWrite(LED, TP2.Run(TON2.Run(!TON2.Q))); \/\/ \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u0430 \u043d\u0430 \u0431\u0430\u0437\u0435 TON \u0438 TP   \/\/ TON2.Run(!TON2.Q)) - \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u043e\u0433\u043e \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u0430   \/\/ TP2 - \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0438\u043c\u043f\u0443\u043b\u044c\u0441 \u043f\u043e \u0444\u0440\u043e\u043d\u0442\u0443      digitalWrite(LED, TOF1.Run(TON1.Run(digitalRead(ButtonIn)))); \/\/ \u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0440\u0435\u0431\u0435\u0437\u0433 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432 \u043a\u043d\u043e\u043f\u043a\u0438 (\u043f\u0440\u0438 \u0440\u0430\u0437\u043c\u044b\u043a\u0430\u043d\u0438\u0438 \u0442\u043e\u0436\u0435!) \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0433\u043e \u043a\u043e\u0434\u0430:  <\/p>\n<pre>FiltredButtonIn = TON1.Run(digitalRead(ButtonIn))<\/pre>\n<p>  \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f: \u0432\u043e\u0442 \u0442\u0430\u043a \u0432 CODESYS \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0440\u0430\u0431\u043e\u0442\u0430 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u0430 \u043d\u0430 \u0431\u0430\u0437\u0435 \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u0442\u0430\u0439\u043c\u0435\u0440\u043e\u0432 TON \u0438 TP. \u0412 \u043d\u0430\u0447\u0430\u043b\u0435 TON \u043e\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u044c\u044e \u0441 \u0438\u043d\u0432\u0435\u0440\u0441\u0438\u0435\u0439, \u0438 \u0438\u0437 \u043d\u0435\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u043e\u0433\u043e \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u0438\u043c\u043f\u0443\u043b\u044c\u0441-\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 TP. \u0412 \u043c\u043e\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 Arduino \u0430\u043d\u0430\u043b\u043e\u0433 \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:  <\/p>\n<pre>digitalWrite(LED, TP2.Run(TON2.Run(!TON2.Q)));<\/pre>\n<p>  <\/p>\n<div class=\"oembed\">\n<div>\n<div style=\"left: 0px; width: 100%; height: 0px; position: relative; padding-bottom: 56.2493%;\"><iframe src=\"https:\/\/www.youtube.com\/embed\/XIjuetT1CvM?rel=0&amp;showinfo=1\" frameborder=\"0\" allowfullscreen=\"true\" webkitallowfullscreen=\"true\" mozallowfullscreen=\"true\" style=\"top: 0px; left: 0px; width: 100%; height: 100%; position: absolute;\"><\/iframe><\/div>\n<\/div>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/geektimes.ru\/post\/286870\/\"> https:\/\/geektimes.ru\/post\/286870\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/269\/7d4\/587\/2697d458734041e8ad9553eaa94aafda.png\"\/><br \/>  \u0421\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b (\u041f\u041b\u041a) \u0432 \u0441\u0440\u0435\u0434\u0435 CODESYS. \u0412\u0441\u0435, \u043a\u0442\u043e \u0438\u043c\u0435\u043b \u0434\u0435\u043b\u043e \u0441 \u044d\u0442\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439, \u0437\u043d\u0430\u044e\u0442, \u0447\u0442\u043e \u0432 \u043b\u044e\u0431\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 Standard.lib, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0442\u0430\u0439\u043c\u0435\u0440\u044b, \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u044b, \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0438 \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043a\u043e\u043b-\u0432\u043e \u0434\u0440\u0443\u0433\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432. \u041c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437 \u044d\u0442\u0438\u0445 \u0431\u043b\u043e\u043a\u043e\u0432 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0445 \u0434\u043b\u044f \u041f\u041b\u041a. \u0410 \u0441\u0430\u043c\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430, \u043a\u0430\u043a \u0438 \u044f\u0437\u044b\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f CODESYS, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u043f\u043b\u043e\u0449\u0435\u043d\u0438\u0435\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430 IEC 61131-3, \u0442.\u0435. \u043f\u0440\u0438\u0437\u0432\u0430\u043d\u0430 \u043f\u043e\u043c\u043e\u0447\u044c \u043f\u0440\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u041f\u041b\u041a \u0437\u0430\u0434\u0430\u0447.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-284554","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/284554","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=284554"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/284554\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=284554"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=284554"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=284554"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}