Здравствуйте,
подскажите, что возвращают функции чтения/записи данных по Modbus при работе с макросами для панели СП 310-р,
т.е. функции read, reads, write, writes?
Здравствуйте,
подскажите, что возвращают функции чтения/записи данных по Modbus при работе с макросами для панели СП 310-р,
т.е. функции read, reads, write, writes?
Добрый день.
Возвращают BOOL (TRUE - операция выполнена успешно, FALSE - что-то пошло не так).
Связь со мной: 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
Подскажите еще, почему синтаксис функции 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.
Связь со мной: 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
Ясно,
а есть какие-то ограничения при написании скриптов - их размер например, или может быть что-то еще?
Связь со мной: 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
А как определить размер?
Копируя код в блокнот например, и судить по размеру его файла?
Связь со мной: 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