我正在解决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
?