Здравствуйте,
подскажите, что возвращают функции чтения/записи данных по Modbus при работе с макросами для панели СП 310-р,
т.е. функции read, reads, write, writes?
Здравствуйте,
подскажите, что возвращают функции чтения/записи данных по Modbus при работе с макросами для панели СП 310-р,
т.е. функции read, reads, write, writes?
Добрый день.
Возвращают BOOL (TRUE - операция выполнена успешно, FALSE - что-то пошло не так).
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
Подскажите еще, почему синтаксис функции Reads -
Reads(PortName, SlaveID, DeviceRegType, Adr, Length, &ArrVar);
в руководстве пользователя, требует взятия адреса переменной массива, а функция Writes -
Writes(PortName, SlaveID, DeviceRegType, Adr, Length, ArrVar);
не требует?
Ведь они объявлены одинаково:
typedef BOOL (*MacroFReads)(int comID, int staID, int objType, int add1, int regs, void* pRegs);
typedef BOOL (*MacroFWrites)(int comID, int staID, int objType, int add1, int regs, void* pRegs);
struct MACRO_CALL_BACK
{
WORD* pPSW;
BYTE* pPSB;
MacroFRead pRead;
MacroFReads pReads;
MacroFWrite pWrite;
MacroFWrites pWrites;
..................
}Macro;
#define Reads (Macro.pReads)
#define Write (Macro.pWrite)
Имя массива это же указатель на первый его элемент, т.е. содержит адрес первого элемента массива,
а при вызове Reads получается передается адрес этого указателя.
Можно вызывать Reads вот так:
WORD arrReadModbusRtu[62];
Reads(PLC,1,MODBUS_RTU_REG_4X,0,62,arrReadModbusRtu);
Можно, не вопрос. А теперь попробуйте вот это:
и это:Код:// копируем DWORD PSW256-257 в PSW300-301 Reads(HMI_LOCAL_MCH, 0, TYPE_PSW, 256, 2, PSW[300]);
Чтобы не вдаваться в мало кому интересные подробности - в документации приведен универсальный вариант.Код:// копируем DWORD PSW256-257 в PSW300-301 Reads(HMI_LOCAL_MCH, 0, TYPE_PSW, 256, 2, &PSW[300]);
Последний раз редактировалось Евгений Кислов; 28.08.2018 в 13:38.
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
Ясно,
а есть какие-то ограничения при написании скриптов - их размер например, или может быть что-то еще?
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
А как определить размер?
Копируя код в блокнот например, и судить по размеру его файла?
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk