PDA

Просмотр полной версии : ПЛК 100, регистры и CRC



danko
06.06.2011, 12:07
Мы работаем с контроллерами ПЛК 100, возникла необходимость программировать их по интерфейсу RS232, RS485 и LAN.

Насколько мы поняли, это возможно. И библиотеки какие-то есть, но вопрос не по этому.

1. Как узнать адрес контроллера, где смотреть адрес контроллера в CodeSys, например или где-то в другой программе?

2. Какие адреса регистров и как узнать их номера в CodeSys, например. То, что там есть конфигурационный файл это понятно, но конкретно как узнать адрес регистра и адрес ячейки, то, что требуется для посылания комманды по протоколу Modbus?

3. Почему в англоязычной оригинальной версии протокола Modbus контрольная сумма CRC считается на первых шагах так
- выполняется операция XOR над первым байтом сообщения и младшим байтом CRC-регистра!!!!!
- а в рускоязычном протоколе Modbus контрольная сумма считается немного иначе: выполняется операция XOR над первым байтом сообщения и старшим байтом CRC-регистра!!!!!

Николаев Андрей
06.06.2011, 12:34
1. Посмотрите РП на прибор. Многие ответы появятся.
2. Для самостоятельной работы с портами есть библиотеки SysLibCom и UNM. Пример работы с ними - на форуме.

danko
06.06.2011, 12:39
1. Посмотрите РП на прибор. Многие ответы появятся.
Не появятся. Прочитал от начала и до конца РП. Нет в РП ответов на мои вопросы. Я для этого и задал вопрос в этом месте. Ответ скорее всего очевиден, но я не знаю какой.
Вы ответили мне тоже самое, что пойди поищи в гугле.

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

Как послать байт данных и использовать библиотеки я знал ещё несколько лет назад.
Вопрос был в том что послать и где узнать что послать. И почему не так как надо подсчитывается контрольная суммма.

Пожалуйста кто может подскажите. Все вопросы ещё актуальны.

Николаев Андрей
06.06.2011, 15:54
Ну если бы хотел послать... к гуглу, так бы и сделал. А я дал Вам единственный резонный ответ.
http://www.owen.ru/uploads/plc_configuration_owen__.pdf

Что конкретно не понятно в описании где и как задается адрес для различных подключений? стр.45
Что конкретно не понятно в словах о том, что Вы сами формируете память ModBus и соответственно сами подсчитываете номера регистров, учитывая выравнивание... стр.56
Если бы Вы сказали - не понял с выравниванием, это одно. Когда Вы говорите, что нету ответов - документ Вы не открывали.
Извините, наболело.

На сколько я знаю алгоритм обмена, в том числе CRC брались с www.modbus.org При использовании Конфигурации ПЛК это вопрос скорее к опрашивающей стороне. Как в прочем и при использовании библиотеки ModBus.lib
А что Вы понимаете под русскоязычной и англоязычной версией протокола ModBus

danko
07.06.2011, 09:29
Какая литература, так и ищут.

danko
07.06.2011, 09:36
По поводу CRC. Если вы делаете по англоязычной оригинальной версии подсчёт, то пожалуйста выложите вариант подсчёта CRC, который Вы используется при работе контроллера, чтобы я смог задать дальше конкретный вопрос, чтобы не тыкать пальцем в небо, можете код на любом языке представить, хотя бы на Си.
А ещё лучше привести тут текст 2-го пункта расчёта CRC, который вы используете, потому что кто то сделал ошибку и я хочу в этом разобраться.

danko
07.06.2011, 12:59
capzap
Я нашёл ошибку в переводе и хочу её исправить.
Уважаемый я уже сам написал код расчёта CRC на Си по англоязычному варианту, добился передачи данных и хотел поправить ошибку, чтобы другие не ошиблись.
Вы пожалуйста внимательно перечитывайте мои вопросы. Первое с чем я столкнулся на форуме, это невнимательное чтение вопросов.
Кроме того, форумы существуют, чтобы форумчане общались между собой и получали ответы на свои вопросы, но никак не для того, чтобы переадресовывать на другие темы или другие источники.
Википедия имеет своё назначение, форум своё, распространённая ошибка зачастую - забывать что форум для общения и решения вопросов на месте, а не переадресации. Это касается не только этого форума, а других также.
Так что я бы посоветовал вам самим идти на википедию и читать, а я хочу остаться на форуме и общаться в форуме.

danko
07.06.2011, 13:02
http://www.owen.ru/uploads/plc_configuration_owen__.pdf
стр.45
стр.56

это была полезная информация, которую я искал, но в виду огромного объёма литературы Овен не нашёл сам. Спасибо. Хватило 30 минут чтобы решить первые два вопроса.
Остальные ваши комментарии по поводу рассуждений моих способностей были лишними и не относились к делу. Был задан вопрос и славабогу был найден ответ. Не считая CRC.

danko
07.06.2011, 13:10
А что Вы понимаете под русскоязычной и англоязычной версией протокола ModBus

Я искал на этом форуме как рассчитать CRC, потому что в оригинале протокола Modbus есть такой пункт:

...
2. Exclusive OR the first 8–bit byte of the message with the low–order byte
of the 16–bit CRC register, putting the result in the CRC register.
...

А на этом форуме я встретил пример вычисления CRC, предоставленный модераторами из переведенного кем-то один раз (и потом удачно всеми скопированном кому не лень) описания Modbus в таком виде:

...
2. Выполнить операцию XOR над первым байтом данных и старшим байтом байтом регистра. Поместить результат в регистр.
...

Т.е. в оригинале выполняется операция над младшим байтом регистра (low-order - низкий, младший), а в переводе над старшим. Что противоречит одно одному. Это ошибка в переводе, вывод - если модератор об этом не слышал, то либо никто не программирует ПЛК, либо все допускают ошибки и ни у кого ничего не работает.

Николаев Андрей
07.06.2011, 17:18
единственне за что Вас можно похвалить, это то что Вы самостоятельно "изобретаете велосипед", терминология у Вас страдает.

Господа, прекращайте. Всегда есть такой Данко. Это нормально. Без этого было бы скучно...

To Danko: Спасибо за Вашу критику, мы постараемся как то более понятно расположить один из двух основных документов по работе с контроллером, сейчас расположенных "в корне" что на диске, что на сайте.

Рад, что мы во всем разобрались.

danko
08.06.2011, 14:44
Рад, что мы во всем разобрались.

Не во всём!
Спасибо что вы пообещали разместить документы по контроллеру, но вопрос был в расчёте CRC, вопрос остался открытым, как вы расчитываете CRC, приведите пожалуйста ваш пример, чтобы избежать недоразумений в разработке в дальнейшем.

Николаев Андрей
08.06.2011, 15:41
если бы Вы не сопротивлялись и заглянули в библиотеку modbus.lib там есть ФБ расчета контрольной суммы

+1 :cool::cool: :cool:

danko
11.06.2011, 09:32
Модератор, вы наотрез отказываетесь сотрудничать, теперь придётся только звонить тратить деньги на телефон, чтобы выяснить этот вопрос, я тут хотел обсудить расчёт CRC, но вы упорно отказываетесь.
Просьба была уже неоднократно, ещё с самого первого нашего поста выложить расчёт CRC в этой теме форума.

danko
11.06.2011, 09:34
Можно было просто сказать что вы некомпетентны в этом вопросе и мы бы не тратили на обсуждение время.

Николаев Андрей
13.06.2011, 12:25
Предлагаю не начинать выяснять у кого больше компетентность...
1. Вы так и не сформулировали что и зачем Вам надо.
2. Я говорил и повторю еще раз - подсчет CRC взят с сайта ModBus.org

Вам код нужен? Самому сложно написать - хотите, чтобы мы свой отдали? Не жалко - пишите на plc@owen.ru - попробуем как то помочь.
Код в CoDeSys или во внешней программе?

Закон формирования CRC мне и не нужно знать. Это вне моей компетенции, для этого у нас есть отдел программистов.

danko
14.06.2011, 14:40
Я думал, что вы как то связаны с отделом программистов и можете предоставить алгоритм расчёта CRC.
Ладно, не нужно уже, они наверно пользовались оригинальной англоязычной версией Modbus, я проверил вашу библиотеку, там правильно считается CRC, так как положено. Переводы Modbus на русский возможно делались не вами и не имеют отношения к вашей библиотеке, я думал обратное. Вопрос закрыт. Спасибо.

Код во внешней программе, VC++. Но это уже не относится к этой теме.

fren
21.02.2018, 11:41
я бы посоветовал отправится на википедию прочитать что такое модбас. Сперва формируется пакет вычисляется контрольная сумма а потом уже отправляется в зависимости от производителя либо младшим либо старшим байтом в перед

А в какой программе это всё делается,не думаю в самой кодесисе, я думаю делается в отдельной спец. программе?

capzap
21.02.2018, 11:52
А в какой программе это всё делается,не думаю в самой кодесисе, я думаю делается в отдельной спец. программе?

http://www.owen.ru/forum/showthread.php?t=10714&p=62615&viewfull=1#post62615