Версия для печати

Связь с Siemens S5 контроллерами - схема адаптера и протокол обмена

Дата: 2012-07-15

Добавлено: komatic

Тема: Hard




Схема преобразователя
Печатная плата
Протокол обмена

Если вам понадобится соединиться с контроллером серии S5 Siemens через COM порт, вам будет необходим преобразователь сигнала, так как контроллер использует TTY порт.
Маловероятно, ну а вдруг, если понадобиться написать свое приложение которое читает и записывает блоки данных в контроллере - в статье приведен протокол обмена.


Утянуто отсюда - www.plcman.co.uk, переведено здесь.



S5_plc

S5 контроллеры





Схема преобразователя RS232 - TTY

Работает на всех Simatic S5 CPUs (тестировано на 100U CPU 100/102/103, 115U CPU941/942/943/944, 135U CPU928, не тестировано на 150U и 155U)
Так как это пассивный преобразователь (источник тока берется от PLC порта), не возможно программировать другие устройства такие как CP526/CP527 or OP393/OP396/OP5 и так далее, которые требуют активного (с отдельным источником питания) преобразователя.
Схему и печатные платы можно взять здесь (формат AutoCAD 60 Kb.dwg)

Инструкция:

- Открыть с помощью AutoCAD R12 или выше.
- Установить правильное соотношение на вашем компьютере для печать (расстояние между ножками микросхемы должно быть 2.54mm)
- распечатать чертеж на пластиковый прозрачный лист (вы можете распечатать на белую бумагу и после этого сделать фотокопию на пластиковый лист)
- используйте пластиковый лист как источник для получения напечатанных цепей используя фоточувствительные платы



S5_plc

Схема преобразователя



>

Внешний вид печатной платы



S5_plc

Печатная плата, сторона 1





S5_plc

Печатная плата, сторона 2





SIEMENS SIMATIC S5 AS511 (порт программирования) описание протокола

Siemens data frame is not usual, open your port with: speed 9600 baud data 8 bits stop 1 bit parity EVEN

DLE (10hex) управляющий символ, используемый для указанию приемнику что последующий символ будет интерпретироваться как управляющий, а не байт данных.

Другими словами DLE это программный переключатель в AS511 протоколе для разделения команд и данных.

Если блок данных содержит значение 10hex для пересылки, отправитель должен продублировать этот символ. Это значит что посылая данные с байтом 10hex, отправитель должен послать 10hex 10hex (DLE DLE).

Получатель должен учитывать, что одиночный DLE значит сигнал протокола, а два последовательных DLE интерпретировать как ОДИНОЧНЫЙ байт данных содержащий значение 10hex. Это немного странно, потому что получатель никогда не знает, как много данных он получит.

Обратите также внимание что контроллер может ответить также DLE NAK вместо DLE ACK если запрашиваемая операция не может быть выполнена.

В этом случае, приложение должно оборвать связь и подождать 500ms перед попыткой новой связи. Значение 500ms также применяется для таймаута в случае отсутствия ответа от партнера. Это также означает что не должно быть интервалов длиннее 500ms во время соединения (в том числе в момент DB_READ функции)

Для чтения и записи блоков данных, вам нужно знать их адреса в памяти PLC. Вы можете вызвать B_INFO функцию для получения адреса, потом вы можете вызывать DB_READ или DB_WRITE давая начальный и конечный адрес области для чтения или записи.

Будьте осторожны!!!! в SIMATIC порядок старшего и младшего байта LSB/MSB обратный:

SIMATIC: 15..............0 BYTE 0 BYTE 1 INTEL: 15..............0 BYTE 1 BYTE 0

Для получения правильных двухбайтовых значений в блоке данных нужно: - переставить байты после получения - переставить байты перед их посылкой в PLC

B_INFO input: block number output: initial address of DW0 in AG

PG AS (hex) (hex) ---------------------- function start -------- 02 ----> STX <---- 10 DLE <---- 06 ACK 1A ----> B_INFO function code = 1Ah <---- 02 STX 10 ----> DLE 06 ----> ACK <---- 16 AG answer=16h <---- 10 DLE <---- 03 ETX 10 ----> DLE 06 ----> ACK ---------------------- header info -------- 01 ----> ID=01h for Datablock XX ----> DB number (0..255) 10 ----> DLE 04 ----> EOT <---- 10 DLE <---- 06 ACK ---------------------- data -------- <---- 02 STX 10 ----> DLE 06 ----> ACK <---- 00 NUL <---- XX DB initial address <---- XX <---- 70 synchronization code: 70 70 <---- 70 <---- 41 block ID and DB number : 41 XX <---- XX <---- XX PG ID code: XX XX <---- XX <---- XX library number: XX XX <---- XX <---- XX block length (words): XX XX <---- XX <---- 10 DLE <---- 03 ETX 10 ----> DLE 06 ----> ACK ---------------------- terminate -------- <---- 02 STX 10 ----> DLE 06 ----> ACK <---- 12 AG "end of transmission" code: 12h <---- 10 DLE <---- 03 ETX 10 ----> DLE 06 ----> ACK

DB_READ input: initial address in AG final address in AG output: contents of datawords

PG AS (hex) (hex) ---------------------- function start -------- 02 ----> STX <---- 10 DLE <---- 06 ACK 04 ----> DB_READ function code = 04h <---- 02 STX 10 ----> DLE 06 ----> ACK <---- 16 AG answer=16h <---- 10 DLE <---- 03 ETX 10 ----> DLE 06 ----> ACK ---------------------- header info -------- XX ----> initial address in AG: XX XX XX ----> XX ----> final address in AG: XX XX XX ----> 10 ----> DLE 04 ----> EOT <---- 10 DLE <---- 06 ACK ---------------------- data -------- <---- 02 STX 10 ----> DLE 06 ----> ACK <---- 00 NUL <---- 00 NUL <---- 00 NUL <---- 00 NUL <---- 00 NUL <---- XX first byte of data <---- XX <---- XX . . . . . . <---- XX <---- XX <---- XX last byte of data <---- 10 DLE <---- 03 ETX 10 ----> DLE 06 ----> ACK ---------------------- terminate -------- <---- 02 STX 10 ----> DLE 06 ----> ACK <---- 12 AG "end of transmission" code: 12h <---- 10 DLE <---- 03 ETX 10 ----> DLE 06 ----> ACK

DB_WRITE input: - initial address in AG - contents of datawords output: - none

PG AS (hex) (hex) ---------------------- function start -------- 02 ----> STX <---- 10 DLE <---- 06 ACK 03 ----> DB_WRITE function code = 03h <---- 02 STX 10 ----> DLE 06 ----> ACK <---- 16 AG answer=16h <---- 10 DLE <---- 03 ETX 10 ----> DLE 06 ----> ACK ---------------------- header info -------- XX ----> initial address in AG: XX XX XX ----> ---------------------- data -------- XX ----> first byte of data XX ----> XX ----> . . . . . . XX ----> XX ----> XX ----> last byte of data 10 ----> DLE 04 ----> EOT ----> 10 DLE ----> 06 ACK ---------------------- terminate -------- <---- 02 STX 10 ----> DLE 06 ----> ACK <---- 12 AG "end of transmission" code: 12h <---- 10 DLE <---- 03 ETX 10 ----> DLE 06 ----> ACK



>

S5_plc

S5 контроллеры



>

S5_plc

S5 контроллеры





Просмотров: 6957

Комментарии к материалу

Ваш будет первым.

Добавить комментарий

Ваше имя:

Текст комментария (4000 max):

Введите сумму с картинки: