Вход

Просмотр полной версии : Проблема с обменом данных ПЛК160 slave - СП310 master



fatlortroll
19.04.2024, 10:37
Помогите пожалуйста решить следующую проблему:
В проекте ПЛК такая структура данных:


VAR_CONFIG
sel_reciept AT %QW8.4.0 : WORD; (* Выбор рецепта *)
END_VAR

VAR_GLOBAL
sel_reciept AT %Q* : WORD; (* Выбор рецепта *)
END_VAR


QW8.4.0 отображается на регистр slave-а Modbus ПЛК.
При попытке записать в этот регистр из СП310 (Modbus master) его значение затирается на нулевое.
Но если в VAR_GLOBAL заменить %Q* на %QW8.4.0 (а в VAR_CONFIG, соответственно, закомментировать sel_reciept) то значение затираться перестаёт.
Как сохранить VAR_CONFIG, и избежать затирания его переменных?

1exan
19.04.2024, 10:47
Помогите пожалуйста решить следующую проблему:
В проекте ПЛК такая структура данных:


VAR_CONFIG
sel_reciept AT %QW8.4.0 : WORD; (* Выбор рецепта *)
END_VAR

VAR_GLOBAL
sel_reciept AT %Q* : WORD; (* Выбор рецепта *)
END_VAR


QW8.4.0 отображается на регистр slave-а Modbus ПЛК.
При попытке записать в этот регистр из СП310 (Modbus master) его значение затирается на нулевое.
Но если в VAR_GLOBAL заменить %Q* на %QW8.4.0 (а в VAR_CONFIG, соответственно, закомментировать sel_reciept) то значение затираться перестаёт.
Как сохранить VAR_CONFIG, и избежать затирания его переменных?

А какая цель использования конфигурационных переменных?
Вы уверены, что правильно поняли концепцию их применения?

fatlortroll
19.04.2024, 10:50
> А какая цель использования конфигурационных переменных?
Собрать все адресно-зависимые переменные в одну кучу. Иначе они разбросаны по проекту, и что-то найти-поменять достаточно нелегко.

> Вы уверены, что правильно поняли концепцию их применения?
Уже не уверен.

1exan
19.04.2024, 10:56
> А какая цель использования конфигурационных переменных?
Собрать все адресно-зависимые переменные в одну кучу. Иначе они разбросаны по проекту, и что-то найти-поменять достаточно нелегко.


Создайте в ресурсах новый список для переменных (или используйте уже имеющийся) и пишите их туда:
переменные, использующие прямую адресацию в область слейва конфигурации, по умолчанию будут глобальными (и энергонезависимыми)

fatlortroll
19.04.2024, 11:07
> переменные, использующие прямую адресацию в область слейва конфигурации, по умолчанию будут глобальными (и энергонезависимыми)

В справке CoDeSys-а по VAR_CONFIG это не указывается. Где можно подробнее почитать про эти переменные?

Разве энергонезависимость -- это не VAR_RETAIN ?

1exan
19.04.2024, 11:31
> переменные, использующие прямую адресацию в область слейва конфигурации, по умолчанию будут глобальными (и энергонезависимыми)

В справке CoDeSys-а по VAR_CONFIG это не указывается. Где можно подробнее почитать про эти переменные?

Разве энергонезависимость -- это не VAR_RETAIN ?

Забудьте по VAR_CONFIG - этот раздел совсем не для этого.
VAR_RETAIN - это да, но если вы добавили в конфигурацию Modbas(slave), то все переменные, указанные в этой области памяти будут энергонезависимыми без дополнительных указаний.
Почитать (https://docs.owen.ru/product/plk160m02/759/62750#topic-62756)

In_Da_Cher_A
19.04.2024, 12:09
QW8.4.0 отображается на регистр slave-а Modbus ПЛК.а откуда оно там? само по себе взялось?
что вообще вы наделали в конфигурации ПЛК? скрины давайте

fatlortroll
19.04.2024, 12:36
> а откуда оно там? само по себе взялось?
Нет, конечно, я его туда наконфигурировал. До него ещё три двухбайтовых переменных, потому оно и 8.4.0 .

> что вообще вы наделали в конфигурации ПЛК?
Добавил Modbus slave, в него двухбайтовую переменную. И на неё ссылаюсь из VAR_GLOBAL и VAR_CONFIG.

МихаилГл
19.04.2024, 12:52
> а откуда оно там? само по себе взялось?
Нет, конечно, я его туда наконфигурировал. До него ещё три двухбайтовых переменных, потому оно и 8.4.0 .

> что вообще вы наделали в конфигурации ПЛК?
Добавил Modbus slave, в него двухбайтовую переменную. И на неё ссылаюсь из VAR_GLOBAL и VAR_CONFIG.

Буквально вчера такое наблюдал. ModBus переменную из VAR_GLOBAL и VAR_CONFIG удалите, она уже определена в ModBus slave. (тут уже писали https://owen.ru/forum/showthread.php?t=39518&p=435541&viewfull=1#post435541)

In_Da_Cher_A
19.04.2024, 14:00
> а откуда оно там? само по себе взялось?
Нет, конечно, я его туда наконфигурировал. До него ещё три двухбайтовых переменных, потому оно и 8.4.0 .

> что вообще вы наделали в конфигурации ПЛК?
Добавил Modbus slave, в него двухбайтовую переменную. И на неё ссылаюсь из VAR_GLOBAL и VAR_CONFIG.

а причём здесь VAR_GLOBAL и VAR_CONFIG?

имя ей дайте в слейве.
в программе "переложите" её в другую переменню, и новую другую уже насилуйте, как возжелаете

fatlortroll
19.04.2024, 16:12
Расскажите, пожалуйста, какие поля задают имя переменной slave-а? Node ID в Base parameters, или Name в Module parameters ?

kondor3000
19.04.2024, 16:22
Расскажите, пожалуйста, какие поля задают имя переменной slave-а? Node ID в Base parameters, или Name в Module parameters ?

Вот скрин, переменным слейва даны имена Mask, Mask1, W1, W2, R1 75284
В программе имена используются как переменные, без всяких AT%QB12.1.0

petera
19.04.2024, 16:23
Расскажите, пожалуйста, какие поля задают имя переменной slave-а? Node ID в Base parameters, или Name в Module parameters ?

Щелкай мышкой перед AT и вводи имя

https://owen.ru/forum/attachment.php?attachmentid=75285&d=1713533070

fatlortroll
19.04.2024, 16:25
> переменным слейва даны имена Mask, Mask1, W1, W2, R1
> Щелкай мышкой перед AT и вводи имя

Спасибо.
Вот как про это было догадаться без документированной инструкции? Сидеть, и тыкать мышью на каждый пиксель экрана?

kondor3000
19.04.2024, 17:02
Спасибо.
Вот как про это было догадаться без документированной инструкции? Сидеть, и тыкать мышью на каждый пиксель экрана?

Если вы начинающий, советую посмотреть 12 коротких обучающих видео https://www.youtube.com/watch?v=eSTmoNeLa7A
Отпадёт множество вопросов.

In_Da_Cher_A
19.04.2024, 17:44
> переменным слейва даны имена Mask, Mask1, W1, W2, R1
> Щелкай мышкой перед AT и вводи имя

Спасибо.
Вот как про это было догадаться без документированной инструкции? Сидеть, и тыкать мышью на каждый пиксель экрана?ээээээа мануал на Кодесис 2.3 - там разве нет ничего про такую вещь как Идентификатор переменной? Идентификатор Функционального блока?
ну какой-то странное у вас руководство попалось

ну и вагон макулатуры под названием Первый старт КДС2.3 и прочее прочее даже не буду вспоминать

fatlortroll
20.04.2024, 08:02
Да у меня на работе видео смотреть не очень льзя.
Спасибо за информацию!

Cs-Cs
20.04.2024, 10:01
> переменным слейва даны имена Mask, Mask1, W1, W2, R1
> Щелкай мышкой перед AT и вводи имя

Спасибо.
Вот как про это было догадаться без документированной инструкции? Сидеть, и тыкать мышью на каждый пиксель экрана? Вообще это в инструкции было.

fatlortroll
20.04.2024, 17:45
> Вообще это в инструкции было
Ну, значит я слепой.

И всё таки, для чего предназначены VAR_CONFIG?

1exan
20.04.2024, 19:05
> Вообще это в инструкции было
Ну, значит я слепой.

И всё таки, для чего предназначены VAR_CONFIG?

Для использования прямой адресации внутри нескольких экземпляров одного ФБ.
Наберите в справке "Variable Configuration"

fatlortroll
21.04.2024, 13:06
А я думал, для удобного собрания в одном месте всех адресуемых переменных.