Russian (CIS)

Translate

Russian Chinese (Simplified) English French German Ukrainian
Главная Форум
Подписаться: Подписаться на рассылку по e-mail FACEBOOK
Форум
Добро пожаловать, Гость
Привет! Вход или Регистрация.    Забыли пароль?
Регістр з подвійним управлінням (1 просматривает) (1) Гость
Вниз Ответить Избранное: 0
Сообщения темы: Регістр з подвійним управлінням
#712
Roman (Пользователь)
Fresh Boarder
Постов: 19
graphgraph
Пользователь в оффлайне Кликните здесь, чтобы посмотреть профиль этого пользователя
Регістр з подвійним управлінням 10 г., 11 мес. назад  
Допоможіть будьлска в реалізації регістра з подвійним управлінням.

Суть задачі.
Необхідно для початку процесу дозування давати по modbus дозвіл на старт.
Тобто занести в один із яких небудь регітрів 1. Після випорожнення ємності
система повинна програмно з МІК-51 зніти цей дозвіл.

Коли якийсь із параметрів стоїть як "зв'язаний" то параметр недоступний для змін зовні, а коли
галочку забрати тоді регістром неможливо керувати із середини.

Чи можна цей випадок реалізувати іншим чином.
 
Сообщение модератору   Зарегистрированный Зарегистрированный  
  Для добавления сообщений, Вы должны зарегистрироваться или авторизоваться.
#713
Lukas (Модератор)
Модератор
Постов: 213
graph
Пользователь в оффлайне Кликните здесь, чтобы посмотреть профиль этого пользователя
RE: Регістр з подвійним управлінням 10 г., 11 мес. назад  
Одним із варіантів реалізації алгоритму являється використання блоку Trig(25), команду на старт подавати з блоку dSet(83) на перший вхід dSET блоку Trig(25), а команду про завершення процесу на другий вхід dRST. Варто врахувати, що команда з верхнього рівня по Modbus RTU повинна подаватись по принципу кнопки без фіксації (короткочасне подання «1»), Приклад програми в прикладеному файлі.
Прикрепленный файл:
Имя файла: test_594.zip
Размер файла: 857
 
Сообщение модератору   Зарегистрированный Зарегистрированный  
  Для добавления сообщений, Вы должны зарегистрироваться или авторизоваться.
#714
Roman (Пользователь)
Fresh Boarder
Постов: 19
graphgraph
Пользователь в оффлайне Кликните здесь, чтобы посмотреть профиль этого пользователя
RE: Регістр з подвійним управлінням 10 г., 11 мес. назад  
команду на старт подавати з блоку dSet(83)

А як зняти команду "1" з блоку dSet(83) - тобто обнулити.
Програмно відслідковувати і бнуляти блок після виконання я не хочу.
Тут потрібно буде ставити затримку на 1 цикл програми. - це раз.
Програма повинна мати живучість - тобто при зависанні софта на
компі процес повинен продовжуватись безперервно.
Стосовно одноразової відправки команд - то я так і роблю.
 
Сообщение модератору   Зарегистрированный Зарегистрированный  
  Для добавления сообщений, Вы должны зарегистрироваться или авторизоваться.
#718
Lukas (Модератор)
Модератор
Постов: 213
graph
Пользователь в оффлайне Кликните здесь, чтобы посмотреть профиль этого пользователя
RE: Регістр з подвійним управлінням 10 г., 11 мес. назад  
Якщо записати короткочасно в блок dSet(83) "1" і після цього записати "0" (принцип кнопки без фіксації), то на виході блоку отримаємо короткочасний імпульс, який подається на блок Trig(25), що запамятає його, і буде тримати цю "1" аж до появи сигналу на 2-му його вході (dRST), що відповідатиме завершенню процесу (одного циклу). Таким чином, процес буде тривати аж до закінчення випорожнення ємності і будь-які збої в програмному забезпеченні верхнього рівня ніяк на це не вплинуть.
 
Сообщение модератору   Зарегистрированный Зарегистрированный  
  Для добавления сообщений, Вы должны зарегистрироваться или авторизоваться.
#719
Roman (Пользователь)
Fresh Boarder
Постов: 19
graphgraph
Пользователь в оффлайне Кликните здесь, чтобы посмотреть профиль этого пользователя
RE: Регістр з подвійним управлінням 10 г., 11 мес. назад  
Впринципі я так і роблю, але хотів якось по іншому.
Така метода досить накладна.
Тут потрібно в мою програму (не плутати з програмою мікроконтроллера) добавляти
таймери, а якщо команд багато - таймерів теж багато. Пропадає принцип цілістності програми
тепер алгоритм роззосереджений між різними процесорами...
-
Було б добре ввести (якщо це можливо з технічної сторони) такий блок в МІК-51.
 
Сообщение модератору   Зарегистрированный Зарегистрированный  
  Для добавления сообщений, Вы должны зарегистрироваться или авторизоваться.
#723
Lukas (Модератор)
Модератор
Постов: 213
graph
Пользователь в оффлайне Кликните здесь, чтобы посмотреть профиль этого пользователя
RE: Регістр з подвійним управлінням 10 г., 11 мес. назад  
Якщо відштовхуватись від верхнього рівня управління, то типовий алгоритм запису значення в регістр приладу є наступним:
1. Якщо комунікаційний порт ще не відкритий – відкрити його (API функція CreateFile).
2. Згенерувати повідомлення згідно правил протоколу ModBus RTU.
3. Записати повідомлення в відкритий порт (API функція WriteFile).
4. Зробити незначну затримку в часі (наприклад, 10 мсек)
5. Прочитати повідомлення-підтвердження з порта (API функція ReadFile).
Якщо необхідно після цього записати інше повідомлення (згідно вашої задачі – скинути попередньо записане значення), потрібно, виконавши затримку, повторити пункти 2…5, але вже з іншим значенням.
Коли використовується синхронний режим передачі даних через послідовний порт, використовувати додаткові таймери для відслідковування, чи записалось/зчиталось значення з регістру приладу, немає потреби – вихід з відповідної функції (WriteFile, ReadFile), і відповідно, перехід до виконання наступної команди програми буде виконаний тільки по завершенні пересилки даних (або по спрацюванню відповідного таймауту, заданого в структурі COMMTIMEOUTS під час налаштування порта). Як результат – програму верхнього рівня не потрібно перевантажувати і ускладнювати лишніми таймерами.
Затримку в програмному коді можна виконати з допомогою API функції Sleep.
Також потрібно незабувати про систематичну обробку черги повідомлень (API функції PeekMessage, TranslateMessage і DispatchMessage), інакше програма буде тільки тим і зайнята, що працюватиме з портом.
 
Сообщение модератору   Зарегистрированный Зарегистрированный  
  Для добавления сообщений, Вы должны зарегистрироваться или авторизоваться.
#745
Roman (Пользователь)
Fresh Boarder
Постов: 19
graphgraph
Пользователь в оффлайне Кликните здесь, чтобы посмотреть профиль этого пользователя
RE: Регістр з подвійним управлінням 10 г., 10 мес. назад  
QUOTE:
Якщо необхідно після цього записати інше повідомлення (згідно вашої задачі – скинути попередньо записане значення), потрібно, виконавши затримку, повторити пункти 2…5, але вже з іншим значенням.

-
Звичайно можна так робити, але команди повинні іти за принципом - зробив і забув. Проблема з"являється коли скидання значення виконується через більший час - скажімо через хвилину. В таких випадках з"являється подвійна реалізація алгоритму, особливо небезпечно на системах із підвищеною безпекою неперервності процесу (у випадку зависання комп"ютера немає кому скидати значення).
 
Сообщение модератору   Зарегистрированный Зарегистрированный  
  Для добавления сообщений, Вы должны зарегистрироваться или авторизоваться.
#746
Lukas (Модератор)
Модератор
Постов: 213
graph
Пользователь в оффлайне Кликните здесь, чтобы посмотреть профиль этого пользователя
RE: Регістр з подвійним управлінням 10 г., 10 мес. назад  
1. Люба команда з верхнього рівня до вторинних приладів (регуляторів, контролерів і т.д.) на робочому об’єкті повинна виконуватись за принципом: "зробив (відправив) – перевірив правильність виконання – забув".
2. Якщо передбачається будь-яка ненадійність функціонування верхнього рівня в ієрархії АСУТП (а так воно і є, оскільки 100% надійних елементів не буває), коли, умовно, команда «пуск» - була відправлена на контролер, а наступна команда «сброс» - по тим чи іншим причинам – ні, програма, складена і записана в контролер, повинна враховувати такий перебіг подій і, або виконувати примусовий «сброс» самостійно, або, згідно регламенту установки, виконувати необхідну наперед визначену послідовність дій (сигналізація, аварійна зупинка об’єкту тощо). Як саме це реалізувати на рівні контролера згідно з Вашою задачею, було розглянуто в постах 713 і #718.
3. На технологічних об’єктах для особливо важливих контурів керування практикується повне апаратне резервування (умовно: давач – контролер – виконавчий механізм).
4. Система АСУТП вибухонебезпечних обєктів складається з двох незалежних систем: РСУ (розподілена система управління) і ПАЗ (система протиаварійного захисту). Одна – керує, інша – контролює.
 
Сообщение модератору   Зарегистрированный Зарегистрированный  
  Для добавления сообщений, Вы должны зарегистрироваться или авторизоваться.
Вверх Ответить