我们可以使用TCP-S7协议读写西门子PLC,
比如PLC中定义一个String[50] 的地址DB300.20
地址DB300.20
DB块编号为300,偏移量【地址】是30
S7协议是西门子PLC自定义的协议,默认端口102,本质仍然是TCP协议的一种具体实现,
如果使用C#读写西门子PLC协议,需要开启一个TcpClient,然后连接102端口。然后发哦送两次握手之后即可读写。
一、PLC需要设置 运行远程对象的Put/GET访问
二、PLC还要手动开启对应DB块的【非优化访问】,DB块默认是【优化访问的,无偏移量】
对西门子PLC字符串的读写逻辑如下:
西门子PLC字符串逻辑 string[50],占用52个字节(偏移量),第一个字节是最大长度,就是50,第二个字节是实际长度24,第三个字节之后就是ASCII码,
PLC解析逻辑为找到第二个字节的长度length.,然后查找length个字符,就结束