1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 西门子smart200以太网通讯协议

西门子smart200以太网通讯协议

时间:2020-06-15 07:50:14

相关推荐

西门子smart200以太网通讯协议

西门子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 bloak,byte bit){

return new byte[]{

0x03,

0x00,

0x00,

0x25,

0x02,

(byte) 0xF0,

(byte) 0x80,

0x32,

0x01,

//次数标志位应该是四字节,我测试只用了两个自己

0x00,

0x00,

//次数标志,这个标志是递增的。当PLC接收消息并处理成功会返回这个标志

(byte)(times>> 8),

(byte)times,

0x00,

0x0E,

0x00,

0x06,

0x05,

0x01,

0x12,

0x0A,

0x10,

0x02,

0x00,

0x02,

0x00,

0x01,

(byte) 0x84,//这个表示操作不同的区域:0x81-DI;0x82-DQ;0x83-M区;0x84-DR(V区)

//写入地址应该是三位,测试我只用了两位。

0x00,

//写入地址,其实是偏移量

(byte)((bloak*8)>>8),

(byte)(bloak*8),

0x00,

0x04,

//写入最大bit位

0x00,

//这个应该是你要写入的位数0x10十进制是十六也就是两个字节,每次写入一定是偶数字节

0x10,

//写入数值,如果是多个一次往后面排

bit,

0x00

};

}

各位有时间,我在不从怎么读的。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。