Добрый день. Отправьте, пожалуйста, проекты для обоих устройств на support@owen.ru
Укажите версию прошивки ПЛК (можно посмотреть через PLC browser в Codesys, команда PLC Info).
Добрый день. Отправьте, пожалуйста, проекты для обоих устройств на support@owen.ru
Укажите версию прошивки ПЛК (можно посмотреть через PLC browser в Codesys, команда PLC Info).
Связь со мной: telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru (личка на форуме - не подходит)
Раздел CDS V3.5 на сайте | Основные темы по CDS V3.5 на форуме: Вопросы и ответы | Визуализация | Настройка обмена с другими устройствами
Repository Archive V3.5 SP4 (необходим для СПК207/СПК1хх без Eth/ПЛК3xx)
oscat.ru | Как обратиться в техподдержку? | Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | Проблема XY | Как правильно задавать вопросы | AnyDesk
Уважаемые сотрудники техподдержки!
Столкнулся с какой-то мистикой, поэтому прошу объяснить, не является ли ошибкой в документации на СП307 следующее
Код макроса: WORD ArrValue[2];
Reads(PLC, 2, MODBUS_RTU_REGS_4X, 4, 2, &ArrValue);
Разве не правильно будет записать
Reads(PLC, 2, MODBUS_RTU_REGS_4X, 4, 2, ArrValue);
или
Reads(PLC, 2, MODBUS_RTU_REGS_4X, 4, 2, &ArrValue[0]);
Насколько помню, адрес первого элемента массива в языке Си можно получить так, как я написал в своих двух примерах, а не как в справке.
Что это - какой-то особый Си или ошибка в документации?
При чтении в макросе двух массивов творилась мистика, когда начал читать все одним массивом стало нормально, но вот вопрос - а я вообще с памятью правильно ли работаю, не порчу ли что-либо системное и т.п.?
Это обычный С.
http://www.open-std.org/jtc1/sc22/wg...onaleV5.10.pdf
см. п. 6.5.3.2
Чтобы ответить на этот вопрос - нужен ваш проект и подробное пошаговое описание, как в нем воспроизвести "мистику".
Связь со мной: telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru (личка на форуме - не подходит)
Раздел CDS V3.5 на сайте | Основные темы по CDS V3.5 на форуме: Вопросы и ответы | Визуализация | Настройка обмена с другими устройствами
Repository Archive V3.5 SP4 (необходим для СПК207/СПК1хх без Eth/ПЛК3xx)
oscat.ru | Как обратиться в техподдержку? | Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | Проблема XY | Как правильно задавать вопросы | AnyDesk
Основная суть вопроса - не мистика, а получение адреса в Си. Проект Ведь, как понимаете, не только с СП307, поэтому достоверную причину "мистики" было бы бессовестно предлагать искать Вам.
Давайте вернемся к сути вопроса - это получение адреса массива. В документах, которые Вы предлагаете, писать могут что угодно, суть в другом, возможно, в моем заблуждении, или неправильной памяти?
Когда я делаю
int Var
а затем
&Var
я получаю адрес переменной Var
когда я делаю
int Var[10], то в силу своих, возможно, заблуждений, считаю, что для получения адреса первого элемента массива я должен в Си либо написать просто "Var", либо
что-то типа "&(Var[0])"
В реализации Си89 не так - просто да или нет?
Вы разработчики, Ваше слово - при использовании Вашей техники - закон. Вы говорите - делаем так, это работает - значит делаем так!
PS СП307 используется в проекте с ПЛК110, когда в объявленных модбас-переменных шли 8-битовые элементы (несколько пар), затем 2 байтовые, зачем одна 4-байтовая, затем снова двухбайтовые - с последними двухбайтовыми шла мистика. Просто выкинул 4- байтовую переменную, потом, возможно, вставлю ее в самый конец регистр Модбаса - когда она была в конце, все работало нормально. Для Вас это просто информация, я могу быть где-то неправ, где-то заблуждаться.
Последний раз редактировалось konst_smn; 08.08.2021 в 12:17.