На форуме обязательно:
  1. Заполнить свой профиль НА РУССКОМ ЯЗЫКЕ КИРИЛЛИЦЕЙ. См. Правила, п.2.d.
  2. Не писать свой вопрос в первую попавшуюся тему, а вместо этого создать свою. См. Правила, п.3.a.

Рекламу мы не размещаем ни на каких условиях.

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

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

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

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

Сообщение Bulatos » 16 май 2018, 15:59

Использую, например, 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 секунд:
и что вообще за ошибка?
У вас нет необходимых прав для просмотра вложений в этом сообщении.


Михайло
почётный участник форума
почётный участник форума
Сообщения: 2615
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
Благодарил (а): 1 раз
Поблагодарили: 75 раз
Контактная информация:

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

Сообщение Михайло » 16 май 2018, 19:05

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


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

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

Сообщение Bulatos » 16 май 2018, 19:41

какая память? Где здесь память?
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
Да, описание ошибки указывает на обращение "не туда". Но где я указываю на какие адреса?


Михайло
почётный участник форума
почётный участник форума
Сообщения: 2615
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
Благодарил (а): 1 раз
Поблагодарили: 75 раз
Контактная информация:

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

Сообщение Михайло » 17 май 2018, 04:13

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


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

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

Сообщение Bulatos » 17 май 2018, 14:34

в настройках СР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, не будет добавлять в мою телеграмму впереди двоеточие, заменять каждый мой байт на два байта и пр.? Или как есть отправит мою цепочку?


Михайло
почётный участник форума
почётный участник форума
Сообщения: 2615
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
Благодарил (а): 1 раз
Поблагодарили: 75 раз
Контактная информация:

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

Сообщение Михайло » 17 май 2018, 18:55

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

Аватара пользователя

Max Dark
здесь недавно
здесь недавно
Сообщения: 31
Зарегистрирован: 14 апр 2018, 00:10
Имя: Максим
Благодарил (а): 26 раз
Поблагодарили: 2 раза

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

Сообщение Max Dark » 17 май 2018, 21:36

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

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

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

Ответить

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