页首Html代码

Tia Portal 安装,1200 仿真,上位机读写数据

1.安装TIA Portal 16和 PLCSIM16

链接:https://pan.baidu.com/s/1hcFn18KvlIQqMt9tChfo2A
提取码:5ahd

 安装过程都是下一步即可,遇到不停提示重启计算机,在

计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager删除

PendingFileRenameOperations即可。

注册

 找到TIA Portal 下面的TIA Portal v16 中的3211注册即可。再注册PLCSIM

 

2.仿真的设置

打开Tia Portal,新建一个工程。

根据当前网络,设置下CPU

 

 

 

 写一个测试程序

 

 监视变量

 

 

下面操作注意顺序:

A: 管理员权限打开NetToPLCsim,点击“是”。

B:点击开始仿真

 

 

C:点击NetToPLCsim的Add,

 

 

第一个IP地址是本机IP,也是上位机要连接的地址,第二个是在Portal中设置的PLCSIM的地址。

D:点击Start Server

 

3.上位机读写

Nuget安装s7netplus,

 

 连接后将M0.1写为1,

 

        Plc plc = null;
        public Form1()
        {
            InitializeComponent();
        }

        private void Connect_Click(object sender, EventArgs e)
        {
            try
            {
                plc = new Plc(CpuType.S71200, this.IP.Text, 0, 1);
                plc.Open();
            }
            catch (Exception ex)
            {

                MessageBox.Show(ex.ToString());
                return;
            }
            this.Text = "Connection OK";
            this.Connect.Enabled = false;
        }

        private void SetM01_Click(object sender, EventArgs e)
        {
            plc.WriteBit(DataType.Memory, 0, 0, 1, true);
        }

 DB块的使用

新建一个DB块,右键,属性,取消勾选 优化的块访问

 

 重新编译下载。

 

4读写例子说明

单个数据

#region 单个数据项读取
                var db1Bool1 = plc.Read("DB1.DBX0.0");
                Console.WriteLine("DB1.DBX0.0: " + db1Bool1);

                bool db1Bool2 = (bool)plc.Read("DB1.DBX0.1");
                Console.WriteLine("DB1.DBX0.1: " + db1Bool2);

                // Int
                int intVariable = (ushort)plc.Read("DB1.DBW2.0");
                Console.WriteLine("DB1.DBW2.0: " + intVariable);
                // Real
                var realVariabl = ((uint)plc.Read("DB1.DBD4.0")).ConvertToFloat();
                Console.WriteLine("DB1.DBD4.0: " + realVariabl);
                // DInt
                var dIntVariable = (uint)plc.Read("DB1.DBD8.0");
                Console.WriteLine("DB1.DBD8.0: " + dIntVariable);
                // DWord
                var dWordVariable = (uint)plc.Read("DB1.DBD12.0");
                Console.WriteLine("DB1.DBD12.0: " + dWordVariable);
                // Word
                var wordVariable = (ushort)plc.Read("DB1.DBW16.0");
                Console.WriteLine("DB1.DBW16.0: " + wordVariable);
                #endregion
View Code

批量

#region 批量数据项读取 / 读取整个DB
                // DataType: 数据类型,DB或Memory等
                // DB : DataBlock=1,Memory=0
                // count : 偏移量(offset),设置多少就获取到具体位置的数据
                // eg: 比如最后一个DBW是16,那么数据类型长度为2,count就需要传18才能获取到
                var bytes = plc.ReadBytes(DataType.DataBlock, 1, 0, 18);
                Console.WriteLine(bytes);

                var bool1 = bytes[0].SelectBit(0);
                Console.WriteLine("DB1.DBX0.0: " + bool1);
                var bool2 = bytes[0].SelectBit(1);
                Console.WriteLine("DB1.DBX0.0: " + bool2);

                // Int
                int intVariable = S7.Net.Types.Int.FromByteArray(bytes.Skip(2).Take(2).ToArray());
                Console.WriteLine("DB1.DBD2.0: " + intVariable);
                //  Real
                Double realVariable = S7.Net.Types.Double.FromByteArray(bytes.Skip(4).Take(4).ToArray());
                Console.WriteLine("DB1.DBD4.0: " + realVariable);

                // DWord
                uint dWordVariable = S7.Net.Types.DWord.FromByteArray(bytes.Skip(12).Take(4).ToArray());
                Console.WriteLine("DB1.DBD12.0: " + dWordVariable);
                // Word
                var wordVariable = S7.Net.Types.Word.FromByteArray(bytes.Skip(16).Take(2).ToArray());
                Console.WriteLine("DB1.DBW16.0: " + wordVariable);
                #endregion
View Code

 

posted @ 2022-11-10 15:23  noigel  阅读(433)  评论(0编辑  收藏  举报
js脚本