日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > C# >内容正文

C#

python如何调用hslcommunication_C#读写PLC数据问题

發(fā)布時(shí)間:2023/12/10 C# 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python如何调用hslcommunication_C#读写PLC数据问题 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

展開全部

首先最簡單的方式就是通過32313133353236313431303231363533e59b9ee7ad9431333365666230mc協(xié)議, 用串口、以太網(wǎng)都可以。? PLC側(cè)不需要任何編程配置好端口就可以。? C#這邊? 就是用套接字創(chuàng)建客戶端,連接這個(gè)plc服務(wù)器就行,然后發(fā)送報(bào)文 指令讀取? 這些數(shù)據(jù),然后將接收的數(shù)據(jù) ,處理格式化打印就行了。直接三菱電機(jī)官網(wǎng),內(nèi)置以太網(wǎng)通訊手冊就可以了。里面有詳細(xì)講解? mc通訊協(xié)議的格式。 官方給的示例是用C/C++寫的

下面是用Python 寫的一段讀 D0-D4的代碼#!/usr/bin/env?python

#?-*-?coding:utf-8?-*-

#?Author:?nulige

#?三菱Q系列?mc協(xié)議測試代碼

#?日期:2018年4月27日

#?測試:

"""

#?以讀取D0-D4?數(shù)據(jù)(16位寄存器)指令為例

#?500000FF03FF000018000A04010000D*0000000005

#?三菱mc協(xié)議報(bào)文結(jié)構(gòu)3E幀

#?副標(biāo)題:

#?固定值:5000

#?網(wǎng)絡(luò)編號:00

#?可編程邏輯控制器編號:FF

#?請求目標(biāo)模塊I/O號:03FF

#?請求目標(biāo)模塊站號:00

#?請求數(shù)據(jù)、形影數(shù)據(jù)長:0018

#?監(jiān)視定時(shí)器:000A

#?批量讀取命令:0401

#?子命令:0000

#?軟元件類型:D*

#?首地址:000000

#?偏移量:0005

#?備注:指令介紹參考MElSEC通訊協(xié)議參考手冊

#?此格式下相應(yīng)報(bào)文應(yīng)該為:D000?00FF?03FF?00?0018?0000(這四位位結(jié)束正常響應(yīng))?后面數(shù)據(jù)位D0-D4?數(shù)據(jù)

"""

#?部分python?函數(shù)說明

#?msg.encode('utf-8')?以指定的格式對數(shù)據(jù)進(jìn)行編碼

from?socket?import?*??????????????????????????????????????????????????#?打開socket?模塊

#?ip_port?=?('127.0.0.1',4099)??????????????????????????????????????#?設(shè)置服務(wù)器?IP?端口

ip_port?=?('192.168.3.39',4099)??????????????????????????????????????#?設(shè)置服務(wù)器?IP?端口

buffer_size?=?1024?????????????????????????????????????????????????????#?設(shè)置接受緩沖區(qū)大小

tcp_client?=?socket(AF_INET,?SOCK_STREAM)??????????????????????????????#?使用IPV4協(xié)議?,TCP連接

print('正在連接目標(biāo)'+str(ip_port))

tcp_client.connect(ip_port)

SendMsg?=?('500000FF03FF000018000A04010000D*0000000005')???????#?讀取D0-D5指令

while?True:

print('D0-D5數(shù)據(jù)讀取使能?按Y回車讀取:')

key?=?input()

tcp_client.send(SendMsg.encode('utf-8'))??????????????????????????#?發(fā)送讀取命令

RecData?=?tcp_client.recv(buffer_size)?????????????????????????????#?收緩存為空則阻塞

print('接受到的報(bào)文:',?RecData.decode('utf-8'))????????????????#?打印收到的報(bào)文

RecData1?=?RecData[22:]????????????????????????????????????????????#?獲取數(shù)據(jù)報(bào)文

RecData1Len?=?len(RecData1)????????????????????????????????????????#?獲取數(shù)據(jù)報(bào)文長度

print('格式化輸出:')

i?=?0

j?=?0

while?i?

print('D'?+?str(j)?+?'?=?'?+?str(int(RecData1[i:(i?+?4)])))??#?輸出讀取到的數(shù)據(jù)

i?=?i?+?4

j?=?j?+?1

tcp_client.close()????????????????????????????????????????????????????#??連接關(guān)閉

總結(jié)

以上是生活随笔為你收集整理的python如何调用hslcommunication_C#读写PLC数据问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。