python-基于mewtocol协议使用网口(socket)与PLC通信

交互其实很简单,但是如果不知道数据格式,不确定通信方式,就要一个个试很麻烦

  1. 如果是插网线口的,是完全可以使用socket通信的
  2. 这里核心是数据格式
  3. 根据mewtocol文档与厂方描述,要求16进制ASCII码,或10进制ASCII码,但这都是错的!!!,直接发送字符串到PLC就成功了
  4. 这里的结束符是回车符,记得不是\n 是\r,ascii码是13。

个人遇到的问题

  • 不确定是否是socket方式,是否有相应的库可以做这个事(目前没有,有也没找到),因为数据格式错误,PLC一直未响应数据
  • 不确定到底要求什么数据格式,一直无响应
  • 希望有一款模拟软件测试数据,但是没有(国外的下载很麻烦),借来了厂方的PLC
  • 网上没有啥DEMO

成功DEMO

就一个普通的socket客户端,直接发送字符串,软硬交互资料太少,一个个试出来的

import socket

# p1: ipv4 ,p2: 流式协议:tcp协议

client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

# 连接服务端 (plc)
client.connect(('192.168.1.111',8090))

# 16进制测试失败
"""
sData = "%01#WDD00006000060800**\r";

def str_to_hex(s):
   return ' '.join([hex(ord(c)).replace('0x', '') for c in s])
 
# 客户端发送数据 必须是字节类型 .encode转成字节类型

client.send(str_to_hex(sData).encode())

"""

# 普通字符串(成功)
sData = "%01#RDD00101022220101**\r";
client.send( sData.encode())

# 接收服务端返回数据
data = client.recv(1024)

print('客户端接收:',data.decode())

#关闭连接
client.close()

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值