PDA

Просмотр полной версии : ПЛК110. Опрос датчика давления Zet 7012-A по ModBus RTU



in37usd
31.08.2017, 18:43
есть датчик давления с выходом информации на шину MODBUS
хочу почитать его с помощью ПЛК110
может где есть готовый пример???

in37usd
31.08.2017, 19:09
есть датчик давления с выходом информации на шину MODBUS
хочу почитать его с помощью ПЛК110
может где есть готовый пример???
ST обычно пользуюсь

melky
31.08.2017, 20:28
проверьте работу через конфигуратор ПЛК. А примеры есть в темах с примерами программ.

lara197a
31.08.2017, 20:40
напишите. что за датчик.
без этого как вам помочь?
ни как.

in37usd
01.09.2017, 12:59
zet 7012-A

lara197a
01.09.2017, 13:41
https://yandex.ru/clck/jsredir?from=yandex.ru%3Bsearch%2F%3Bweb%3B%3B&text=&etext=1531.uEpv_zQC6kLEjBVfghtGSq-Zq49_BFJUkG7ozCFA_z3HFGfcNifyyMWoCxQj_SSxu3mV8NpoR cR2ZWRrAuFjHacaD4QXZZ7WnAargjvx14N1UCPZ7QUduboeFMV StJyf.2d4b288197aa71dc593dd0b53c40288c62927a83&uuid=&state=H4h8uvWmGgzSQA8WTiQiw8biyXbKMlq7HT_3iJ1Q09UP OEeP7H_NxRtliRg1GZmyVV-YgjXYLzwqmOmRoUn0mWmM7KTf0dk2S51noAe2H9E,&&cst=AiuY0DBWFJ5eVd_Onia6xgr6MQgJK1iZKki0WZ9AAwBQx5 iAFwXRjfG2Nno6J2DnHbPok38VcJNmcxBJCvvOGVNXUdfF5Uac 21X-ZFOH9htJ6HHgNi_REHMBIkvuc__OkZQI7BkQ6bz_FuE2Wbt7Sn GUcLLPu5JV6hD3PRHzGHYaeHXo2vnIu06dMJWCqC0FZcfyyFSn qt2QEMdMYBHtguRmrXnHz6P44LZV4wId8CAxM-O0pkVVZXRdQHCNo70fipstgcu2fFMxEI25n5Zy8zs_ZYSv5hSi ojrrv2Tu6agumYFpr4bI_Fs-4dKvQacIn3zAAeX2T9-927Ua6r19jbo-ODJ9QClc0evdCCCcE05NTfr8USgm6Y19YYjn-QfzUJt51TtXBPq8iLQCF4a99S7d0MLnW6jFIV5_JemeKBiibkP p6IRwxd9L_m7HWc1IyHVg5EdIg78DKfhWYbboFUeplKptFpt12 VKsnmNH140CBI8oVH8MLpqg8j0jRDHuS2m9tgVojEYDWRRMDEJ XohU56XdK8DrWiaHqXmuB1sKbwW1Bqc66b0epADzL9Hz4VnO9p Vq1iRn0cqmPQSSmG8LdxakGl-kw0NTBbDeQincSCXR5zECNHwapucxh1pJsNuXLPiZoLeNKPwV9 7sg_5nK4nMez09qzu-lnsQAixpbF7CwEYxvrEo99JlmmkKlSN-JAj5M2G91YYwuOj6bKSAZi0JPSsBP_9YeUi-_lRyc,&data=UlNrNmk5WktYejR0eWJFYk1LdmtxZ2gzb1dWSUowN2M1T W4yd2lYS2xaZC1BRlc5Rk4tS0dEaWpqY3NHamdEUVViZm41STh nZlFVXy1kVjFsb1FSc0xPa2M0ZjdKaVJnNnhieGJYMF9IUm85X 2kzUVlDeFVJcWZub2NpMFRRV3ZhRk8xZktPU3VOQUVOV24tZTV KazBlQlpLNHZKaTFpTg,,&sign=28a42ce814b2f44f80b00438a43b6633&keyno=0&b64e=2&ref=orjY4mGPRjk5boDnW0uvlrrd71vZw9kpVBUyA8nmgRHcyb nFwegNQGziDFAHlcI6KSs4kVG6SRcJKEaVsZtJKh6jyw8YtGEV 1aTrAf5LW_4OgVXfIqXSnib82726spG-hgD4joeJNcKYV9NTYYc5L4lY7o46WWivtGRlR8zHc8Psem5TfO bbv8YWeFvPMmNQn1gz6aJ4gn5qjruD-GjBkwEyGaHj-s0vrEU8YmX4H-7OuM6BuuFRwN5Uq-5y2PK61CQqJQnfpLTVXVN1eGhsMex3aUV-k1X9jtvaDLwnYnQAzsQZ3Gn6kLB6g8d3e_qD&l10n=ru&cts=1504262268196&mc=5.0828042685127475

Не забудьте подать внешнее питание.

in37usd
04.09.2017, 08:07
фирма предлагает так:

https://zetlab.com/opisanie-protokola-modbus-moduley-zetsensor/

но там расчет CRC16 c помощью двух массивов данных в 16 разрядном формате
так сразу возникает вопрос

- какой формат данных ПЛК110 "примет" 16 разрядный формат массива?
в принципе этот массив можно преобразовать в тип данных INT
или лучше считать CRC16 по другим программам?
или еще вариант какой получше?
принято решение закупить именно эти датчики

capzap
04.09.2017, 08:27
фирма предлагает так:

https://zetlab.com/opisanie-protokola-modbus-moduley-zetsensor/

но там расчет CRC16 c помощью двух массивов данных в 16 разрядном формате
так сразу возникает вопрос

- какой формат данных ПЛК110 "примет" 16 разрядный формат массива?
в принципе этот массив можно преобразовать в тип данных INT
или лучше считать CRC16 по другим программам?
или еще вариант какой получше?
принято решение закупить именно эти датчики

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

in37usd
04.09.2017, 08:28
в принципе этот массив можно преобразовать в тип данных INT- это имеется в виду преобразовать за
пределами CODE SYS и ПЛК110

in37usd
04.09.2017, 08:42
я задал вопрос продавцам по таблице регистров датчика,
но скорее всего надо будет создавать цепочку байт запроса к датчику в соответствии с протоколом, который они
предложили а таблицу регистров датчика никто не предоставит
.................................................. ..................................
какой адрес датчика установлен в датчике на заводе???
я такой вопрос задал и продавцам тоже
но может и тут кто подскажет, уважаемые!

capzap
04.09.2017, 08:53
я задал вопрос продавцам по таблице регистров датчика,
но скорее всего надо будет создавать цепочку байт запроса к датчику в соответствии с протоколом, который они
предложили а таблицу регистров датчика никто не предоставит
скорее всего Вы задали продавцам не правильный вопрос, протокол подразумевает под собой, опрос определенной области памяти с помощью функций, начальный адрес области где находятся данные и количество слов, под тот тип данных которые требуется получить, чтоб в канале передачи данных устранить возможные сбои запрос/ответ дополняются контрольной суммой, её можно вычислять как функциями, так и таблицей готовых значений. Так вот весь этот процесс автоматизирован уже давно, требуется знать только начальный адрес и количество слов(или хотя бы тип данных)

capzap
04.09.2017, 09:08
какой адрес датчика установлен в датчике на заводе???
я такой вопрос задал и продавцам тоже
но может и тут кто подскажет, уважаемые!
заходите к ним на сайт и ищите Формирование таблицы адресов Modbus

in37usd
04.09.2017, 09:14
я задал вопрос продавцам по таблице регистров датчика,
но скорее всего надо будет создавать цепочку байт запроса к датчику в соответствии с протоколом, который они
предложили а таблицу регистров датчика никто не предоставит
.................................................. ..................................
какой адрес датчика установлен в датчике на заводе???
я такой вопрос задал и продавцам тоже
но может и тут кто подскажет, уважаемые!
//////////////////////////////////////////////////////////////////////
КАК НА ПЛК110 СЧИТАТЬ ПОПРОЩЕ CRC16 ???В ST имеется в виду!!

in37usd
04.09.2017, 09:19
а они приводят коды функций modbus -ZETLAB
0х03 - команда чтения структуры данных(значения)
0х06 -команда чтения структуры данных (описателей)
0х04- команда запроса потоковых данных(Float)
0x14- команда запроса потоковых данных(ырщке)
0х10- команда записи данных
Команда чтения структуры данных (значения (0x03) или описателей (0x06))

Данные команды предназначены для чтения общей информации о датчике.

Структура команды
Адрес обращения – адрес, по которому начинаем считывать данные;
Квант обращения – количество данных, которое хотим считать (в словах (слово – 2 байта));
Кол-во байт для обращения – количество данных, которое хотим считать в байтах;
Данные – данное поле принимает значение только в ответе на данную команду. Хранит в себе считанные данные.
Команда запроса потоковых данных (float (0x04) или short (0x14))

Данные команды предназначены для чтения данных с датчика. Команда 0x04 – данные выравниваются по границе в 4 байта, 0x14 – по границе в 2 байта.

Нода – конкретное устройство, имеющее свой уникальный адрес в сети. В устройствах на шине RS485, одна нода может иметь несколько каналов, в отличии, от устройств на шине CAN, где каждый канал имеет свой адрес ноды.

Структура команды
Для CAN:

Адрес обращения – не имеет значения;
Квант обращения – размер данных, которые хотим считать в словах;
Кол-во байт для обращения – количество данных, которые хотим считать в байтах;
Данные – данное поле принимает значение только в ответе на данную команду.
Для RS485:

Адрес обращения – адрес на поле “значение канала (dev_structure.channel.value)”, в структуре “канал (dev_structure.channel)”;
Квант обращения – размер данных, которые хотим считать в словах;
Кол-во байт для обращения – количество данных, которые хотим считать в байтах;
Данные – данное поле принимает значение только в ответе на данную команду.
Команда записи данных (0x10)

Данная команда предназначена для записи данных, изменения конфигурации датчика.

Структура команды
Адрес обращения – адрес, по которому начинаем записывать данные;
Квант обращения – количество данных, которое хотим записать (в словах);
Кол-во байт для обращения – количество данных, которое хотим записать в байтах;
Данные – хранит в себе записываемые данные.

in37usd
04.09.2017, 09:28
адрес датчика попробую 0 , если не пойдет, то попробую 1

in37usd
04.09.2017, 09:33
CRC приходилось считать на PIC16F876- на Си- вопросов не было

lara197a
04.09.2017, 09:48
Вы хоть читаете, что вам пишут?
В пятницу прислал вам ссылку на документ.
В нем написано:
Примечание: таблицы адресов регистров для датчиков ZET70xx представлены на сайте http://zetlab.ru/,
Вам нужна таблица как на рис.8, для вашего датчика.
Можно попробовать использовать из примера в документе.
Они обычно однотипные.
Создайте узел модбас в конфигураторе и пееменную для чтения 4 байт.
считайте по адресу 20 (или 4 не очень понятно) текущее значение.
ЗЫ адреса прибора в сети задаются, судя по таблице от 1 до 63. По умолчанию обычно 1.
Скрость 19200 1 8 о

melky
04.09.2017, 09:55
Должны же быть примеры на ST для расчета CRC.
Вот пример на ST но тут полином кажется не Modbus-овсий, но может код поможет.


Функция crc16 по полиному 0x1021 в CoDeSys на ST:

-------------------------------
FUNCTION crc16_1021 : WORD

VAR_INPUT
pcBlock: POINTER TO BYTE;
len: WORD;
END_VAR

VAR
crc, i, w: WORD;
END_VAR
-------------------------------
crc := 16#FFFF;
WHILE (LEN > 0) DO
w := pcBlock^;
pcBlock := pcBlock + 1;
w := SHL(w,8);
crc := crc XOR w;
FOR i := 0 TO 7 DO
IF ((crc AND 16#8000) <> 0) THEN
crc := SHL(crc,1) XOR 16#1021;
ELSE
crc := SHL(crc,1);
END_IF
END_FOR
LEN := LEN - 1;
END_WHILE
crc16_1021 := crc;
RETURN;

capzap
04.09.2017, 10:26
Должны же быть примеры на ST для расчета CRC.
Вот пример на ST но тут полином кажется не Modbus-овсий, но может код поможет.

ну вот зачем это писать, если она ни как не связана с модбас, есть же библиотека modbus.lib в ней гарантированно существует блок отвечающий за формирование контрольной суммы. Уж если хотите дать материалы для развития, то сошлитесь на оскат бибку, там имеется универсальный вычислитель контрольных сумм

in37usd
04.09.2017, 11:48
lara197aпишет:
"Вам нужна таблица как на рис.8, для вашего датчика."


не нахожу таблицу!!!!!!!!

а скорость обмена для 485 они сообщают 57600
parity Enable :1
буду читать 4 байта по адресу 20 (или 4) адрес прибора в сети 1
..........................................
а если мне надо читать 2 датчика поочередно, то их можно подключить к выходам
один к А1-B1
второй к A2-В2 но с одинаковым адресом "1" ??
.................................................. ..............................
0х03 - команда чтения структуры данных(значения)
0х06 -команда чтения структуры данных (описателей)
0х04- команда запроса потоковых данных(Float)
0x14- команда запроса потоковых данных(short)
0х10- команда записи данных
.........планирую так
0х01- адрес устройства

0х04-команда запроса потоковых данных(Float)
или
0х14-команда запроса потоковых данных(short)

0х00 0х20- адрес обращения
или
0х00 0х04
.........
0х00 0х04- количество слов
далее контрольная сумма
это когда еще датчики прибудут!

lara197a
04.09.2017, 12:08
в конфигураторе измените адреса приборов.
или после установки связи запишите в прибор новый адрес.
можно конечно и на другой порт.

скачайте документ, рис.8
https://yandex.ru/clck/jsredir?from=yandex.ru%3Bsearch%2F%3Bweb%3B%3B&text=&etext=1531.uEpv_zQC6kLEjBVfghtGSq-Zq49_BFJUkG7ozCFA_z3HFGfcNifyyMWoCxQj_SSxu3mV8NpoR cR2ZWRrAuFjHacaD4QXZZ7WnAargjvx14N1UCPZ7QUduboeFMV StJyf.2d4b288197aa71dc593dd0b53c40288c62927a83&uuid=&state=H4h8uvWmGgzSQA8WTiQiw8biyXbKMlq7HT_3iJ1Q09UP OEeP7H_NxRtliRg1GZmyVV-YgjXYLzwqmOmRoUn0mWmM7KTf0dk2S51noAe2H9E,&&cst=AiuY0DBWFJ5eVd_Onia6xgr6MQgJK1iZKki0WZ9AAwBQx5 iAFwXRjfG2Nno6J2DnHbPok38VcJNmcxBJCvvOGVNXUdfF5Uac 21X-ZFOH9htJ6HHgNi_REHMBIkvuc__OkZQI7BkQ6bz_FuE2Wbt7Sn GUcLLPu5JV6hD3PRHzGHYaeHXo2vnIu06dMJWCqC0FZcfyyFSn qt2QEMdMYBHtguRmrXnHz6P44LZV4wId8CAxM-O0pkVVZXRdQHCNo70fipstgcu2fFMxEI25n5Zy8zs_ZYSv5hSi ojrrv2Tu6agumYFpr4bI_Fs-4dKvQacIn3zAAeX2T9-927Ua6r19jbo-ODJ9QClc0evdCCCcE05NTfr8USgm6Y19YYjn-QfzUJt51TtXBPq8iLQCF4a99S7d0MLnW6jFIV5_JemeKBiibkP p6IRwxd9L_m7HWc1IyHVg5EdIg78DKfhWYbboFUeplKptFpt12 VKsnmNH140CBI8oVH8MLpqg8j0jRDHuS2m9tgVojEYDWRRMDEJ XohU56XdK8DrWiaHqXmuB1sKbwW1Bqc66b0epADzL9Hz4VnO9p Vq1iRn0cqmPQSSmG8LdxakGl-kw0NTBbDeQincSCXR5zECNHwapucxh1pJsNuXLPiZoLeNKPwV9 7sg_5nK4nMez09qzu-lnsQAixpbF7CwEYxvrEo99JlmmkKlSN-JAj5M2G91YYwuOj6bKSAZi0JPSsBP_9YeUi-_lRyc,&data=UlNrNmk5WktYejR0eWJFYk1LdmtxZ2gzb1dWSUowN2M1T W4yd2lYS2xaZC1BRlc5Rk4tS0dEaWpqY3NHamdEUVViZm41STh nZlFVXy1kVjFsb1FSc0xPa2M0ZjdKaVJnNnhieGJYMF9IUm85X 2kzUVlDeFVJcWZub2NpMFRRV3ZhRk8xZktPU3VOQUVOV24tZTV KazBlQlpLNHZKaTFpTg,,&sign=28a42ce814b2f44f80b00438a43b6633&keyno=0&b64e=2&ref=orjY4mGPRjk5boDnW0uvlrrd71vZw9kpVBUyA8nmgRHcyb nFwegNQGziDFAHlcI6KSs4kVG6SRcJKEaVsZtJKh6jyw8YtGEV 1aTrAf5LW_4OgVXfIqXSnib82726spG-hgD4joeJNcKYV9NTYYc5L4lY7o46WWivtGRlR8zHc8Psem5TfO bbv8YWeFvPMmNQn1gz6aJ4gn5qjruD-GjBkwEyGaHj-s0vrEU8YmX4H-7OuM6BuuFRwN5Uq-5y2PK61CQqJQnfpLTVXVN1eGhsMex3aUV-k1X9jtvaDLwnYnQAzsQZ3Gn6kLB6g8d3e_qD&l10n=ru&cts=1504262268196&mc=5.0828042685127475

melky
04.09.2017, 12:42
capzap так я и написал не в качестве кода для использования а для примера. Насколько помню, тут надо полином поменять и исходное значение при расчете и получим все тот же Modbus CRC16.
Где-то еще был код с таблицей на ST но найти не смог. Не все же за автора выискивать. А этот код у меня просто на компе валялся.
В Oscat там очень большая библиотека, так как там куча вариантов контрольных сумм и имеет недостаток, только от 4-х байт рассчет если не ошибаюсь.

in37usd
04.09.2017, 13:55
capzap так я и написал не в качестве кода для использования а для примера. Насколько помню, тут надо полином поменять и исходное значение при расчете и получим все тот же Modbus CRC16.
Где-то еще был код с таблицей на ST но найти не смог. Не все же за автора выискивать. А этот код у меня просто на компе валялся.
В Oscat там очень большая библиотека, так как там куча вариантов контрольных сумм и имеет недостаток, только от 4-х байт рассчет если не ошибаюсь.

CRC online калькулятор нашел !!
020400040004 -> 3bb0
но у ZETLAB почему то записано b0 3b
https://www.lammertbies.nl/comm/info/crc-calculation.html

Евгений Кислов
04.09.2017, 14:22
См. википедию ("Note about the CRC").

32962

https://en.wikipedia.org/wiki/Modbus#Frame_format

melky
04.09.2017, 15:15
in37usd потому что старшим(младшим) байтом АЛГА.

in37usd
04.09.2017, 22:33
[QUOTE=melky;257163]in37usd потому что старшим(младшим) байтом АЛГА.[/QUOT
Понятно
допустим такой вариант(Их уже вырисовалось вроде 4шт) запроса к датчику

010400200004F003
ВОПРОС- как сохранять в программе лучше?
как массив- не знаю шеснадцатеричный формат как записать в массив- какой тип данных брать ???
может как строку ?
В любом случае как потом "толкать " в MODBUS MASTER- "байт за байтом?"
где пример посмотреть?

capzap
05.09.2017, 08:08
где пример посмотреть?сперва лучше с этим ознакомиться
http://www.kipshop.ru/CoDeSys/steps/owen_plc-configuration.pdf раздел 3.2

in37usd
05.09.2017, 10:49
сперва лучше с этим ознакомиться
http://www.kipshop.ru/CoDeSys/steps/owen_plc-configuration.pdf раздел 3.2
по 16 разрядным данным- придумал вроде!
где купить быстрее Modbus датчик давления 10 атм,0,1% ????????????????
хотим купить быстрее!!!!!!!!!!
Спасибо за консультацию!!

melky
05.09.2017, 11:03
Простите, а чего там придумывать ? 0x08 загнали в байт и все. или как там в CDS правильно указывать hex-ы, дворды и так далее. В справке посмотрите. Иногда CDS сам ругается и предлагает точную запись, чтобы он не размышлял что это...

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

in37usd
06.09.2017, 21:22
китайский вариант датчика 485 modbus rtu

0х03- function code
0x0004- data start adres
1- number of data
2 - data bytes
-32768-327767- data range
measured output values- instruction significance

может тут истина??