首页 > 其他分享 >PLC的开放式用户协议

PLC的开放式用户协议

时间:2024-05-12 09:41:04浏览次数:18  
标签:FB110 用户 连接 TSAP PLC 开放式 ShareDB tcon ID

1. OUC
开放式用户协议,包括ISO,ISO-on-TCP,TCP/IP,UDP四种。西门子PLC中有多种不同的方式建立连接。

2. 在硬件组态中建立TCP通信

  • 打开硬件组图,网络视图
  • 添加新连接
  • 填入本地ID,关于本地ID:针对1513实测过,ID的取值范围从16#01到16#999,但是16#01-16#99大概率被系统占用了,可用范围从16#100开始。西门子本身没有规定ID必须从多少开始,所以在允许范围类,随便填。一条TCP连接(或者一个通信设备之间)分配一个唯一的ID
    • 主动连接:如果本地对象是客户端就勾选主动建立连接,如果做服务器可以不用勾选
    • 添加后关闭页面

  • 设置伙伴参数
    • 本地端口和伙伴端口可以不一致,也可以一致,本地端口甚至可以不用填写。端口设定范围从1-65535,也可以自由定义。一般约定从2000开始(ipv4)
    • 伙伴设备可以选择不指定

  • 网络视图的连接建立好之后就可以在程序中调用TSENDTRCV指令用作收发数据了。
//ID就是在网络视图里面设置的ID
"TSEND_DB".TSEND(REQ:="Tag_1",
                 ID:=16#100,
                 DATA:=_variant_inout_);

"TRCV_DB".TRCV(EN_R:="Tag_2",
               ID:=16#100,
               DATA:=_variant_inout_);
  • 在硬件组态里面建立TCP连接的方式会在“系统资源”里面使用一条OUC资源,连接在线时也能在线看到连接详情

2. 参数化的方式建立TCP连接

  • 在这种方式中,不需要在硬件组态里面配置连接,它在资源占用上是动态化的,“系统资源”里面体现不出来,但是在线的时候看得到连接详情
  • TCON连接参数设置
"_ShareDB".FB110.tcon.I_req := NOT "_ShareDB".FB110.tdiscon.I_req;

"_ShareDB".FB110.tcon.I_id := 16#100;//ID
"_ShareDB".FB110.tcon.IO_connect.InterfaceID := 64;//Local~PROFINET_接口,hw_Interface

//connect参数,ID,Type,连接方式
"_ShareDB".FB110.tcon.IO_connect.ID := 16#100;//ID
"_ShareDB".FB110.tcon.IO_connect.connType := 11;//11 TCP,19 UDP
"_ShareDB".FB110.tcon.IO_connect.activeEst := 1;//=1:建立主动连接 =0:建立被动连接

//伙伴端点IP地址
"_ShareDB".FB110.tcon.IO_connect.reAddress[0] := 192;
"_ShareDB".FB110.tcon.IO_connect.reAddress[1] := 168;
"_ShareDB".FB110.tcon.IO_connect.reAddress[2] := 0;
"_ShareDB".FB110.tcon.IO_connect.reAddress[3] := 241;

//远程和本地端口
"_ShareDB".FB110.tcon.IO_connect.rePort := 6688;//ipv4 0-65535
"_ShareDB".FB110.tcon.IO_connect.LoPort := 2000;//ipv4 1-49151

#TCON_Instance(REQ:="_ShareDB".FB110.tcon.I_req,
               ID:="_ShareDB".FB110.tcon.I_id,
               DONE=>"_ShareDB".FB110.tcon.O_done,
               BUSY=>"_ShareDB".FB110.tcon.O_busy,
               ERROR=>"_ShareDB".FB110.tcon.O_error,
               STATUS=>"_ShareDB".FB110.tcon.O_status,
               CONNECT:="_ShareDB".IO_connect);
  • 关于connect参数的数据类型

    • TCP_IP_v4结构如下:
    • 对于ISO-on-TCP,使用TCP_IP_RFC结构
    • 其他结构参见帮助
  • 发送指令,异步指令

//TSEND
"_ShareDB".FB110.tsend.I_id := 16#100;
"_ShareDB".FB110.tsend.I_len := 10;

#TSEND_Instance(REQ:="_ShareDB".FB110.tsend.I_req,
                ID:="_ShareDB".FB110.tsend.I_id,
                LEN:="_ShareDB".FB110.tsend.I_len,//处理长度,1200=8.192kb,1500=65.536kb,CM1542=240bytes
                DONE=>"_ShareDB".FB110.tsend.O_done,
                BUSY=>"_ShareDB".FB110.tsend.O_busy,
                ERROR=>"_ShareDB".FB110.tsend.O_err,
                STATUS=>"_ShareDB".FB110.tsend.O_status,
                DATA:="_ShareDB".FB110.tsend.IO_data);//数据指针,发送端和接收端的数据格式要一致
  • 接收指令,TRCV为异步指令
    • ADHOC接口用于指定TCP协议下是否启动动态长度接收功能(对ISO-on-TCP或者FDL无效);ADHOC=0,按length指定的长度接收数据;ADHOC=1,至少会接收到一个可用字节数据
//TRCV
"_ShareDB".FB110.trcv.I_R := TRUE;
"_ShareDB".FB110.trcv.I_id := 16#100;
"_ShareDB".FB110.trcv.I_len := 10;
"_ShareDB".FB110.trcv.I_ADHOC := 0;

#TRCV_Instance(EN_R:="_ShareDB".FB110.trcv.I_R,//使能接收
               ID:="_ShareDB".FB110.trcv.I_id,
               LEN:="_ShareDB".FB110.trcv.I_len,//在ADHOC=0时指定长度
               ADHOC:="_ShareDB".FB110.trcv.I_ADHOC,//指定以固定长度接收或者动态长度接收
               NDR=>"_ShareDB".FB110.trcv.O_NDR,//作业过程标志位 =1,Done
               BUSY=>"_ShareDB".FB110.trcv.O_busy,
               ERROR=>"_ShareDB".FB110.trcv.O_err,
               STATUS=>"_ShareDB".FB110.trcv.O_status,
               RCVD_LEN=>"_ShareDB".FB110.trcv.O_len,
               DATA:="_ShareDB".FB110.trcv.IO_data);//接收到的数据,格式和发送端一致
  • 断开连接
//TDISCON
"_ShareDB".FB110.tdiscon.I_id := 16#100;

#TDISCON_Instance(REQ:="_ShareDB".FB110.tdiscon.I_req,
                  ID:="_ShareDB".FB110.tdiscon.I_id,//要终止作业的ID
                  DONE=>"_ShareDB".FB110.tdiscon.O_done,
                  BUSY=>"_ShareDB".FB110.tdiscon.O_busy,
                  ERROR=>"_ShareDB".FB110.tdiscon.O_error,
                  STATUS=>"_ShareDB".FB110.tdiscon.O_status);
  • 各个指令的"属性"-"组态"-"块参数"
    • 如图,这些块参数其实就是指令接口填写的内容,接口填写完成后这里会自动生成相应的变量符号名
  • 这个方法有个特点,所有的参数都可以动态化,动态配置,由程序更改,更好的实现自动化。但是它看不了也用不了TCON关于“属性”-“组态”-“连接参数”里面的静态设置。

3. 参数化但使用"属性"-"组态"-"连接参数"

  • 不同于第二种方法,这是一种介于第一种和第二种方法之间的方法,它既需要填写常量的ID,IP等等信息,但是又不会在“系统资源”里显示出来,属于参数化方法。
  • 依旧使用TCON,TSEND,TRCV,TDISCON等方法来做程序
  • 如图,TCON的参数不用在程序里填写,在“属性”-“组态”-“连接参数”里定义,定义为固定的设置

4. OUC相关指令以及它们的区别和应用场景

5. 关于TSAP的概念

  • TSAP(Transport Server Access Point 传输服务访问点)是用于ISO-on-TCP上的两个参数,有本地TSAP和伙伴TSAP。用2个字节表示

  • 本地TSAP和远程TSAP可以相同,因为通过不同的MAC地址建立的连接是唯一的,但如果要在两个站之间建立多个连接,则远程TSAP和本地TSAP必须不同。

  • TSAP是ISO传输连接中的相关概念,ISO传输连接的过程如下:

  • TSAP的结构

    • TSAP(ASC II)
    • TSAP-ID(Hex)(系统自动生成)
  • TSAP的含义


  • TSAP分配案例(如何填写TSAP)

    • 在S7协议下的规定
      • 对于S7-1500CPU:"SIMATIC-ACC"<nnn><mm>,nnn = 本地 ID,mm = 任何值
      • 对于S7-300/400:<xx>.<yz>,xx = 连接资源号,y = 机架号,z = 插槽号


请参见不同连接组态的以下 TSAP 示例
两个 S7-1200 CPU(固件版本均为 V2.0)之间的连接:
S7-1200 CPU“A”(固件版本为 V2.0,本地 ID 为 100):
TSAP: SIMATIC-ACC10001
S7-1200 CPU“B”(固件版本为 V2.0,本地 ID 为 5AE):
TSAP: SIMATIC-ACC5AE01
两个 S7-1200 CPU(固件版本分别为 V2.0 和 V1.0)之间的连接:
S7-1200 CPU(固件版本为 V2.0,本地 ID 为 1FF):
TSAP: SIMATIC-ACC1FF01
S7-1200 CPU,固件版本为 V1.0(机架 0,插槽 1,连接资源 03):
TSAP: 03.01
S7-1200 CPU(固件版本为 V2.0)与 S7-300/400 CPU 之间的连接:
S7-1200 CPU,固件版本为 V2.0(机架 0,插槽 1,连接资源 12):
TSAP: 12.01
S7-300/400 CPU(机架 0,插槽 2,连接资源 11):
TSAP: 11.02
  • 在ISO-on-TCP下的实例
    • PLC-PLC,ID由系统自动生成,TSAP可空
    • 本地ASC II - TSAP

标签:FB110,用户,连接,TSAP,PLC,开放式,ShareDB,tcon,ID
From: https://www.cnblogs.com/xiacuncun/p/18186748

相关文章

  • FM20S用户手册-Linux开发环境搭建
     ......
  • ABP-VNext 用户权限管理系统实战06---实体的创建标准及迁移
    在apb-vnext的实体的创建中可以确实字段的长度、说明、对应的表、表中给字段加的索引以项目中的订单表为例,如下:[Comment("订单主表")][Table("t_voucher_order")] [Index(nameof(VoucherCode))]publicclassOrder:AuditedAggregateRoot<Guid>,ISoftDelete,IMultiTen......
  • 3-1用户认证
    3.1用户认证用户认证需要--with-http_auth_request_module 系统默认已安��vim/usr/local/nginx/conf/nginx.confserver{        listen       80;           server_name  localhost;        auth_basic"InputPassword:";   ......
  • 开放式服务管理系统
    开放式服务管理系统是一个灵活且适应性强的解决方案,它旨在覆盖各类流程服务场景,以满足不同组织和行业的多样化需求。这种系统通常提供了一套完整的工具和功能,用于管理、监控和优化各种服务流程,从而确保高效、可靠和一致的服务交付。在满足ITIL(信息技术基础设施库)/ITSS(信息技术服......
  • 如何发现用户痛点并解决
    发现用户痛点并解决是产品开发、市场营销和服务设计中至关重要的环节。这需要深入了解用户的需求、行为习惯以及他们在使用产品或服务过程中遇到的问题。以下是一些有效的方法来发现并解决用户痛点:1.直接沟通与访谈一对一访谈:与目标用户进行深入交谈,了解他们的日常习惯、需求......
  • Windows 平台上有许多第三方文本编辑器,代码编辑器,它们提供了比系统自带记事本更丰富的
    Windows平台上有许多第三方文本编辑器,代码编辑器,它们提供了比系统自带记事本更丰富的功能和更友好的用户界面。以下是一些常见的第三方记事本软件文本编辑器,代码编辑器:Notepad++:Notepad++是一款免费开源的文本编辑器,支持多种编程语言的语法高亮显示和语法折叠,还具有查找......
  • vsftpd多实例多用户不同权限
    ftp配置文件实现匿名用户和密码用户同样权限,更改#anon_other_write_enable=NO改配置可以实现匿名用户只能上传下载不能修改删除。setfacl-dR-mu:ftp:rwx/data/ftp2/dachui/ 设置ftp用户家目录acl权限可以实现同密码用户一样的权限。复制该配置文件修改改端口号或liste_ad......
  • 用户管理实现
    ```java//剩下的就是用户的增删改了,大致思路都是一样的,但是都需要处理事务!//service层的举例:publicbooleanadd(Useruser){ booleanflag=false; Connectionconnection=null; try{ connection=BaseDao.getConnection(); connection.setAutoCommit(false......
  • mysql8.0数据库添加用户和授权
    MySql8有新的安全要求,不能像之前的版本那样一次性创建用户并授权需要先创建用户,再进行授权操作1.创建新用户createuser'username'@'host'identifiedby'password';其中username为自定义的用户名;host为登录域名,host为'%'时表示为任意IP,为localhost时表示本机,或者填写指......
  • AR精灵——风险分析和典型用户
    风险分析典型用户典型用户一名字:盛宇伟年龄:28岁,收入:每月约8000元代表的用户在市场上的比例和重要性:虽然使用AR精灵的付费用户比例较少,但他们对产品的热爱和忠诚度很高,他们的反馈和建议对产品的改进至关重要。使用这个软件的典型场景:李梅在下班后回到家中,打开AR精灵,通过AR......