Чтение консистентных данных из распределенной переферии
Чтение консистентных данных из распределенной переферии
Хочу прочитать из модуля соединенного как Slave Profibus консистентные данные длиной 2а двойных слова. Использовал системную функцию SFC 14, указал на блок данных (на выходе 14 функции указал P#DB10.DBX0.0 byte , системная функция ругается, ставлю вместо 8 4 байта в поинтере замолкает. Вопрос: если кто-то знает как считать консистентные данные (не диагностические) с помощью SFC14 или каким нибудь другим способом, буду очень благодарен.
Чтение 8 байт из устройства по адресу 304 в блок данных начиная с байта 0
Запись 8 байт из блока данных начиная с байта 14 в устройство по адресу 304
Code: Select all
CALL "DPRD_DAT" //SFC14
LADDR :=W#16#130 //десятичный адрес 304 = 130hHEX
RET_VAL:=DB34.ErrorSFC14 // флаг ошибки в этом же блоке
RECORD :=P#DB34.DBX0.0 BYTE 8 //в блок данных начиная с байта 0
Code: Select all
CALL "DPWR_DAT" //SFC15
LADDR :=W#16#130 //304 in HEX
RECORD :=P#DB34.DBX14.0 BYTE 8 //из блока данных начиная с байта 14
RET_VAL:= DB34.ErrorSFC15 // флаг ошибки в этом же блоке
http://support.automation.siemens.com/W ... n/18325417
То есть для областей более одного DWORD = 4 байтам надо пользовать SFC 14 / 15The values that are read with the two instructions "L PIB 1" and "L PIW 2", for example, are not consistent.
However, the values are consistent if they are read in via "L PID 1".
If larger contiguous input areas (> 4 bytes) are to be read directly and consistently, then you can use SFC 14 (DPRD_DAT).
If larger contiguous input areas (> 4 bytes) are to be written directly and consistently, then you can use SFC 15 (DPWR_DAT).