Android 访问 西门子plc官网下载中心1200 DB块

【Siemens技术篇】TIA中S7-1200如何DB块之间复制 | 剑指工控西门子1200plc怎么将db块里的变量映射到输出q点里_百度知道
西门子1200plc怎么将db块里的变量映射到输出q点里
我有更好的答案
使用MOVE指令,或者MOVE_BLK块指令。
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。每日登录:+1西币&+1积分
立即签到已签到已签到0天
累计可抽西币次数:0次抽奖机会抽西币奖
累计可抽大奖次数:0次抽奖机会抽终极大奖
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。
&下次自动登录
绑定第三方账号登录 &
扫描二维码登录支持中心移动端
获取动态密码
售前文档售后文档
热门视频系列热门版区售后服务概述自助服务帮助信息
You are here:
S7-1200的全局DB数据块的简单...
热点活动:
置评已完成,谢谢!
您现在可以为该问题添加标签。
S7-1200的全局DB数据块的简单问题
- 已解决问题
创建了一个DB数据块,数据块放了一个数组。我想通过外部输入改变DB数据块的数组中的一个值,不知道怎么改。
图片说明:
产品版区:
悬赏西币:2 | 解决时间: 16:38:23 | 提问者:& - 新生&nbsp&nbsp第1级
问题ID:130505
看了这个问题的网友还看了
参见:S7-1200&间接寻址:
资深顾问&nbsp&nbsp第13级&
以下网友赞了您的问题:
hatian7628
填写您的评论...
提问者对于答案的评价:谢谢
将数组的单元变量的数据类型改成bool,就可以了。
置评专家:西门子自动化产品支持& 16:50:01
等您来回答
本版相关问题
作者/最新回复
最后回复时间
扫描打开手机版
支持中心新发布“关注”功能了!实时查看彼此动态,更方便地进行技术交流。
不管是“关注”与“被关注”,相信都是一个美好的开始!
还有多重奖励派送,快快行动起来吧!
20秒帮我们优化支持中心!
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
欢迎您来到找答案
在“找答案”,已有超过7万个被解决的技术问题供您参考!
西门子技术专家亲自把关!常规的,简单的问题,在这里您都可以找到答案!
遇到了问题,就来“找答案”提问。
点击搜索框右侧的提问按钮,只需2步就能成功提交问题!分分钟就有无数大侠前来帮你。
在“找答案”每天都有大量的新问题。
别犹豫,只需要点击问题下方的“我要回答”就能参与。答题不光有积分相送,也会给您积攒大侠人气。
“找答案”定期开展各种有奖活动期待您的参与。
更有机会参加西门子高端用户峰会。领略西门子的博大精深!本文将使用一个gitHub开源的组件技术来读写西门子plc数据,使用的是基于以太网的TCP/IP实现,不需要额外的组件,读取操作只要放到后台线程就不会卡死线程,本组件支持超级方便的高性能读写操作
github地址:&如果喜欢可以star或是fork,还可以打赏支持,打赏请认准源代码项目。
nuget地址:&&&&&&&&&&&&
github地址:&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&& 如果喜欢可以star或是fork,还可以打赏支持。
本项目目前支持C#语言和java语言,C#语言的功能比较齐全,java版本的库还在开发及完善中。
点击下载本组件的jar包。
代码使用支持的例子可以参照C#版本的,两者几乎是一模一样的,支持的数据类型也是一致的。
技术支持QQ群:&&(组件的版本更新细节也将第一时间在群里发布)最后编辑日期:日 09:44:41
里面各种小伙伴,为您解答数据交互,编程技巧,如果对本界面提供的API有任何疑问,都可以加群咨询,如果有更好的建议,欢迎提出。
组件的完整信息和其他API介绍参照:&& 组件的授权协议,更新日志,都在该页面里面。
本文将展示如何配置网络参数及怎样使用代码来访问PLC数据,希望给有需要的人解决一些实际问题。主要对西门子PLC的M,Q,I,DB块的数据读写,亲测有效。
此处使用了网线直接的方式,如果PLC接进了局域网,就可以进行远程读写了^_^
此处使用到了2个命名空间:
import HslCommunication.Profinet.Siemens.SiemensPLCS;
import HslCommunication.Profinet.Siemens.SiemensS7N
import HslCommunication.Core.Types.OperateResultExO
随便聊聊(C#版本服务器)
当我们一个上位机需要读取100台西门子PLC设备(此处只是举个例子,凡是都是使用Modbus tcp的都是一样的)的时候,你采用服务器主动去请求100台设备的机制对性能来说是个极大的考验,如果开100个线程去轮询100台设备,那么性能损失将是非常大的,更不用说再增加设备,如果搭建Modbus tcp服务器,就可以完美的解决性能问题,因为连接的压力将会平均分摊给每一台PLC,服务器端只要新增一个时间戳就可以知道客户端有没有连接上。
我们在100台PLC里都增加发送Modbus tcp方法,将数据发送到服务器的ip和端口上去,服务器根据站号来区分设备。这样就可以搭建一个高性能总站。&本组件支持快速搭建一个高性能的Modbus tcp总站。
关于两种模式
本组件所提供的所有客户端类,包括三菱,西门子,欧姆龙,modbus-tcp,以及SimplifyNet都是继承自双模式基类,双模式包含了短连接和长连接,下面就具体介绍下两个模式的区别
短连接:每次读写都是一个单独的请求,请求完毕也就关闭了,如果服务器的端口仅仅支持单连接,那么关闭后这个端口可以被其他连接复用,但是在频繁的网络请求下,容易发生异常,会有其他的请求不成功,尤其是多线程的情况下。
长连接:创建一个公用的连接通道,所有的读写请求都利用这个通道来完成,这样的话,读写性能更快速,即时多线程调用也不会影响,内部有同步机制。如果服务器的端口仅仅支持单连接,那么这个端口就被占用了,比如三菱的端口机制,西门子的Modbus tcp端口机制也是这样的。以下代码默认使用长连接,性能更高,还支持多线程同步。
在短连接的模式下,每次请求都是单独的访问,所以没有重连的困扰,在长连接的模式下,如果本次请求失败了,在下次请求的时候,会自动重新连接服务器,直到请求成功为止。另外,尽量所有的读写都对结果的成功进行判断。
关于日志记录
暂时只是预留了接口,具体可以自己实现
关于两种协议
本组件支持的西门子通信有两种协议,一种是S7协议,在PLC侧几乎不需要配置参数,另一个协议Fetch/Write协议,相对比较麻烦一点,如果S7不方便读取的话,可以选择Fetch/Write,相对而言,S7更加方便点。
这两个协议除了实例化的类型不一致,读写PLC的代码和连接机制都是一致的,所以FW协议的具体代码就不粘贴了,详细参照下面的Demo项目。
访问测试项目(C#版本,可以方便测试)
在上述的github源代码里有个测试项目,HslCommunicationDemo,里面包含了各种客户端的Demo项目,不需要编写任何的代码就可以测试数据的访问了。
下载地址为:
演示项目(C#服务器+asp.net + C#客户端 + android客户端)
下面的三篇演示了具体如何去访问PLC的数据,我们在访问完成后,通常需要进行处理,以下的示例项目就演示了后台从PLC读取数据后,前台显示并推送给所有在线客户端的功能,客户端并进行图形化显示,具有一定的参考意义,项目地址为:
下面的图片示例中的左边程序就是服务器程序,它应该和PLC直接连接并接入局域网,然后把数据推送给客户端显示。注意:一个复杂高级的程序就应该把处理逻辑程序和界面程序分开,比如这里的服务器程序实现数据采集,推送,存储。让客户端程序去实现数据的整理,分析,显示,这样即使客户端程序因为BUG奔溃,服务器端仍然可以正常的工作。
S7协议下的tcp直接通讯,配置简单,一般PLC都支持
测试通过的PLC:1200系列&本人亲测
&&&&&&&&&&&&&&&&&&&&&&&&&&200smart& 感谢 無名①终止^^ 的测试
&&&&&&&&&&&&&&&&&&&&&&&&& 300系列& 感谢 懂PLC不懂c# 的测试
&&&&&&&&&&&&&&&&&&&&&&&&& 1500系列 感谢 ∮溪风-⊙_⌒ 的测试
&报文的格式参考了如下的两篇文章
如果你擅长于网络通信和组件开发,可以通过报文格式开发出自己的西门子通信库,我所做的就是基于报文格式进行了二次封装,隐藏了socket通信的细节,还包含了异常处理,提供了简单方便的API来读写数据。提供了整数数据的读写,字符串读写,来丰富各种需求,从事实上来说,只要可以读写字节,相当于任何数据了。
准备:在西门子PLC上配置好IP地址,就只有一个IP地址就够了,然后打开电脑的cmd指令,只要能ping通西门子PLC即可。
还需要在PLC侧配置打开& GET/SET通讯允许:(感谢网友 OLIFE 提供的图片) (如果碰到读取数据时出现长度验证失败的信息,请务必检查下面的勾是否打上)
最简单的一条应用,只需要两行代码,示例:读取M100的byte值
private static void SiemesTest(){
SiemensS7Net siemens_net = new SiemensS7Net(SiemensPLCS.S8.1.195");
System.out.println(siemens_net.ReadByte("M100").Content);
上述使用了短连接的模式,随用随连,我们下面演示长连接
SiemensS7Net siemens_net = new SiemensS7Net(SiemensPLCS.S8.1.195");
OperateResult connect = siemens_net.ConnectServer();
if(connect.IsSuccess){
System.out.println("connect success!");
System.out.println("failed:"+connect.Message);
程序退出的时候需要关闭长连接
siemens_net.ConnectClose();
以下演示了一些简单的常用的读写操作,不过并未对结果进行判断,实际生产代码中,需要对结果进行严格的判定
byte m100_byte = siemens_net.ReadByte("M100").C
short m100_short = siemens_net.ReadInt16("M100").C
int m100_int = siemens_net.ReadInt32("M100").C
long m100_long = siemens_net.ReadInt64("M100").C
float m100_float = siemens_net.ReadFloat("M100").C
double m100_double = siemens_net.ReadDouble("M100").C
String m100_string = siemens_net.ReadString("M100",(short) 10).C
siemens_net.Write("M100",(byte) 123);
siemens_net.Write("M100",(short) 123);
siemens_net.Write("M100",(int) 123);
siemens_net.Write("M100",(long) 123);
siemens_net.Write("M100", 123.456f);
siemens_net.Write("M100", 123.456d);
siemens_net.Write("M100","");
下面说明复杂的数据操作,并对结果进行判断,以及批量化的数据操作,例如读取M100-M109
OperateResultExOne&byte[]& read = siemens_net.Read( "M100", (short) 10 );
if(read.IsSuccess)
byte m100 = read.Content[0];
byte m101 = read.Content[1];
byte m102 = read.Content[2];
byte m103 = read.Content[3];
byte m104 = read.Content[4];
byte m105 = read.Content[5];
byte m106 = read.Content[6];
byte m107 = read.Content[7];
byte m108 = read.Content[8];
byte m109 = read.Content[9];
// 发生了异常
读写的数据类型,支持 M。I。Q,DB块,T、C
M & 地址示例:M100
I 地址示例:I100
Q 地址示例 Q100
DB 块。DB1.100 & & 对于smart200来说,V区100就是DB1.100
T 地址示例 T100
C 地址示例: C100
阅读(...) 评论()Smart1000鍙?互杩炴帴瑗块棬瀛怱7-1200PLC-涓撲笟鑷?姩鍖栬?鍧

我要回帖

更多关于 西门子plc官网 的文章

 

随机推荐