1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

какая разница, какой протокол?

RS-485, ProfiBUS, 4-20 mA, Wi-Fi, GSM и так далее
Ответить

Автор темы
Bulatos
здесь недавно
здесь недавно
Сообщения: 11
Зарегистрирован: 27 дек 2016, 06:12
Имя: Булат
Страна: Казахстан
город/регион: Алма-Ата

какая разница, какой протокол?

Сообщение Bulatos »

Использую, например, CP441-1. Утверждается, что он не поддерживает Modbus-RTU, а только Modbus-ASCII. Мне нужен Modbus-RTU.
Мне непонятно: вот я сформирую нужную последовательность байтов, добавлю CRC и выплюну это посредством библиотечного FB8 - почему не должно работать? Добавляет ли к моей телеграмме что-нибудь CP441-1? Если да, то что? Подскажите, пожалуйста. Тогда я эту добавку просто учту в подсчете CRC.
Еще проблема (см.фото во вложении):
- почему у CP441-1 только Input-адрес, и почему он один, а не диапазон (менял стартовый, но за ним меняется и End-вый)?
- почему нет Output-адресов?
- задаю в программе Степ-7 в блоке FB8 LADDR=8191, в диагностическом буфере ошибка, и адрес указан 8201. Откуда он?
В чем ошибка, и что делать?

Отправлено спустя 1 минуту 47 секунд:
и что вообще за ошибка?
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Михайло
почётный участник форума
почётный участник форума
Сообщения: 3559
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 6 раз
Поблагодарили: 253 раза

какая разница, какой протокол?

Сообщение Михайло »

Ошибка типичная - обращение к памяти за пределами допустимого диапазона.

Автор темы
Bulatos
здесь недавно
здесь недавно
Сообщения: 11
Зарегистрирован: 27 дек 2016, 06:12
Имя: Булат
Страна: Казахстан
город/регион: Алма-Ата

какая разница, какой протокол?

Сообщение Bulatos »

какая память? Где здесь память?
CALL "P_SND_RK" , DB1
SF :='S'
REQ :=DB2.DBX0.3
R :=DB2.DBX0.4
LADDR :=8191
DB_NO :=4
DBB_NO :=0
LEN :=8 //36
R_CPU_NO:=
R_TYP :=
R_NO :=
R_OFFSET:=
R_CF_BYT:=
R_CF_BIT:=
DONE :=DB2.DBX0.0
ERROR :=DB2.DBX0.1
STATUS :=DB4.DBW2
Да, описание ошибки указывает на обращение "не туда". Но где я указываю на какие адреса?

Михайло
почётный участник форума
почётный участник форума
Сообщения: 3559
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 6 раз
Поблагодарили: 253 раза

какая разница, какой протокол?

Сообщение Михайло »

Bulatos писал(а): 16 май 2018, 19:41 LADDR :=8191
DB_NO :=4
DBB_NO :=0
LEN :=8 //36
Начиная с адреса 8191 берутся 8 байт. Откуда они там возьмутся?

Автор темы
Bulatos
здесь недавно
здесь недавно
Сообщения: 11
Зарегистрирован: 27 дек 2016, 06:12
Имя: Булат
Страна: Казахстан
город/регион: Алма-Ата

какая разница, какой протокол?

Сообщение Bulatos »

в настройках СР441-1 есть (видно на фото): Inputs - Start=8191, End=8191. А Outputs вообще нет. Что это все значит?
В приведенном FB8 блоке:
DB_NO=4 (брать из DB4);
DBB_NO=0 (начиная с DBB0);
LEN=8 (восемь байт).
Не понимаю, причем тут адрес 8191?

Отправлено спустя 1 минуту 1 секунду:
не может же быть, что возможно передать только один байт!?

Отправлено спустя 2 часа 5 минут 23 секунды:
ладно, все-таки у меня первый вопрос остается. Могу я сформировать цепочку байтов, добавить CRC и выкинуть посредством библиотечного блока SEND телеграмму Modbus-RTU через СР441-1? Этот СР441-1, поскольку заточен для ASCII, не будет добавлять в мою телеграмму впереди двоеточие, заменять каждый мой байт на два байта и пр.? Или как есть отправит мою цепочку?

Михайло
почётный участник форума
почётный участник форума
Сообщения: 3559
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 6 раз
Поблагодарили: 253 раза

какая разница, какой протокол?

Сообщение Михайло »

Попробуйте Len=1, вдруг ошибка уйдёт и сразу всё встанет на свои места. :good:
Аватара пользователя

Max Dark
здесь недавно
здесь недавно
Сообщения: 33
Зарегистрирован: 14 апр 2018, 00:10
Имя: Максим
Страна: Россия
город/регион: ru->region[33]
Благодарил (а): 29 раз
Поблагодарили: 3 раза

какая разница, какой протокол?

Сообщение Max Dark »

Bulatos писал(а): 16 май 2018, 16:01 вот я сформирую нужную последовательность байтов
Думаю что не прокатит: как я понимаю, ASCII - это передача текстом, а при текстовом протоколе есть ограничения на кодировку символов.
В добавок, некоторые символы могут иметь специальное значение в этом протоколе.
То есть двоичные данные без специального кодирования через него не передать.

Ярким примером текстового протокола является HTTP

Честно скажу: с Modbus-ASCII не знаком, могу ошибаться.
Ответить

Вернуться в «Интерфейсы, протоколы, связь»