四虎成人免费视频 I 99精彩视频 I 国产女人毛片 I 快播av在线 I 久久精品国产自在天天线 I 欧美日韩国产亚洲综合卡18 I 亚洲在线视频一区 I 欧美日韩中文字幕一区二区三区 I 亚洲日本午夜 I 激情小说 在线视频 I 精品久久久久久天美传媒 I 变态 另类 欧美 大码 日韩 I 亚洲精品人成 I 日韩欧美大片免费观看 I 亚洲精品偷拍无码不卡av I 伊人久久青青草 I 天干天干天啪啪夜爽爽av I 丁香五月网久久综合 I 久久久精彩 I 99热欧美 I 香蕉视频黄色 I 亚洲永久精品国产 I 亚洲欧美日韩中文字幕在线观看 I www.亚洲一区二区 I 玖玖爱国产 I 好了av四色综合网站 I 精品亚洲国产成人 I 国产精品高潮露脸在线观看 I a级黄色片网站 I 亚洲精品色无码av试看

咨詢熱線

18621916738

當前位置:首頁  >  技術文章  >  西門子S7-200 ModBus從站通訊程序

西門子S7-200 ModBus從站通訊程序

更新時間:2016-01-04      點擊次數:2637

西門子S7-200 ModBus從站通訊程序

一直看到有些朋友在問ModBus主從站的通訊問題,今天抽空兒給大家發幾篇。

事先申明,我是調用的主從站庫,庫本身并不是我編寫的,我沒有那么大的能耐。

另外,上位機是用VB編寫,VB本身不是很熟,如果有什么錯誤,請大家海諒。

zui后,這僅僅只是一個測試程序,如果各位想用到商業方面,還需要各位自己去完善。

說明:PLC從站,PC作主站,用ModBus協議進行通訊。PC機讀取PLCVW區的數據;PC機還讀取PLC內部I或者O地址的狀態。

///////////////////////////////////////

以下是PLC程序實現,方便貼出,已轉換為STL

TITLE=程序注釋

Network 1 // 網絡標題

// 在*個循環周期內初始化Modbus從站協議

LD SM0.1

CALL SBR3, 1, 12, 9600, 0, 0, 128, 32, 1000, &VB0, M10.1, MB11

Network 2 

// 在每個循環周期內執行Modbus 從站協議

LD SM0.0

CALL SBR1, M10.2, MB12

Network 3 

LD SM0.0

MOVW AIW0, VW100

/I +54, VW100

MOVW AIW2, VW102

/I +54, VW102

MOVW AIW4, VW104

/I +54, VW104

MOVW AIW6, VW106

/I +54, VW106

Network 4 

LD SM0.0

= Q0.0

Network 5 

LD I0.0

= Q0.1

Network 6 

LD I0.1

= Q0.2

///////////////////////////////////

以下是VB源碼

Option Explicit

Private Declare Function GetTickCount Lib "kernel32" () As Long

Dim x1

Dim p11, p12, p13, p14, p15, p16, p17, p18

Function CRC16(data() As Byte) As String

Dim CRC16Lo As Byte, CRC16Hi As Byte 'CRC寄存器

Dim CL As Byte, CH As Byte '多項式碼&HA001

Dim SaveHi As Byte, SaveLo As Byte

Dim i As Integer

Dim Flag As Integer

CRC16Lo = &HFF

CRC16Hi = &HFF

CL = &H1

CH = &HA0

For i = 0 To UBound(data)

CRC16Lo = CRC16Lo Xor data(i) '每一個數據與CRC寄存器進行異或

For Flag = 0 To 7

SaveHi = CRC16Hi

SaveLo = CRC16Lo

CRC16Hi = CRC16Hi \ 2 '高位右移一位

CRC16Lo = CRC16Lo \ 2 '低位右移一位

If ((SaveHi And &H1) = &H1) Then '如果高位字節zui后一位為1

CRC16Lo = CRC16Lo Or &H80 '則低位字節右移后前面補1

End If '否則自動補0

If ((SaveLo And &H1) = &H1) Then '如果LSB為1,則與多項式碼進行異或

CRC16Hi = CRC16Hi Xor CH

CRC16Lo = CRC16Lo Xor CL

End If

Next Flag

Next i

Dim ReturnData(1) As Byte

ReturnData(0) = CRC16Hi 'CRC高位

ReturnData(1) = CRC16Lo 'CRC低位

CRC16 = ReturnData

End Function

Private Sub About_Click()

frmAbout.Show

End Sub

Private Sub Form_Load() '初始化

Timer1.Enabled = False '定時器1無效

Timer1.Interval = 1000 '定時器1時間為1S

Timer2.Enabled = True '定時器2有效

Timer2.Interval = 1000 '定時器2時間為1S

Text1.Text = ""

Text2.Text = ""

Text3.Text = ""

Text4.Text = ""

Text5.Text = ""

Text6.Text = ""

Text8.Text = ""

Text10.Text = ""

MSComm1.CommPort = 1 '設定端口號

MSComm1.Settings = "9600,n,8,1" '設定通訊波特率

MSComm1.InBufferSize = 1024 '接收緩沖器大小

MSComm1.OutBufferSize = 1024 '輸出緩沖器大小

MSComm1.InputMode = comInputModeBinary '以二進制傳輸

MSComm1.RThreshold = 1 '

MSComm1.SThreshold = 0

MSComm1.InputLen = 0 '讀取接收緩沖器所有字符

MSComm1.OutBufferCount = 0 '清空發送緩沖區

MSComm1.InBufferCount = 0 '清空接收緩沖區

If MSComm1.PortOpen = False Then

Command3.Caption = "打開串口"

Else

Command3.Caption = "關閉串口"

End If

End Sub

Private Sub Command1_Click()

Timer1.Enabled = True

End Sub

Private Sub Command2_Click() '退出程序,定時器1無效

Timer1.Enabled = False

Cls

Unload Me

End Sub

Private Sub Command3_Click()

On Error Resume Next

If MSComm1.PortOpen = False Then

MSComm1.PortOpen = True

Else

MSComm1.PortOpen = False

End If

If MSComm1.PortOpen Then '打開關閉按鈕顯示文字

Command3.Caption = "關閉串口"

Else

Command3.Caption = "打開串口"

End If

If Err Then '打開串口失敗,則顯示出錯信息

MsgBox Error$, 48, "錯誤信息"

Exit Sub

End If

End Sub

Private Sub Timer1_Timer() '讀V存儲區數據

Dim CRC() As Byte

Dim FGetData As String

Dim aa() As Byte

Dim s As String

Dim str As String

Dim i As Integer

Dim bb, cc As String

ReDim aa(5) As Byte '定義動態數組

aa(0) = &HC

aa(1) = &H3

aa(2) = &H0

aa(3) = &H32

aa(4) = &H0

aa(5) = &H4

CRC = CRC16(aa)

str = CRC

s = ""

For i = 1 To LenB(str)

s = s + Hex(AscB(MidB(str, i, 1)))

Next i

bb = Right(s, 2)

cc = Mid(s, 1, 2)

If Len(s) < 4 Then

cc = Mid(s, 1, 1)

End If

ReDim Preserve aa(0 To 7) As Byte

aa(6) = Val("&H" & bb)

aa(7) = Val("&H" & cc)

MSComm1.OutBufferCount = 0 '清空輸出寄存器

MSComm1.Output = aa

FGetData = ReceiveData

Text5.Text = FGetData

p11 = Val("&H" & Mid(FGetData, 7, 4))

p12 = Val("&H" & Mid(FGetData, 11, 4))

p13 = Val("&H" & Mid(FGetData, 15, 4))

p14 = Val("&H" & Mid(FGetData, 19, 4))

End Sub

Private Sub Command4_Click() 'I狀態

Dim CRC() As Byte

Dim FGetData As String

Dim aa() As Byte

Dim s As String

Dim str As String

Dim i As Integer

Dim bb, cc As String

ReDim aa(5) As Byte '定義動態數組

aa(0) = &HC

aa(1) = &H2

aa(2) = &H0

aa(3) = &H0

aa(4) = &H0

aa(5) = &H1

CRC = CRC16(aa)

str = CRC

s = ""

For i = 1 To LenB(str)

s = s + Hex(AscB(MidB(str, i, 1)))

Next i

bb = Right(s, 2)

cc = Mid(s, 1, 2)

If Len(s) < 4 Then

cc = Mid(s, 1, 1)

End If

ReDim Preserve aa(0 To 7) As Byte

aa(6) = Val("&H" & bb)

aa(7) = Val("&H" & cc)

MSComm1.OutBufferCount = 0 '清空輸出寄存器

MSComm1.Output = aa

FGetData = IReceiveData

p17 = Val("&H" & Mid(FGetData, 7, 2))

p18 = Val("&H" & Mid(FGetData, 9, 2))

End Sub

Private Sub Command5_Click() 'Q狀態

Dim CRC() As Byte

Dim FGetData As String

Dim aa() As Byte

Dim s As String

Dim str As String

Dim i As Integer

Dim bb, cc As String

ReDim aa(5) As Byte '定義動態數組

aa(0) = &HC

aa(1) = &H1

aa(2) = &H0

aa(3) = &H0

aa(4) = &H0

aa(5) = &H1

CRC = CRC16(aa)

str = CRC

s = ""

For i = 1 To LenB(str)

s = s + Hex(AscB(MidB(str, i, 1)))

Next i

bb = Right(s, 2)

cc = Mid(s, 1, 2)

If Len(s) < 4 Then

cc = Mid(s, 1, 1)

End If

ReDim Preserve aa(0 To 7) As Byte

aa(6) = Val("&H" & bb)

aa(7) = Val("&H" & cc)

MSComm1.OutBufferCount = 0 '清空輸出寄存器

MSComm1.Output = aa

FGetData = QReceiveData

p15 = Val("&H" & Mid(FGetData, 7, 2))

p16 = Val("&H" & Mid(FGetData, 9, 2))

End Sub

Private Function ReceiveData() As String '返回V存儲器區數據

Dim FGetData As String

Dim t1 As Long

Dim av As Variant

Dim i As Integer

Dim ReDataLen As Integer

FGetData = ""

t1 = GetTickCount() '取時間,做延時用

Do '循環等待接收數據

DoEvents

If MSComm1.InBufferCount > 0 Then '串口有數據了

ReDataLen = MSComm1.InBufferCount '取數據長度

av = MSComm1.Input '將串口數據取出來

For i = 0 To ReDataLen - 1

FGetData = FGetData & Right("00" & Hex(av(i)), 2)

Next i

End If

If Len(FGetData) >= 6 Then

If Len(FGetData) > Val("&H" & Mid(FGetData, 5, 2)) * 2 + 8 Then

ReceiveData = FGetData

Exit Function

End If

End If

If GetTickCount - t1 > 2000 Then '2秒沒收完就不收了

ReceiveData = ""

Exit Function

End If

Loop

End Function

Private Function IReceiveData() As String '反回I狀態

Dim FGetData As String

Dim t1 As Long

Dim av As Variant

Dim i As Integer

Dim ReDataLen As Integer

FGetData = ""

t1 = GetTickCount() '取時間,做延時用

Do '循環等待接收數據

DoEvents

If MSComm1.InBufferCount > 0 Then '串口有數據了

ReDataLen = MSComm1.InBufferCount '取數據長度

av = MSComm1.Input '將串口數據取出來

For i = 0 To ReDataLen - 1

FGetData = FGetData & Right("00" & Hex(av(i)), 2)

Next i

End If

If Len(FGetData) >= 6 Then

If Len(FGetData) > Val("&H" & Mid(FGetData, 5, 2)) * 2 + 8 Then

IReceiveData = FGetData

Exit Function

End If

End If

If GetTickCount - t1 > 2000 Then '2秒沒收完就不收了

IReceiveData = ""

Exit Function

End If

Loop

End Function

Private Function QReceiveData() As String '反回Q狀態

Dim FGetData As String

Dim t1 As Long

Dim av As Variant

Dim i As Integer

Dim ReDataLen As Integer

FGetData = ""

t1 = GetTickCount() '取時間,做延時用

Do '循環等待接收數據

DoEvents

If MSComm1.InBufferCount > 0 Then '串口有數據了

ReDataLen = MSComm1.InBufferCount '取數據長度

av = MSComm1.Input '將串口數據取出來

For i = 0 To ReDataLen - 1

FGetData = FGetData & Right("00" & Hex(av(i)), 2)

Next i

End If

If Len(FGetData) >= 6 Then

If Len(FGetData) > Val("&H" & Mid(FGetData, 5, 2)) * 2 + 8 Then

QReceiveData = FGetData

Exit Function

End If

End If

If GetTickCount - t1 > 2000 Then '2秒沒收完就不收了

QReceiveData = ""

Exit Function

End If

Loop

End Function

Private Sub Timer2_Timer()

x1 = x1 + 1

Text10.Text = str(x1)

Text1.Text = str(p11)

Text2.Text = str(p12)

Text3.Text = str(p13)

Text4.Text = str(p14)

Text7.Text = str(p15)

If Text7.Text = 1 Then Text7.BackColor = RGB(255, 0, 255)

If Text7.Text = 0 Then Text7.BackColor = RGB(0, 255, 255)

'Text6.Text = str(p16)

Text9.Text = str(p17)

If Text9.Text = 1 Then Text9.BackColor = RGB(255, 0, 255)

If Text9.Text = 0 Then Text9.BackColor = RGB(0, 255, 255)

'Text8.Text = str(p18)

End Sub
 

聯系我們

上海翰粵自動化系統有限公司 公司地址:上海市松江區思賢路2399弄137號   技術支持:化工儀器網
  • 聯系人:黃政武
  • QQ:76868608
  • 公司傳真:021-57657276
  • 郵箱:76868608@qq.com

掃一掃 更多精彩

微信二維碼

網站二維碼

主站蜘蛛池模板: 麻豆一区二区在线观看 | 国产精品亚洲а∨天堂免下载 | 亚洲欧美精品无码一区二区三区 | 国产免费观看久久黄av片 | 亚洲另类无码一区二区三区 | 国产性猛交粗暴力xxxx | 国产亚洲精品岁国产微拍精品 | 国产女人与拘做视频免费 | 日日摸夜夜夜夜夜添 | 两口子交换真实刺激高潮 | 91久久国产综合久久91 | 成人免费午夜无码视频 | 色多多在线视频 | av明星换脸无码精品区 | 日韩av无卡无码午夜观看 | 欧洲专线一区二区三区 | 一级久久久 | 日本一区二区三区在线免费观看 | 欧美自拍第一页 | 国产美足白丝榨精在线观看sm | 久久亚洲中文字幕伊人久久大 | 毛茸茸性xxxx毛茸茸毛茸茸 | 免费全部高h视频无码 | 女人高潮抽搐潮喷小视频 | 亚洲国产精品无码久久久 | 91性高潮久久久久久久久 | 亚洲午夜18毛片在线看 | 国内毛片毛片毛片毛片毛片毛片 | 91丨九色丨蝌蚪丰满 | 无码日韩精品一区二区三区免费 | 男女性杂交内射妇女bbwxz | 秋霞网一区二区 | 天天干狠狠插 | 欧美激情国产91在线 | 欧美不卡一区 | 色婷婷社区 | 搡8o老女人老妇人老熟 | 日本道高清 | 无码人妻在线一区二区三区免费 | 亚洲综合久久无码色噜噜 | 九色蝌蚪在线 | 狠狠躁夜夜躁人人爽蜜桃 | 欧美黑人性暴力猛交 | 日本a√在线| 欧美精品18videosex性欧 | 亚洲欧美国产国产一区二区三区 | 人妻熟女 视频二区 视频一区 | 国产真实乱对白精彩久久小说 | 人妻av无码中文专区久久 | 日本少妇春药特殊按摩3 | 天堂8中文在线 | 国产重口老太和小伙 | 欧美一线二线动漫精品 | 久久综合噜噜激激的五月天 | 天堂中文最新版在线官网在线 | 日日麻批| 亚洲精品成人天堂一二三 | 欧美一区二区视频在线播放 | 国产一区二区激情 | 主站蜘蛛池模板: 蛛词}| 你懂的在线观看网站 | 亚洲欧美成人综合图区 | 在线免费看毛片 | 日本高清一二三不卡区 | 久久精品国产亚洲无删除 | 国产人妻xxxx精品hd | 午夜免费网 | 毛片大全真人在线 | 欧美日韩国产中文高清视频 | 欧美亚州国产 | 50岁退休熟女露脸高潮 | 无套大战乌克兰白嫩美女 | 日韩欧美国产综合 | 青青草手机视频在线观看 | 欧美日本高清在线不卡区 | 99在线精品国自产拍中文字幕 | 国产精品99 | 草草浮力地址线路①屁屁影院 | 欧美一区二区三区四区在线观看 | 天堂www中文在线 | 97se亚洲国产综合自在线 | 91精品91久久久中77777 | 秋霞av鲁丝片一区二区 | 欧美日韩精品一二三区 | 白浆av导航 | 久久香蕉国产线看观看怡红院妓院 | 国产女主播白浆在线看 | 真实国产精品vr专区 | 3d动漫精品啪啪一区二区下载 | 国产av成人无码精品网站 | jul599hd中文字幕 | 亚洲欧美大片 | 老鸭窝久久 | 欧美激欧美啪啪片 | 97人人模人人爽人人少妇 | 久久综合给久久狠狠97色 | 国产成人无码免费看片软件 | 男女裸交无遮挡毛片免费 | 国产精品人妻熟女毛片av久久 | 亚洲情趣 | 天天躁日日躁狠狠躁图片swag | 人与善性猛交xxxxx | 日韩精品无码人成视频手机 | 日韩乱码人妻无码中文字幕 | 激情欧美一区 | 国产人成高清在线视频99 | 免费黄网在线观看 | 九九热只有这里有精品 | 久9视频这里只有精品试看 黄色一级国产 | 99久久免费看少妇高潮a片特黄 | 久久精品一区二 | 理论片福利片 | 97超碰香蕉 | 一本一本久久a久久精品综合麻豆 | 欧美人与物videos另类 | 夜夜操导航 | 狠狠噜天天噜日日噜 | 色情毛片 | 精品视频亚洲 | 主站蜘蛛池模板: 蛛词}| 欧美三日本三级少妇99印度 | 五月天国产精品 | av网站免费在线播放 | 少妇做爰免费视频网站色黄 | 色综合天天网 | 欧美巨大丰满少妇xxxx人 | 1024欧美 | 男女爽爽无遮挡午夜视频 | 国产精品爆乳在线播放不卡 | 精品久久久久久亚洲精品 | 人人爽人人爽人人 | 蜜臀va | 国产九九九 | 2024av天堂手机在线观看 | av亚洲精华国产精华精 | 日韩在线视频看看 | 国产激情大臿免费视频 | 久久影院精品 | 成人超碰97 | 青青草国产免费久久久下载 | 欧美18videosex性欧美黑吊 | 99re6在线精品视频免费播放 | 国产亚洲精品福利在线无卡一 | 狠狠躁18三区二区一区张津瑜 | 亚洲国产精品va在线播放 | 人妻性奴波多野结衣无码 | 无码人妻丰满熟妇区bbbbxxxx | 久久久久麻豆v国产精华液好用吗 | 国产精品综合 | 中国少妇毛片 | 亚洲三级在线播放 | 色婷婷国产精品视频 | 久草手机视频在线观看 | 成人h动漫精品一区二区无码 | 中年国产丰满熟女乱子正在播放 | 激情五月综合色婷婷一区二区 | 国内国内在线自偷第68页 | 国产乱码卡二卡三卡4 | 日本翁妇免费视频 | 99精品网站 | 亚洲精品国产精品乱码 | 日日躁夜夜躁白天躁晚上 | 精品无码午夜福利理论片 | 青娱乐欧美 | 欧美日韩人成综合在线播放 | 久久久国产片 | 国产精品二区一区 | 潮喷大喷水系列无码 | 国产精品video爽爽爽爽 | 国产精品黄色网址 | 日产国产精品亚洲系列 | 97在线视频免费 | 中文字幕亚洲欧美日韩在线不卡 | 91最新中文字幕 | 日韩一区二区三区av | 你懂的福利视频 | 中日韩精品无码一区二区三区 | 色欲av永久无码精品无码 | 精品免费一区二区三区 | 主站蜘蛛池模板: 蛛词}| av观看地址 | 国产女人叫床高潮大片免费 | 色婷婷综合中文久久一本 | 三级中文字幕 | www.色播| 久久99精品久久久久久秒播蜜臀 | 亚洲欧美日韩成人一区 | 高清精品一区二区三区 | 亚洲一区二区三区四区视频 | 在线中文字幕亚洲日韩2020 | 国产精品丝袜美腿一区二区三区 | 午夜成人无码福利免费视频 | 国产福利萌白酱精品一区 | av中文无码韩国亚洲色偷偷 | 国产日韩在线视看高清视频手机 | 华人少妇被黑人粗大的猛烈进 | 久久综合五月丁香六月丁香 | 好大好湿好硬顶到了好爽视频 | 国产欧美va欧美va香蕉在线观看 | 辣+高h+浓+np+肉+黄在线 | 爱情岛论坛网亚洲品质 | 国产高清一级 | 日本少妇丰满做爰图片 | 久久久综合网 | 风流少妇按摩来高潮 | 黄色精品久久久 | 青青艹视频在线 | 97超碰在线资源 | 国产肥老妇视频 | 伦理一区 | 免费播放毛片 | 少妇内射高潮福利炮 | av在线男人天堂 | 亚洲熟女少妇一区二区 | 国产露脸精品产三级国产av | 青青免费 | 高潮毛片无遮挡免费看 | 亚洲色图视频在线 | 超级碰碰色偷偷免费视频 | 一级黄色在线看 | 婷婷国产一区综合久久精品 | 夜夜爱网站 | 欧美牲交a欧美牲交 | 国内少妇高潮嗷嗷叫在线播放 | 国产乱码自拍 | 成熟老妇女毛茸茸的做性 | 东京热人妻无码人av | 成人亚洲一区二区 | 久久精品h | 国产做爰免费观看视频 | 国产女人18毛片水真多 | 成人亚洲国产精品一区不卡 | 亚洲va中文慕无码久久av | 国产一区二区三区四区五区tv | 精品国产乱码一区二区三 | 18久久久 | 色不卡| 最新无码a∨在线观看 | 好爽…又高潮了免费毛片 | 主站蜘蛛池模板: 蛛词}| 成人免费无遮挡在线播放 | 四川性一交一乱一乱一视一频 | 欧美自拍亚洲综合在线 | 无码h肉动漫在线观看 | 777精品视频 | 99热99这里只有高清国产 | 国产av无码精品色午夜 | 国产人妻久久精品一区二区三区 | 91成人免费网站 | 亚洲高清aⅴ日本欧美视频 国产露脸精品产三级国产 中国少妇xxxx做受18 | 黄色福利网址 | 豆国产93在线 | 亚洲 | 4455永久免费视频 | 亚洲第一免费视频 | 五月婷婷俺也去开心 | 国产一级淫片a免费播放口欧美 | 国偷自产一区二视频观看 | 91精品久久久久久蜜桃 | 在线视频一区少妇露脸福利在线 | 精品无人区无码乱码毛片国产 | 国产精品卡1卡2卡3网站 | 香港三日本三级少妇三级99 | 狠狠97人人婷婷五月 | 日韩av大片在线观看 | 久碰久摸久看视频在线观看 | 国产午夜无码片免费 | 欧美网站一区 | 91看片看淫黄大片 | 69亚洲精品久久久 | 无遮挡呻吟娇喘视频免费播放 | 人人澡超碰碰97碰碰碰 | 日本老妇人乱xxy | 中国熟妇毛多多裸交视频 | 91播放在线 | 亚洲人体一区二区 | 日本网站在线播放 | 久久综合给久久狠狠97色 | 国产大片aaa| 亚洲网站免费观看 | 91插插库| 人妻巨大乳一二三区 | 婷婷五月综合色视频 | 国产aⅴ精品 | 亚洲 欧美 中文 日韩aⅴ综合视频 | 91久久国产综合久久91 | 高h纯肉无码视频在线观看 中文字幕第十五页 | 精品网站一区二区三区网站 | 高中生自慰www网站 亚洲第一综合 | 欧美图片自拍偷拍 | 久久五月精品中文字幕 | 亚洲一区二区三区小说 | 国产亚洲精品品视频在线 | 久久国产精品成人免费 | 亚洲精品美女久久久久久久 | 日本肉体做爰猛烈高潮全免费 | 亚洲精品一区国产精品 | 色久综合视频 | 黄片毛片在线观看 | 国产超碰无码最新上传 |