Сообщение от
YuriBel
Простите великодушно, но не могу не вмешаться, так как проскальзывают не совсем верные утверждения.
Итак,
Рамиль, вы выложили пример некой пограммы, которая как-то работает, и что в ней правильно, а что нет, кроме вас никто не знает. Одно маленькое НО. В ней не указана целевая платформа, поэтому она годится только для работы в эмуляторе.
Кроме того, вы жаловались, что сделали простую программу с одним входом и одним выходом и она не работает. Вот ее и выкладывайте, будем начинать с простого.
Теперь о неверных или частично неверных утверждениях:
Flicker говорит о том, что привязки переменных к аппаратным входам и выходам нужно делать путем явного указания AT в разделе описания переменных. Можно делать так, а можно и по другому. Но в любом случае нужно выбрать целевую платформу и тогда в окне конфигурации ПЛК появится выбранный вами контроллер с его набором входов и выходов с конкретными обозначениями, которые вы можете прописывать после AT%.
Второй способ привязки переменных к физическим входам и выходам состоит в их внесении в конфигурацию. Об этом достаточно подробно рассказано в книге, которая начинает рождаться на сайте кодесис.рф усилиями Кирилла Гайнутдинова, за что ему огромное спасибо скажут многие, кто эту книгу прчитает. Так вот, если в конфирурации выделить один из входов или выходов, и щелкнуть по нему левой клавишей мышки, откроется квадратик для внесения имени переменной, которая будет связана с этим входом или выходом. НО (большое и жирное НО, потому что на эти грабли наступают почти все) эта переменная не должна дублироваться вами в программе. То есть вручную ее не нужно объявлять ни в разделе локальных переменных, ни в разделе глобальных.
Она сама попадет куда надо и будет иметь характер глобальной.
И теперь, если вы хотите ее использовать в программе, просто указывайте ее имя, и все будет работать. А чтобы не делать синтаксческих ошибок, удобно пользоваться ассистентом ввода. Выделяете в программе имя элемента, нажимаете А2 и получаете список всех доступных имен. Там в разделе глобальных переменных уже будет то имя, которое вы присвоили в входу в конфигурации. БОЛЬШЕЕГО НИГДЕ ОБЪЯВЛЯТЬ НЕ НУЖНО, В ПРОТИВНОМ СЛУЧАЕ, ИМЯ, ОБЪЯВЛЕННОЕ В ДРУГОМ МЕСТЕ, ПЕРЕОПРЕДЕЛИТ ЕГО, И СВЯЗЬ С ВХОДОМ ПОТЕРЯЕТСЯ.
Второе неверное утверждение Flickeraкасается Var_Input b Var_Output.
Эты типы переменных предназначены не для привязки к входам и выходам контроллера, а для создания функциональных блоков. Когда вы пишете не основную программу, а свой собственный функциональный блок, то там они реально нужны. Еу пкркменные, которые будут входами вашего функционального блока, нужно объявлять как var_Input, те, которые будут выходами - как Var_Output. Переменные для внутрениих нужд - как обычные var. А для связи с физическими выходами и входами этого вовсе не требуется. Для этого требуется ИЛИ прописать их в конфигурации ИЛИ прописать их в разделе описания переменных (в том числе при помощи окна автоопределения).
Ну и напоследок еще раз для Рамиля - выкладывайте маленькую программку, с ней разберемся, пойдете дальше, всё будет щелкать релюшками в соответствии с программой.