将字节写入PLC设备

时间:2019-04-01 13:53:58

标签: vb.net plc libnodave ladder-logic

我正在解决PLC设备与我的公司PC之间的连接问题。 PLC是已知的Siemens S7-200,我正在使用vb.NET。可能我应该使用另一种语言,但是vb.NET是我更喜欢的一种。为此,我还通过PPICOM1库使用LibNoDave协议来建立连接。

我正在测试的程序必须具有Input 0.0 On,因此我附加了一个开关来实现它。我还做了一个vb console来读取(和写入)InputsOutputs的状态(作为设备上的LED物理指示器)以及Bit memories

console

控制台阅读器(LEITOR部分-对不起)的工作与我预期的一样,并且所有Q,I和M都可以正确点亮。

问题是,要运行PLC程序,我还必须点亮Q 1.1。 对此进行描述的Ladder Network具有以下逻辑映射:

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

0 个答案:

没有答案