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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python与西门子PLC通讯

發布時間:2024/3/24 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python与西门子PLC通讯 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
python與西門子PLC通訊

安裝Python-snap7

win+R打開“運行”,輸入cmd,確定后,進入DOS命令行終端,輸入下面的命令:

pip install python-snap7

areas = ADict({

‘PE’: 0x81, #input

‘PA’: 0x82, #output

‘MK’: 0x83, #bit memory

‘DB’: 0x84, #DB

‘CT’: 0x1C, #counters

‘TM’: 0x1D, #Timers

})

程序編寫

I讀?? 0x82改為0x81

Q讀?? 0x82改為0x81

M讀?? 0x82改為0x83

import snap7

from snap7.util import *

from snap7.snap7types import *

def ReadMemory(self,byte,bit,datatype):

result=self.read_area(0x81,0,byte,datatype)

if datatype==S7WLBit:? #這里的datatype應該可以寫數字(參照上面寫入output),或者像這里直接寫類型

return get_bool(result,0,bit)

if datatypeS7WLByte
or datatypeS7WLWord:

return get_int(result,0)

if datatype==S7WLReal:??????? #elif更好

return get_real(result,0)

if datatype==S7WLDWord:

return get_dword(result,0)

myplc=snap7.client.Client()

myplc.connect(‘192.168.0.1’, rack=0,slot=2)

print(‘bool型’,ReadMemory(myplc,10,0,S7WLBit))#I10.0

print(‘byte型’,ReadMemory(myplc,11,0,S7WLByte)/256)#IB22

print(‘Word型’,ReadMemory(myplc,12,0,S7WLWord))#IW12

print(‘Real型’,ReadMemory(myplc,14,0,S7WLReal))#ID14

print(‘Dword型’,ReadMemory(myplc,18,0,S7WLDWord)) #ID18

I?? 0x81

Q? 0x81

M? 0x83

import snap7

from snap7.util import *

from snap7.snap7types import *

def WriteMemory(self,byte,bit,datatype,value):

result=self.read_area(0x83,0,byte,datatype)

if datatype==S7WLBit:

set_bool(result,0,bit,value)

if datatypeS7WLByte
or datatypeS7WLWord:

set_int(result,0,value)

if datatype==S7WLReal:

set_real(result,0,value)

if datatype==S7WLDWord:

set_dword(result,0,value)

self.write_area(0x83,0,byte,result)

myplc=snap7.client.Client()

myplc.connect(‘192.168.0.1’, rack=0,slot=2)

WriteMemory(myplc,10,0,S7WLBit,False)

WriteMemory(myplc,11,0,S7WLByte,10*256)? #寫入值要X256

WriteMemory(myplc,12,0,S7WLWord,32)

WriteMemory(myplc,14,0,S7WLReal,3.14159)

WriteMemory(myplc,18,0,S7WLDWord,1132818)

字定義:

DB1.DBX0.0 讀

import snap7

from snap7.util import *

from snap7.snap7types import *

myplc=snap7.client.Client()

myplc.connect(‘192.168.0.1’, rack=0,slot=1)

#DB1.DBX0.0

result=myplc.read_area(0x84,1,0,1)#長度為1,即1BYTE

aa=get_bool(result,0,0)#DB1.DBX0.0

print(aa)

#DB1.DBB0.0

result=myplc.read_area(0x84,1,0,2)#長度為2,因為字節跟字snap7都定義為2個字,所以結果要除于256(字的高低位原理)

aa=get_int(result,0)#DB1.DBB0,且讀取的值默認為有符號的,所以PLC段輸入的要為有有符號類型

print(aa/256)

#DB1.DBBW0

result=myplc.read_area(0x84,1,0,2)#長度為2,

aa=get_int(result,0)#DB1.DBW0,且讀取的值默認為有符號的范圍取值,所以PLC段輸入的要為有有符號類型

print(aa)

#DB1.DBD0

result=myplc.read_area(0x84,1,0,4)#長度為4,

aa=get_dword(result,0)#DB1.DBD0,改為get_dword 只支持正數顯示

print(aa)

#DB1.DBD0? real浮點數

result=myplc.read_area(0x84,1,0,4)#長度為4,

aa=get_real(result,0)#DB1.DBD0,改為get_real,支持正負

print(aa)

#浮點數寫

import snap7

from snap7.util import *

from snap7.snap7types import *

myplc=snap7.client.Client()

myplc.connect(‘192.168.0.1’, rack=0,slot=1)#1200寫1,300寫2

data=myplc.read_area(0x84,1,0,4)# 1中要寫PLC存在的DB塊,且去掉塊優化選項,不然通訊不上

value=get_real(data,0)?? #數據類型eral

print(value)

set_real(data,0,112.0)#112.0為要寫入的值

myplc.write_area(0x84,1,0,data)#0x84為DB類型,1為DB幾,0為DBD0,設為4為DBD4

plc.disconnect #斷開連接

帶尺寸的圖片:

居中的圖片:

居中并且帶尺寸的圖片:

當然,我們為了讓用戶更加便捷,我們增加了圖片拖拽功能。

如何插入一段漂亮的代碼片

去博客設置頁面,選擇一款你喜歡的代碼片高亮樣式,下面展示同樣高亮的 代碼片.

// An highlighted block var foo = 'bar';

生成一個適合你的列表

  • 項目
    • 項目
      • 項目
  • 項目1
  • 項目2
  • 項目3
    • 計劃任務
    • 完成任務

    創建一個表格

    一個簡單的表格是這么創建的:

    項目Value
    電腦$1600
    手機$12
    導管$1

    設定內容居中、居左、居右

    使用:---------:居中
    使用:----------居左
    使用----------:居右

    第一列第二列第三列
    第一列文本居中第二列文本居右第三列文本居左

    SmartyPants

    SmartyPants將ASCII標點字符轉換為“智能”印刷標點HTML實體。例如:

    TYPEASCIIHTML
    Single backticks'Isn't this fun?'‘Isn’t this fun?’
    Quotes"Isn't this fun?"“Isn’t this fun?”
    Dashes-- is en-dash, --- is em-dash– is en-dash, — is em-dash

    創建一個自定義列表

    Markdown
    Text-to-HTML conversion tool
    Authors
    John
    Luke

    如何創建一個注腳

    一個具有注腳的文本。1

    注釋也是必不可少的

    Markdown將文本轉換為 HTML。

    KaTeX數學公式

    您可以使用渲染LaTeX數學表達式 KaTeX:

    Gamma公式展示 Γ(n)=(n?1)!?n∈N\Gamma(n) = (n-1)!\quad\forall n\in\mathbb NΓ(n)=(n?1)!?nN 是通過歐拉積分

    Γ(z)=∫0∞tz?1e?tdt.\Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=0?tz?1e?tdt.

    你可以找到更多關于的信息 LaTeX 數學表達式here.

    新的甘特圖功能,豐富你的文章

    Mon 06Mon 13Mon 20已完成 進行中 計劃一 計劃二 現有任務Adding GANTT diagram functionality to mermaid
    • 關于 甘特圖 語法,參考 這兒,

    UML 圖表

    可以使用UML圖表進行渲染。 Mermaid. 例如下面產生的一個序列圖:

    張三李四王五你好!李四, 最近怎么樣?你最近怎么樣,王五?我很好,謝謝!我很好,謝謝!李四想了很長時間,文字太長了不適合放在一行.打量著王五...很好... 王五, 你怎么樣?張三李四王五

    這將產生一個流程圖。:

    鏈接長方形圓圓角長方形菱形
    • 關于 Mermaid 語法,參考 這兒,

    FLowchart流程圖

    我們依舊會支持flowchart的流程圖:

    Created with Rapha?l 2.2.0開始我的操作確認?結束yesno
    • 關于 Flowchart流程圖 語法,參考 這兒.

    導出與導入

    導出

    如果你想嘗試使用此編輯器, 你可以在此篇文章任意編輯。當你完成了一篇文章的寫作, 在上方工具欄找到 文章導出 ,生成一個.md文件或者.html文件進行本地保存。

    導入

    如果你想加載一篇你寫過的.md文件,在上方工具欄可以選擇導入功能進行對應擴展名的文件導入,
    繼續你的創作。


  • 注腳的解釋 ??

  • 總結

    以上是生活随笔為你收集整理的python与西门子PLC通讯的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。