西门子smart200具体的通讯文档在网上或者官网我都没有找到(哪位大仙有请给我留言发个感激不尽),本人是通过监听控制软件分析出其中的通讯协议。
连接是通过TCP/IP协议,我一般喜欢用Java写测试Socket。
通讯是依照字节流沟通,一下只是满足和PLC的握手以及对内存数据修改。
1、当通过socket连接PLC成功之后首先发送一下字节流我成为连接,就像打开网站一样(自己定义的)
private byte EntLink[]={0x03,0x00,0x00,0x16,0x11,
(byte) 0xE0,0x00,0x00,0x00,0x10,
0x00,(byte) 0xC1,0x02,0x01,0x01,
(byte) 0xC2,0x02,0x01,0x01,
(byte) 0xC0,0x01,0x0A};
2、这是第二次发送的数据具体我不太懂,我称为检测就像输入密码一样(自己定义)
private byte check[]={0x03,0x00,0x00,0x19,0x02,
(byte) 0xF0,(byte) 0x80,0x32,0x01,
0x00,0x00,(byte) 0xCC,(byte) 0xC1,
0x00,0x08,0x00,0x00,(byte) 0xF0,
0x00,0x00,0x01,0x00,0x01,0x03,(byte) 0xC0};
3、下面就是对内存操作的部分了,返回的是一个byte数组,传入不同的数值修改不同的地址数据,我只搞懂了一部分,又大神懂得还望留言告知。
public byte[] getWriteBs(int times,int