Чтение консистентных данных из распределенной переферии

Промышленные Логические Контроллеры SIMATIC S7-200/300/400
konstant5
Posts: 6
Joined: Sat Dec 24, 2005 4:30 pm

Чтение консистентных данных из распределенной переферии

Post by konstant5 »

Хочу прочитать из модуля соединенного как Slave Profibus консистентные данные длиной 2а двойных слова. Использовал системную функцию SFC 14, указал на блок данных (на выходе 14 функции указал P#DB10.DBX0.0 byte 8), системная функция ругается, ставлю вместо 8 4 байта в поинтере замолкает. Вопрос: если кто-то знает как считать консистентные данные (не диагностические) с помощью SFC14 или каким нибудь другим способом, буду очень благодарен.
CoMod
Site Admin
Posts: 3992
Joined: Thu Feb 16, 2006 3:25 pm
Location: Russia

Post by CoMod »

Чтение 8 байт из устройства по адресу 304 в блок данных начиная с байта 0

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
Запись 8 байт из блока данных начиная с байта 14 в устройство по адресу 304

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 // флаг ошибки в этом же блоке
real_Aaz
Posts: 11
Joined: Mon Jan 16, 2006 8:15 am
Location: Ukraine

Post by real_Aaz »

зная адрес:
L PID/PIW
T MD/MW
CoMod
Site Admin
Posts: 3992
Joined: Thu Feb 16, 2006 3:25 pm
Location: Russia

Post by CoMod »

http://support.automation.siemens.com/W ... n/18325417
The 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).
То есть для областей более одного DWORD = 4 байтам надо пользовать SFC 14 / 15