<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts by NikPavl</title><link href="https://forge.codesys.com/u/nikpavl/" rel="alternate"></link><link href="https://forge.codesys.com/u/nikpavl/profile/feed.atom" rel="self"></link><id>https://forge.codesys.com/u/nikpavl/</id><updated>2020-04-20T14:45:23Z</updated><subtitle>Recent posts by NikPavl</subtitle><entry><title>привязка физических входов\выходов</title><link href="https://forge.codesys.com/forge/talk-ru/2/thread/c13eed3ae3/?limit=25#3f25" rel="alternate"></link><published>2020-04-20T14:45:23Z</published><updated>2020-04-20T14:45:23Z</updated><author><name>NikPavl</name><uri>https://forge.codesys.com/u/nikpavl/</uri></author><id>https://forge.codesys.com9aff5bd85ff7defc67c3d8bd828826bbee1ed6d2</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Спасибо, что не оставляете без ответа наши вопросы. Тема многозадачности для контроллера сложная, поэтому формулировать лаконичные вопросы трудно.&lt;br/&gt;
Из документации на другие контроллеры с codesys 2 (нас, правда, интересует codesys 3 - нет достаточно документации)становится понятно, что при связывании с областями образа %I,%Q для каждой задачи создаются свои списки ссылок на области %I,%Q и на память, где фиксируются связанные с этими областями переменные. Так вот даже после прочтения всей найденной документации остается непонятным, фиксируется ли сам образ %I,%Q или "образ образа %I,%Q" на время выполнения задачи.&lt;br/&gt;
Кто в таком случае обновляет сам образ %I,%Q?&lt;/p&gt;
&lt;p&gt;Потом, происходит постоянная путаница с терминами. При описании процесса связывания переменных их называют входными\выходными, т.е.непременно объявленными в области var_input, var_output программы plc_prg - тогда они обновляются и фиксируются один раз и навсегда до окончания цикла задачи. А если я их объявлю глобальными или в области var и свяжу с %I,%Q  - они будут обновляться по другому закону или точно также?&lt;br/&gt;
Спасибо&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>привязка физических входов\выходов</title><link href="https://forge.codesys.com/forge/talk-ru/2/thread/c13eed3ae3/?limit=25#6488" rel="alternate"></link><published>2020-04-20T14:45:23Z</published><updated>2020-04-20T14:45:23Z</updated><author><name>NikPavl</name><uri>https://forge.codesys.com/u/nikpavl/</uri></author><id>https://forge.codesys.com7b531b5e35d99692637d4af92dbca3b42d50abcb</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Здравствуйте, Игорь.&lt;br/&gt;
Вы описали классическую модель «однозадачного» контроллера, здесь действительно логика работы с образом входов\выходов понятна, а тонкости не должны волновать разработчика. А в нашем же случае в Codesys 3 имеем вытесняющую многозадачность.&lt;/p&gt;
&lt;p&gt;Вопрос в следующем:&lt;br/&gt;
- имеем проект с ,допустим, двумя задачами. Эти задачи обрабатывают входы\выходы – реализуют какую-то логику.&lt;br/&gt;
- мы создаем некую задачу с более высоким приоритетом, в ней вызываем какой-то пустой POU – сл-но не опрашиваем в теле никакие переменные, привязанные к входам\выходам(хотим, например, с больше частотой опрашивать периферию)&lt;br/&gt;
- в конфигурации настройках Мастера указываем эту задачу в качестве ЗАДАЧИ ЦИКЛА ШИНЫ, выбираем способ обновления Вкл.2&lt;br/&gt;
Именно в этой задаче, как я понимаю, будут вызываться некие методы драйвера I/O для работы с периферией.&lt;br/&gt;
Эта задача изменит области входных и выходных данных(образ памяти) и вернувшись в предыдущую задачу мы получим измененный образ входов или нет? Какую задачу в таком случае указывать в качестве ЗАДАЧИ ЦИКЛА ШИНЫ, что бы данные обновлялись корректно?&lt;/p&gt;
&lt;p&gt;В статье вы пишите:&lt;br/&gt;
Каждая задача имеет свой собственный рабочий цикл ПЛК. Опрос 'своих' входов, вызов 'своих' программ,&lt;br/&gt;
запись 'своих' выходов происходит автономно, независимо от остальных задач. При компиляции проекта&lt;br/&gt;
CoDeSys автоматически распределяет входы/выходы по задачам, в которых они задействованы и передает&lt;br/&gt;
соответствующую конфигурацию драйверам аппаратуры&lt;/p&gt;
&lt;p&gt;Выходит, что каждая задача на стадии компиляции анализирует используемые переменные, привязаны ли они к области вх\вых данных, отдает эту информацию драйверу I/O. Перед выполнением задачи корректируется под эту задачу образ входов, в конце из области выходов, к которым привязаны переменные, отдаются значения. Т.е. считываются не все входы(выходы), а только используемые. Так что ли? В таком случае, категорически нельзя использовать одну и ту же привязанную переменную в разных задачах.&lt;/p&gt;
&lt;p&gt;Или все это ерунда, и независимо от количества задач и т.д. всегда имеем один единый образ входов и выходов для всех, как вы и написали в предыдущем сообщ.?&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>привязка физических входов\выходов</title><link href="https://forge.codesys.com/forge/talk-ru/2/thread/c13eed3ae3/?limit=25#fccd" rel="alternate"></link><published>2020-04-20T14:45:23Z</published><updated>2020-04-20T14:45:23Z</updated><author><name>NikPavl</name><uri>https://forge.codesys.com/u/nikpavl/</uri></author><id>https://forge.codesys.come834e34311c33409ce62a9552e9a8eb152a1c3ae</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;А что означает "фиксация" в этом случае - защита от записи извне в область входных данных %I или нет?&lt;br/&gt;
А если мы привязываем вх\вых каналы к глобальным переменным, как в этом случае каждая задача "фиксирует" входные\выходные данные?&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>привязка физических входов\выходов</title><link href="https://forge.codesys.com/forge/talk-ru/2/thread/c13eed3ae3/?limit=25#ab23" rel="alternate"></link><published>2020-04-20T14:45:23Z</published><updated>2020-04-20T14:45:23Z</updated><author><name>NikPavl</name><uri>https://forge.codesys.com/u/nikpavl/</uri></author><id>https://forge.codesys.com087663f6f52c7a15e274c7f425d778f7dec59cf2</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;ПЛК Овен -  СПК207. Необходимо использовать встроенный конфигуратор Codesys, т.к.большой объем данных, вручную все это опрашивать, конечно, можно, но нагляднее через конфигуратор. Как создавать конфигурацию, добавлять устр-ва (мастеров\слейвов) и т.д. - это все понятно. Возникает много вопросов, связанных с параметрами при настройке каналов, как они взаимосвязаны. В рез-те так и не понятно, как все-таки будут обновляться входы и выходы(т.е.связанные переменные) - в какой задаче, с какой частотой. Как соотнести параметр "задача цикла шины" и цикл опроса канала в devise-ах. И т.д. К чему в конце концов нужно привязываться. Ну вот. В любом случае, спасибо за ответ&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>привязка физических входов\выходов</title><link href="https://forge.codesys.com/forge/talk-ru/2/thread/c13eed3ae3/?limit=25#7bb3" rel="alternate"></link><published>2020-04-20T14:45:22Z</published><updated>2020-04-20T14:45:22Z</updated><author><name>NikPavl</name><uri>https://forge.codesys.com/u/nikpavl/</uri></author><id>https://forge.codesys.com487f2f966cc76af5f0a5f45aded39df408e374f9</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Прошу разъяснить один принципиальный момент.В среде Codesys 3.5 необходимо в конфигурации привязать больше 100 дискретных вх\вых и около 1000 вещественных входных величин.Объем большой, исчерпывающей информации для этой многозадачной среды нет почти никакой, а четкого представления о механизме привязки и обновления переменных нет.&lt;br/&gt;
И так:&lt;br/&gt;
1. К каким переменным привязывать вх(вых)- к глобальным, к переменным в секции var_input(var_output) программы plc_prg, к переменным в секции var пр-мы plc_prg?&lt;br/&gt;
2. как все это дело будет обновляться, т.к.необходимо иметь неизменяемое состояние входов на протяжении всего цикла plc_prg, т.к.из нее, понятно, вызываются все блоки. Выходы хотелось бы устанавливать из вложенных функ.блоков(а не из plc_prg), а выходные значения должны передаваться на периферию , понятно,  только после завершения plc_prg. &lt;br/&gt;
3.как на обновление данных влияет параметр "задача цикла шины" в конфигурации, вкладка "соотнесение входов\выходов". Что инициализирует этот пар-р - работу драйвера, просто обновление памяти %I, %Q или чего-то еще? А параметр "всегда обновлять переменные" - какие переменные, помимо того что мы видим изменение всех %I,%Q?&lt;br/&gt;
4.Если не имеет значения, к переменным какой секции привязывать - var_input(output) или var, зачем тогда в plc_prg эта секция var_input, как она работает&lt;br/&gt;
Прошу прощения за большой вопрос, но бесконечные эксперименты не вносят ясности.&lt;br/&gt;
Можно ли объяснить механизм работы? спасибо.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>щения: привязка физических входов\выходов</title><link href="https://forge.codesys.com/forge/talk-ru/2/thread/ce3ef0f957/?limit=25#caa0" rel="alternate"></link><published>2020-03-06T13:29:05Z</published><updated>2020-03-06T13:29:05Z</updated><author><name>NikPavl</name><uri>https://forge.codesys.com/u/nikpavl/</uri></author><id>https://forge.codesys.com93eb12b7eb2e78ce4c7d1edb28700407264925c1</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Спасибо, что не оставляете без ответа наши вопросы. Тема многозадачности для контроллера сложная, поэтому формулировать лаконичные вопросы трудно.&lt;br/&gt;
Из документации на другие контроллеры с codesys 2 (нас, правда, интересует codesys 3 - нет достаточно документации)становится понятно, что при связывании с областями образа %I,%Q для каждой задачи создаются свои списки ссылок на области %I,%Q и на память, где фиксируются связанные с этими областями переменные. Так вот даже после прочтения всей найденной документации остается непонятным, фиксируется ли сам образ %I,%Q или "образ образа %I,%Q" на время выполнения задачи.&lt;br/&gt;
Кто в таком случае обновляет сам образ %I,%Q?&lt;/p&gt;
&lt;p&gt;Потом, происходит постоянная путаница с терминами. При описании процесса связывания переменных их называют входными\выходными, т.е.непременно объявленными в области var_input, var_output программы plc_prg - тогда они обновляются и фиксируются один раз и навсегда до окончания цикла задачи. А если я их объявлю глобальными или в области var и свяжу с %I,%Q  - они будут обновляться по другому закону или точно также?&lt;br/&gt;
Спасибо&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>щения: привязка физических входов\выходов</title><link href="https://forge.codesys.com/forge/talk-ru/2/thread/ce3ef0f957/?limit=25#2327" rel="alternate"></link><published>2020-03-06T13:29:05Z</published><updated>2020-03-06T13:29:05Z</updated><author><name>NikPavl</name><uri>https://forge.codesys.com/u/nikpavl/</uri></author><id>https://forge.codesys.com920b96a254212fc9d5b2aec96f45527ea09d196c</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Здравствуйте, Игорь.&lt;br/&gt;
Вы описали классическую модель «однозадачного» контроллера, здесь действительно логика работы с образом входов\выходов понятна, а тонкости не должны волновать разработчика. А в нашем же случае в Codesys 3 имеем вытесняющую многозадачность.&lt;/p&gt;
&lt;p&gt;Вопрос в следующем:&lt;br/&gt;
- имеем проект с ,допустим, двумя задачами. Эти задачи обрабатывают входы\выходы – реализуют какую-то логику.&lt;br/&gt;
- мы создаем некую задачу с более высоким приоритетом, в ней вызываем какой-то пустой POU – сл-но не опрашиваем в теле никакие переменные, привязанные к входам\выходам(хотим, например, с больше частотой опрашивать периферию)&lt;br/&gt;
- в конфигурации настройках Мастера указываем эту задачу в качестве ЗАДАЧИ ЦИКЛА ШИНЫ, выбираем способ обновления Вкл.2&lt;br/&gt;
Именно в этой задаче, как я понимаю, будут вызываться некие методы драйвера I/O для работы с периферией.&lt;br/&gt;
Эта задача изменит области входных и выходных данных(образ памяти) и вернувшись в предыдущую задачу мы получим измененный образ входов или нет? Какую задачу в таком случае указывать в качестве ЗАДАЧИ ЦИКЛА ШИНЫ, что бы данные обновлялись корректно?&lt;/p&gt;
&lt;p&gt;В статье вы пишите:&lt;br/&gt;
Каждая задача имеет свой собственный рабочий цикл ПЛК. Опрос 'своих' входов, вызов 'своих' программ,&lt;br/&gt;
запись 'своих' выходов происходит автономно, независимо от остальных задач. При компиляции проекта&lt;br/&gt;
CoDeSys автоматически распределяет входы/выходы по задачам, в которых они задействованы и передает&lt;br/&gt;
соответствующую конфигурацию драйверам аппаратуры&lt;/p&gt;
&lt;p&gt;Выходит, что каждая задача на стадии компиляции анализирует используемые переменные, привязаны ли они к области вх\вых данных, отдает эту информацию драйверу I/O. Перед выполнением задачи корректируется под эту задачу образ входов, в конце из области выходов, к которым привязаны переменные, отдаются значения. Т.е. считываются не все входы(выходы), а только используемые. Так что ли? В таком случае, категорически нельзя использовать одну и ту же привязанную переменную в разных задачах.&lt;/p&gt;
&lt;p&gt;Или все это ерунда, и независимо от количества задач и т.д. всегда имеем один единый образ входов и выходов для всех, как вы и написали в предыдущем сообщ.?&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>щения: привязка физических входов\выходов</title><link href="https://forge.codesys.com/forge/talk-ru/2/thread/ce3ef0f957/?limit=25#7957" rel="alternate"></link><published>2020-03-06T13:29:05Z</published><updated>2020-03-06T13:29:05Z</updated><author><name>NikPavl</name><uri>https://forge.codesys.com/u/nikpavl/</uri></author><id>https://forge.codesys.comececc5898e7e90d6e6050225965294ced4bdef08</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;А что означает "фиксация" в этом случае - защита от записи извне в область входных данных %I или нет?&lt;br/&gt;
А если мы привязываем вх\вых каналы к глобальным переменным, как в этом случае каждая задача "фиксирует" входные\выходные данные?&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>щения: привязка физических входов\выходов</title><link href="https://forge.codesys.com/forge/talk-ru/2/thread/ce3ef0f957/?limit=25#1b90" rel="alternate"></link><published>2020-03-06T13:29:04Z</published><updated>2020-03-06T13:29:04Z</updated><author><name>NikPavl</name><uri>https://forge.codesys.com/u/nikpavl/</uri></author><id>https://forge.codesys.com823877078af581cc625333fdb94674ccfc67ba10</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;ПЛК Овен -  СПК207. Необходимо использовать встроенный конфигуратор Codesys, т.к.большой объем данных, вручную все это опрашивать, конечно, можно, но нагляднее через конфигуратор. Как создавать конфигурацию, добавлять устр-ва (мастеров\слейвов) и т.д. - это все понятно. Возникает много вопросов, связанных с параметрами при настройке каналов, как они взаимосвязаны. В рез-те так и не понятно, как все-таки будут обновляться входы и выходы(т.е.связанные переменные) - в какой задаче, с какой частотой. Как соотнести параметр "задача цикла шины" и цикл опроса канала в devise-ах. И т.д. К чему в конце концов нужно привязываться. Ну вот. В любом случае, спасибо за ответ&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>щения: привязка физических входов\выходов</title><link href="https://forge.codesys.com/forge/talk-ru/2/thread/ce3ef0f957/?limit=25#7984" rel="alternate"></link><published>2020-03-06T13:29:04Z</published><updated>2020-03-06T13:29:04Z</updated><author><name>NikPavl</name><uri>https://forge.codesys.com/u/nikpavl/</uri></author><id>https://forge.codesys.com48712acaa537c9524bc3670f3d7aed44356804ca</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Прошу разъяснить один принципиальный момент.В среде Codesys 3.5 необходимо в конфигурации привязать больше 100 дискретных вх\вых и около 1000 вещественных входных величин.Объем большой, исчерпывающей информации для этой многозадачной среды нет почти никакой, а четкого представления о механизме привязки и обновления переменных нет.&lt;br/&gt;
И так:&lt;br/&gt;
1. К каким переменным привязывать вх(вых)- к глобальным, к переменным в секции var_input(var_output) программы plc_prg, к переменным в секции var пр-мы plc_prg?&lt;br/&gt;
2. как все это дело будет обновляться, т.к.необходимо иметь неизменяемое состояние входов на протяжении всего цикла plc_prg, т.к.из нее, понятно, вызываются все блоки. Выходы хотелось бы устанавливать из вложенных функ.блоков(а не из plc_prg), а выходные значения должны передаваться на периферию , понятно,  только после завершения plc_prg. &lt;br/&gt;
3.как на обновление данных влияет параметр "задача цикла шины" в конфигурации, вкладка "соотнесение входов\выходов". Что инициализирует этот пар-р - работу драйвера, просто обновление памяти %I, %Q или чего-то еще? А параметр "всегда обновлять переменные" - какие переменные, помимо того что мы видим изменение всех %I,%Q?&lt;br/&gt;
4.Если не имеет значения, к переменным какой секции привязывать - var_input(output) или var, зачем тогда в plc_prg эта секция var_input, как она работает&lt;br/&gt;
Прошу прощения за большой вопрос, но бесконечные эксперименты не вносят ясности.&lt;br/&gt;
Можно ли объяснить механизм работы? спасибо.&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>