Я работаю вокруг соединения между PLC
устройством и моими компаниями PC
. PLC
является известным Siemens S7-200
, и я использую vb.NET
. Вероятно, я должен использовать другой язык, но vb.NET
мне больше нравится. Для этого я также использую протокол PPI
через библиотеку COM1
и LibNoDave
для установления соединения.
Программа, которую я тестирую, должна иметь Input 0.0
On
, поэтому я подключил переключатель, чтобы это произошло. Также я сделал vb console
для чтения (и записи) состояния Inputs
и Outputs
(как физические индикаторы LED
на устройстве), а также состояния Bit memories
:
Консольный ридер (раздел LEITOR
- извините) работает так, как я планировал, и все Q, I и M правильно загораются, если это так.
Проблема в том, что для запуска программы PLC
мне также нужно загореться Q 1.1
.
Ladder Network
, который описывает это, имеет следующую логическую карту:
Я знаю, что должен использовать код:
Public FDS As libnodave.daveOSserialType 'Serial type
Public DI As libnodave.daveInterface 'Interface
Public DC As libnodave.daveConnection 'Connection
Public lPPI As Integer = 0 'Local
Public pPPI As Integer = 2 'PLC
Public RES As Integer = 0 'Response
Public REP As Integer = 0 'Response
Public buf(100) As Byte
Sub Code()
FDS.rfd = libnodave.setPort("COM1", "9600", AscW("E"))
DI = New libnodave.daveInterface(FDS, "IF1", lPPI, libnodave.daveProtoPPI, libnodave.daveSpeed93k)
DI.setTimeout(1000000)
DC = New libnodave.daveConnection(DI, pPPI, 0, 0)
RES = DC.connectPLC
'Write on PLC:
RES = DC.writeBytes(...
End sub
Код работает нормально, без ошибок и установления соединения (до последнего RESponse
).
Вот проблема:
Я могу зажечь Output 1.1
(на устройстве и на console
), выполнив следующие действия:
RES = DC.writeBytes(libnodave.daveDB, 1, 1500, 16, buf)
где
buf = BitConverter.GetBytes(libnodave.daveSwapIed_16(30))
, повторив эти два шага еще пять раз (в другой раз с 30
снова, еще два раза с 50
и, наконец, еще два раза с 50
).
Я почти уверен, что делаю что-то не так, но в интернете не так много описаний этих команд для такого парня, как я (который только начал).
Может кто-нибудь объяснить, что происходит? А также, Как я могу зажечь Q 1.1
всего одним шагом?