前几天,需要使用到激光传感器,需要PLC来控制。就学习了一下PC与PLC通讯。
学的不深,可能有很多问题,欢迎指正。
PLC那一端是电气的同事帮忙弄的,使用的是MC协议。
一开始,我是用的是二进制方式(这个方式我用不了,应该是PLC那一端设置了ASCII方式吧...不太清楚):
import socket
import re
PORT = 7001
def read_register(host, start_digit, digit_num=1, port=PORT, dic=True):
'''
Example:
read D400 single word: read_register('192.168.100.2', 400)
'''
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((host, port))
str1= '500000ffff03000c00100001040000'\
+ reverse_per_two_char('{:0=6x}'.format(start_digit))\
+ 'a8' + reverse_per_two_char('{:0=6x}'.format(digit_num))
msg = bytes.fromhex(str1) # 转成字节
client.send(msg)
res = client.recv(1024).hex()
if dic:
# 十六进制转十进制
return