Вход

Просмотр полной версии : Обменн данными между ОВЕН ПЛК63L(SlAVE) и Siemens ПЛК S7 1200(Master)



Durandesh
25.11.2024, 10:41
Здравствуйте всем! Может кто нибудь сталкивался. Опрос через RS-485 Modbus RTU. Использую плата CB 1241 на борту S7 1200 ПЛК.
Есть ОВЕН ПЛК63L(SLAVE) И СИЕМЕНС S7 1200(MASTER). Читаю и записываю переменные из SubMenu типа BYTE, UINT в конфигурации ПЛК63L без проблем . Значение типа REAL читаю в плк63L не корректно как видно на картинке, а если наоборот записать значение REAL в Сиеменс ничего не передаёт. Пробовал разные функции Modbus в Tia Portal не помогло. Не знаю где проблема, то ли в Tia Portal либо в Codesys.

1. Как правильно записывать/прочитать переменный тип REAL между ПЛК63L/S7 1200?

2. Также как прочитать/записывать встроенные переменные(дискретные входа/выхода, аналоговые) ПЛК63L в/из ПЛК S7 1200?

В форуме нашёл таблица конфигурации ПЛК63L. Например, не получилось прочитать дискретные входа 1byte по адресу 288 или 4096. Это может быть связанно с копия области ПЛК63L, о котором я не знаю как правильно использовать. Как правильно объявить адрес 288 или 4096 Modbus в Tia Portal, чтобы увидеть состояние дискретных входов ПЛК63L? Спасибо заранее!

capzap
25.11.2024, 11:37
Значение типа REAL читаю в плк63L не корректно как видно на картинке

на одном из устройств(S7-1200) поменяйте слова(2байта) местами и увидите нужное значение на другом конце провода

Durandesh
25.11.2024, 11:50
на одном из устройств(S7-1200) поменяйте слова(2байта) местами и увидите нужное значение на другом конце провода

Может конечно я что-то не понимаю. Я записываю значение 1.5 в ПЛК63L и соответственно в Codesys наверное как-то через указатели преобразовать тип REAL?
А если имели ввиду передача REAL в S7 1200, то попробую конечно.

capzap
25.11.2024, 11:59
Может конечно я что-то не понимаю. Я записываю значение 1.5 в ПЛК63

найдите отличия 80295 и 80296

Durandesh
26.11.2024, 16:41
найдите отличия 80295 и 80296

Сделал точно как у тебя, все равно другое значение приходит в Codesys: -2.984375 . Используя блок SWAP получаю 0000_C03F 80335

Durandesh
27.11.2024, 07:41
в родной среде на картинках порядок слов такой же как в плк63

а порядок байт нет, разбирайся с тиа порталом, точнее с сетевым и локальным (хостовым) порядком. Очевидно же.

Почему порядок байтов менять в тиа портал, а не в кодесис(получатель)? Порядок байтов в Тиа портал: ABCD ----CDAB как показали выше.

Durandesh
27.11.2024, 07:43
Вот значение после изменение порядок Слов в Тиа портал

capzap
27.11.2024, 07:55
Вот значение после изменение порядок Слов в Тиа портал

представляете, Вам осталось еще одно значение показать, кроме 1.5, 2.2869190937781E-41 и -2.984375
80349
и финальное 80350

kondor3000
27.11.2024, 08:18
Почему порядок байтов менять в тиа портал, а не в кодесис(получатель)? Порядок байтов в Тиа портал: ABCD ----CDAB как показали выше.

Да меняйте где хотите, обычно это делают в Мастере, но можете написать функцию и в Codesys 2.3. Все возможные варианты для числа 1.5 на скрине 80351

Durandesh
28.11.2024, 15:57
Спасибо всем большое за примеры и подсказки! Получилось с помощью блока ROR, а не SWAP в тиа портал как видно на картинке. Получаю/Записываю число REAL как пользовательские так и дискретные выхода, аналоговый вход по одиночному запросу.
Теперь пробовал групповой запрос чтения аналоговые входа Ain1(1 канал) и termopara2 (2 канал).Не правильно приходит значение 2-й канал. Пробовал считывать по адресу 24 и 4098(копия области адрес модбаса) ничего. В тиа портал адрес чтения по Модбас начинается 30001+ адрес AI(4098)= 3409. Может кто нибудь скажет в чем причина?

imaex
28.11.2024, 16:26
Может кто нибудь скажет в чем причина?

В истории.
Со способом адресации данных связана определённая путаница. Modbus был первоначально разработан для контроллеров Modicon. В этих контроллерах для каждой из таблиц использовалась специальная нумерация. Например, первому регистру ввода соответствовал номер ячейки 30001, а первому регистру хранения — 40001. Таким образом, регистру хранения с адресом 107 в команде Modbus соответствовал регистр № 40108 контроллера. Хотя такое соответствие адресов больше не является частью стандарта, некоторые программные пакеты могут автоматически «корректировать» вводимые пользователем адреса, например, вычитая 40001 из адреса регистра хранения. Справочное руководство от 1996 года https://modbus.org/docs/PI_MBUS_300.pdf (https://ru.wikipedia.org/wiki/Modbus#Модель_данных), где неявно была принята похожая адресация, помечено как устаревшее ("obsolete" и "FOR LEGACY APPLICATIONS ONLY"), текущая спецификация протокола https://modbus.org/docs/Modbus_Application_Protocol_V1_1b3.pdf использует только абсолютную адресацию - 01 (0x01) Read Coils 0x0000 to 0xFFFF, 03 (0x03) Read Holding Registers 0x0000 to 0xFFFF.

AlexandrGr
28.11.2024, 18:57
Тоскааааааа.......

AlexandrGr
28.11.2024, 19:02
У одного устройства мне понравился один функционал. По данному адресу вы читаете 1234567 в формате DWORD. По другому адресу вы читаете 1234.567 в формате REAL. Если ли читаете правильно 1234567 и 1234.567 то у вас все хорошо с настройкой связи с нашим устройством.

Durandesh
29.11.2024, 08:47
Да, это отпечатка. Но на 3-й картинке видно, что записано правильно:34099.

в тиа портале. В чем еще то?

вот чего это?

А насчёт чтения как массив попробую и отпишусь о результатах.


С адреса 4098 можно спокойно прочитать сразу все 8x{value:real; cyclic: word; x: word}
Для real : младшее слово, старшее слово. Байты слов-регистров ессно подразумевают приведение от сетевого к местному
Прочитайте с адреса 4098 тупо как массив [1..32] of word и покажите его как есть.

AlexandrGr
29.11.2024, 10:21
Скопируйте Ai в юзер-меню с любым преобразованием. Кол-во точек после запятой сделайте настройкой и описанный вами девайс нервно закурит в сторонке.

Вы не поняли.
Там по фиксированным адресам записаны константы. 1234567 в формате DWORD и 1234.567 в формате REAL.

Нашел.
80440

AlexandrGr
29.11.2024, 17:35
Я вам уже 2 раза написал про корень ваших проблем (в этой теме), вы не слышите, а локальные решения мне неинтересны и смешны
Проблемы у ТС. У меня нет проблем.

AlexandrGr
29.11.2024, 18:47
а про константы - все тоже. Примитив
А понять что байты или слова надо менять местами. Или что читаете не по тому адресу. Это не примитив.

Durandesh
04.12.2024, 11:08
Прочитайте с адреса 4098 тупо как массив [1..32] of word и покажите его как есть.

Добрый день! Спасибо получилось считывать AI(Ain1 и termopara) как групповой. Как видно на картинке как массив из 4-х DWord. Заметил в конфиге AI канал1 время измерения1 тип переменный как Word, но в тиа портале занимает как 2 Word. т.е канал1 AI занимает 4 регистра(Word) и данные с 2-го канала приходи на 5 регистр(Word) как то так. Также получилось считывать групповой DI,DO, пользователькие и т.д.


Может говорить что угодно - ПЛК63 спокойно сливает с 4096 сразу всё - Di,Ai,Key,версия,выходы,яркость,контраст,время,имя и можно пользовательсое меню прихватить.


Записать значение как групповой из тиа портал в ПЛК63 не получилось, что DO- дискретные выходы, что и пользовательские UINT,REAL. На картинке показываю запись значение как массив[1..5] of UINT, начиная с адреса 4176( пробовал 4184)+ 40001(адрес модбас в тиа портал) и все по нулям в ПЛК63. Может быть неправильно написал адрес регистра, потому что в тиа портал получаю ошибку 8381-Function code not supported. Пробовал другие функции записи тоже ничего.

Durandesh
05.12.2024, 09:20
Может быть не доступен групповой запрос(полученные данные от Мастера) для пользовательские переменные по этим адресам: 4176 - 4200,...? Думаю, если пробовать ПЛК63 как Мастер будут ещё другие подводные камни.

melky
05.12.2024, 09:32
Записывать надо по единичным адресам. Читать из служебной области группой сразу все. Это вроде где-то в рэ указано было.

Durandesh
05.12.2024, 10:37
Записывать надо по единичным адресам. Читать из служебной области группой сразу все. Это вроде где-то в рэ указано было.

Вот это хотел узнать. Спасибо всем ещё раз!

Safron
30.01.2025, 12:30
Здравствуйте.
Подскажите почему компилятор ругается? ПЛК 63.
Хочу назначить прямую адресацию переменным Модбас для чтения их панелью оператора по интерфейсу RS-232. И что то пошло не так..
81642
81643

capzap
30.01.2025, 12:50
Здравствуйте.
Подскажите почему компилятор ругается? ПЛК 63.
81642

и где скрин конфигурации с адресами 48, 52 и 56

Валенок
30.01.2025, 13:19
...И что то пошло не так..
.. с момента как начали писать AT%

AT% - это скальпель
Судя по вопросу, вы в 63 - ребенок
Вы своему ребенку дадите в руки скальпель для поиграть?
И да. Сименсоводы обожают AT%. Бесмысленно и беспощадно


--
В 63 нет MD48. Там меркерной памяти очень мало (что-то в духе 0..3 или 0...7). На хрена она Вам?
Q?

Safron
30.01.2025, 14:20
Последний раз держал в руках плк 63 неск лет назад. И из описания не очевидно, что у ПЛК 63 нет меркерной памяти.
Получается, что только через SubMenu можно обратиться к нужной области памяти? как в этом примере ? 81651

Валенок
30.01.2025, 17:10
Откуда обратится?
Извне? Смысла в АТ нет виду особенностей регистровой адресации 63
Изнутри? Тем более в АТ смысла нет

Везде и всегда прямая адресации нужна в исключительных случаях. В остальных случаях это зло


Я тоже с 63 давно дела не имел, но его модбас это ключевая особенность. И такое можно забыть или лет через 20 или особо 63 и не копали или по склерозу