Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 11

Тема: передача по Modbus TCP данных из ПЛК200 в СП300-Р

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию передача по Modbus TCP данных из ПЛК200 в СП300-Р

    Здравствуйте!

    Есть задача - оценить значения, полученные с датчиков и в панели цветом посветить результат - годен/брак (красный/белый).
    В программе создала массив res:ARRAY [0..5] OF BOOL, в котором сохраняю результат проверки от каждого датчика. Настроила передачу по Modbus TCP этого массива в панель (панель - Master, ПЛК - Slave). В Панели организовала соответственно 6 индикаторов. Но при работе наблюдается следующее : либо все значения подсвечиваются годными либо все бракованными, хотя в проекте показывает, что значения в массиве res - разные. Скрины прилагаю.

    Подскажите, пожалуйста, в чем может быть проблема.

    arr_bool_1.png
    arr_bool_2.png
    arr_bool_3.png

  2. #2

    По умолчанию

    Сильно обрезали контроллерный скрин. Непонятно в какую область памяти вы их записываете...

  3. #3

    По умолчанию

    Вот весь скрин

    arr_bool_4.png

    P.S. Еще ошиблась в названии темы - панель СП307-Р

  4. #4

    По умолчанию

    307 или 310, это не существенно...
    А на странице конфигурации вы эти области случаем не объединили? Не работал с областью входов, только через холдинг и инпут регистры. Может не та функция, может 2 надо, а не 1... Или какая там...

    Щас кто нибудь ответит более адекватный)

  5. #5

    По умолчанию

    Цитата Сообщение от Icm_Elen Посмотреть сообщение
    Подскажите, пожалуйста, в чем может быть проблема.
    У Овена биты и регистры наложены друг на друга, поэтому если у вас регистры с 0, то и биты с 0. Одним регистром
    можно передать до 16 бит (с 0 по 15)
    Нет смысла делать биты отдельно, выделите любой регистр, назовите Mask и в программе упакуйте (распакуйте) из него биты.
    Упаковка и распаковка бит из Маски бит через точку.
    Например: Упаковка Mask.0:=b_0; Mask.1:=b_1; и т. д. до 15 бита
    Распаковка b0:=Mask1.0; b1:=Mask1.1; и т. д.
    Также надо помнить, что 0 бит попадёт на 8, а 8 на 0 бит, то есть байты переставлены.

    Пример слейва со 125 регистра 1 Адреса бит.jpg
    На скрине регистры начинаются со 125 регистра или 2000 бита
    (125*16=2000 - адрес бита)
    Последний раз редактировалось kondor3000; 06.08.2025 в 22:48.

  6. #6

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    У Овена биты и регистры наложены друг на друга...
    Вроде только если отмечена галочка, самая нижняя которая на вашем скрине...

  7. #7

    По умолчанию

    Цитата Сообщение от МихаилГл Посмотреть сообщение
    Вроде только если отмечена галочка, самая нижняя которая на вашем скрине...
    Она для другого, там прямо написано, для чего

  8. #8

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    У Овена биты и регистры наложены друг на друга ...
    Спасибо за помощь. Я, конечно, не до конца все поняла, но решила воспользоваться вашим советом про биты в регистре. В итоге реализовала (см. скрины) и все заработало. Но если честно, до конца так и не поняла - почему заработало. Может сможете мне пояснить.
    mask_2.pngmask_1.pngmask_3.pngmask_4.png

  9. #9

    По умолчанию

    Цитата Сообщение от Icm_Elen Посмотреть сообщение
    Спасибо за помощь. Я, конечно, не до конца все поняла, но решила воспользоваться вашим советом про биты в регистре. В итоге реализовала (см. скрины) и все заработало. Но если честно, до конца так и не поняла - почему заработало. Может сможете мне пояснить.
    mask_2.pngmask_1.pngmask_3.pngmask_4.png
    Вы сделали не как писал, а по своему, то есть использовали дополнительные биты в ПЛК,
    а не работало вероятно, из-за отсутствия присвоения бит в программе.

    У данного варианта есть несколько минусов:
    1) Надо проверять, не будут ли включения бит влиять на основные регистры.
    2) Время обмена увеличится из-за наличия дополнительных бит.
    Последний раз редактировалось kondor3000; 07.08.2025 в 09:48.

  10. #10
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    3,046

    По умолчанию

    Цитата Сообщение от Icm_Elen Посмотреть сообщение
    ... Я, конечно, не до конца все поняла, но решила воспользоваться вашим советом про биты в регистре. В итоге реализовала (см. скрины) и все заработало. Но если честно, до конца так и не поняла - почему заработало. Может сможете мне пояснить.
    потому что
    массив res:ARRAY [0..5] OF BOOL
    если его переслать как есть, это 3 регистра в которых панель трогает 0-й и 8-й биты каждого регистра.
    Главное нормально к ним привязаться. А какой-либо вменяемой разницы не будет - хоть пакуй хоть так. Надобность в паковке появляется при значительном кол-во битов - когда счет идет на сотни. А тут - ниочём.
    Последний раз редактировалось Валенок; 08.08.2025 в 16:29.

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. Передача данных из СПК110 в SCADA и обратно по MODBUS TCP
    от Джоник в разделе СПК210, СПК1xx [М01]
    Ответов: 10
    Последнее сообщение: 26.09.2024, 07:42
  2. Ответов: 2
    Последнее сообщение: 07.02.2024, 09:11
  3. Ответов: 26
    Последнее сообщение: 31.01.2023, 17:42
  4. Ответов: 5
    Последнее сообщение: 12.05.2016, 15:55
  5. Передача данных c СПК207 по протоколу Modbus RTU
    от Maria в разделе СПК2xx (архив)
    Ответов: 11
    Последнее сообщение: 02.03.2016, 16:53

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •