1 建設(shè)網(wǎng)站目的是什么意思上海搜索排名優(yōu)化公司
前面說了三菱和西門子PLC的上位機(jī)通信,實際在生產(chǎn)應(yīng)用中,設(shè)備會有很多不同的廠家生產(chǎn)的PLC,那么,我們就需要一種通用的語言,進(jìn)行設(shè)備之間的通信,工業(yè)上較為廣泛使用的語言之一就是Modbus。
Modbus有多種連接方式,如串口(RTU)、以太網(wǎng)(TCP/IP),今天我們講的是TCP,也就是插網(wǎng)線的方式。
首先,我們安裝從機(jī)的仿真,上位機(jī)軟件作為主機(jī)。從機(jī)仿真可以用Modbus Slave這個軟件。
?
?這樣從機(jī)就設(shè)置好了,接下來用C#編寫主機(jī)(上位機(jī))代碼:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using thinger.DataConvertLib;namespace Modbus
{public partial class Form2 : Form{public Form2(){InitializeComponent();this.StartPosition = FormStartPosition.CenterScreen;this.MaximizeBox = false;this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;}private void writeLog(string log){string text = txtLog.Text;if (text.Length > 10000){text = text.Substring(0, 10000) + "\n...";}txtLog.Text = "【" + DateTime.Now.ToString() + "】" + log + "\n" + text;}ModbusTcp tcp = new ModbusTcp();private void button1_Click(object sender, EventArgs e){tcp.Connect("192.168.0.108", "502");if (tcp != null){button1.BackColor = Color.LawnGreen;}else{button1.BackColor = Color.Red;}}private void button2_Click(object sender, EventArgs e){txtLog.Text = "";int address = 0;//起始地址int num = 10;//寄存器數(shù)量byte[] res = tcp.ReadKeepReg(address, num);for (int i = 0; i < num; i++){writeLog("【" + i.ToString() + "】" + (res[i * 2] * 256 + res[i * 2 + 1]).ToString());//byte數(shù)據(jù)類型只能包含0~255的數(shù),超出=res[0]*256+res[1]}}private void button3_Click(object sender, EventArgs e){bool success = tcp.PreSetSingleReg(int.Parse(textBox1.Text.Trim()), short.Parse(textBox2.Text.Trim()));if (success){button2_Click(sender, e);}}}
}
?最后附上全部源碼:
https://download.csdn.net/download/mojocube/88103605
?
?