博途 TIA Portal之1200做从站与调试助手的TCP通讯

其实,1200做从站与调试助手做TCP通讯很简单,只需要在组态时把“主动建立连接”放在对侧即可。但是我们还是要从头讲起,以方便没有基础的朋友能直接上手操作。

1、硬件准备

1200PLC一台,带调试助手的PC机一台,调试助手是我经常使用HslCommunicationDemo。网线2根,交换机一台,都是常规的。

2、配置的方法

与1200做主站与调试助手的TCP通讯基础上是相同的。

关于1200做主站与调试助手的TCP通讯详见以下链接::博途 TIA Portal之1200做主站与调试助手的TCP通讯-优快云博客

2.1在博途中新建项目

添加设备时添加1200PLC,同时在“属性”/“以太网设置”中设置“IP地址”,新建“子网”,开启“系统和时钟存储器”。

开启“系统和时钟存储器”的目的是的编程时偷懒,可以周期性发送数据。

2.2、新建全局DB块,并取消勾选“块的优化访问”,新建2个变量,这样就可以收发数据了。

因为篇幅的限制,我每次只开一个数组的显示,但是朋友你要懂得,你需要的数据是多少个。

关于“偏移量”的显示,再说一遍,是在取消勾选“块的优化访问”属性后,需要“编译”一遍才会有。

2.3、编程

2.3.1程序

VAR
  TSEND_C_Instance {S7_SETPOINT := 'True'} : TSEND_C;
  TRCV_Instance {S7_SETPOINT := 'True'} : TRCV;
  UiVar : UInt;
  
END_VAR
#TSEND_C_Instance(CONNECT:="PLC_1_Send_DB",
                  DATA:=P#DB1.DBX0.0 Word 10,//注意地址指针的写法
                  CONT := TRUE,
                  REQ := "Clock_1Hz",
                  LEN := 20);
 
#TRCV_Instance(DATA:=P#DB1.DBX20.0 Word 10,//注意地址指针的写法
               ID:=1,                //此行需要手输入
               EN_R := TRUE,
               LEN := 20,
               RCVD_LEN=>#UiVar);

从上面的程序中可知,我调用了2个指令TSEND_C和TRCV。有两点需要注意:A、TRCV指令中“ID:=1”是查看过TSEND_C组态信息的“连接ID”后手动输入的,指令中没有链接ID就无法接收数据;B、带“_C”的指令组态时会有建立连接的功能,展现给我们看的就是如下图所示的配置:

2.3.2、TSEND_C组态如下

注意:“主动建立连接”的单选框变了。指令中“_C”代表建立连接,但是不代表主动建立连接。“主动建立连接”代表是主站,没有选此项的代表是从站。上图可能是与博途做主站时唯一的不同点了。

带“_C”的组态时有“连接参数”的选项卡,指令中不带“_C”就没有这个选项卡。当我们与TRCV指令对比一下就比较清楚了。

注意上图中的起始地址,在组态时这样配置了,编译时会报错,需要改为程序中绝对地址的指针。

2.3.3、TRCV组态

从上图中我们可以看到,没有“_C”的指令是没有“连接参数”这个选项卡的;同时,在这个组态中,也没有链接ID的选项,因此我们需要的程序中手输进去,才能正常通讯。

3、调试

3.1调试助手的设置

调试前有一点需要说明,调试助手中有“本地端口”需要设置,否则不能建立连接。当本地端口为空时,会收到报错信息,如下图所示。

3.2、PLC发给调试助手的数据

调试助手侧收到的信息如下图所示。

因为调试助手中是以字节显示的,而PLC发的是WORD,因此调试助手中两个字节组成一个字,即可发现,两者信息一致。

3.3调试助手发送给PLC的数据

PLC中收到的信息如下所示。

至此,显示结束。

读过该文章,如果你觉得有用,期待您的关注,分享、点赞和收藏;如有问题沟通或指正,欢迎评论留言。如有其它品牌工控产品诉求,也可留言,作者择机上新;感谢您浏览本到文章,作者是一个工控博主,长期从事工控行业技术;

### 回答1: 西门子软件是一款用于编程控制西门子PLC的软件。而在PLC控制系统中,数据的传输和收取非常重要,这就需要使用如tsend_c和trcv_c等发送函数。 这里给出一个使用tsend_c和trcv_c发送函数的编程示例: - 首先,需要在程序中定义用来传输数据的变量,比如一个长度为100的整型数组buffer。需要注意的是,发送和接收的buffer大小需要一致。 - 接下来,定义发送函数。使用tsend_c函数需要指定参数,包括数据发送的目标ID、发送的数据长度和数据缓冲区。比如,定义一个send_data函数: ``` int send_data(int dest_id, int data_len, int *buffer) { int return_val; return_val = tsend_c(dest_id, data_len, buffer); return (return_val); } ``` 这个函数会向dest_id目标ID发送指定长度的数组buffer。tsend_c会返回发送状态,我们可以通过定义的return_val变量来保存并返回给调用者。 - 最后,定义接收函数。使用trcv_c函数需要指定参数,包括数据接收的目标ID、接收的数据长度和数据缓冲区。比如,定义一个receive_data函数: ``` int receive_data(int dest_id, int data_len, int *buffer) { int return_val; return_val = trcv_c(dest_id, data_len, buffer); return (return_val); } ``` 这个函数会从dest_id目标ID接收指定长度的数组buffer。trcv_c会返回接收状态,我们可以通过定义的return_val变量来保存并返回给调用者。 在程序中,我们可以根据需要反复调用send_data和receive_data函数来实现数据的发送和接收。这样,我们就能够实现在PLC控制系统中可靠地进行数据传输和收取。 ### 回答2: 西门子作为最流行的自动化编程软件之一,通过一系列函数可实现对PLC的编程控制。其中,tsend_c和trcv_c函数是实现数据通信的关键函数,用于在PLC控制系统中进行数据的发送和接收。 tsend_c函数用于向数据发送方向发送一条数据报文,它的输入参数包括一个通道号和一个存放数据的缓冲区指针。该函数会自动处理数据传输并将数据传输结果进行判断和返回。 例如,通过tsend_c函数,可以将设备的温度数据发送至PLC控制器,并根据数据传输的结果进行进一步的处理,如根据温度数据的不同范围来控制设备的运行状态。 trcv_c函数则用于接收数据,将PLC控制器发送过来的数据报文存放在用户定义的缓冲区中。该函数需要用户指定缓冲区指针、数据长度和从PLC控制器读取的数据的最大长度等信息。 例如,通过trcv_c函数可以实现对PLC控制器中设备运行状态的监测,将PLC控制器中的设备状态数据读取到设备控制软件中,并根据读取的数据进行相应的控制。 总之,tsend_c和trcv_c函数是实现PLC控制系统外部设备数据通信的重要函数,它们的使用在自动化控制系统中具有重要的意义,可以实现设备之间数据交流和控制。 ### 回答3: 西门子是一款用于自动化开发的软件平台,支持多种编程语言和通讯协议。其中,tsend_c和trcv_c函数是用于发送和接收CAN总线数据的函数,属于C语言编程库中的一部分。 对于使用这两个函数,需要首先进行初始化操作,包括申请一个CAN口,设置CAN的波特率和滤波器等参数。然后,可以使用tsend_c函数向CAN总线发送数据。该函数需要指定发送的ID号、数据长度、数据指针等参数,可以通过该函数实现向远程设备发送控制指令或者传输数据等功能。 在接收CAN总线数据时,可以使用trcv_c函数进行数据接收。该函数需要指定接收的ID号和数据缓存区等参数,可以实现对CAN总线接收数据的处理。 需要注意的是,在使用tsend_c和trcv_c函数时,需要按照指定的格式进行数据编码和解码,以确保数据的正确性和完整性。同时,在进行数据传输时,还需要考虑数据的实时性和安全性等方面的问题,避免数据的丢失和安全漏洞的出现。 总的来说,西门子通过tsend_c和trcv_c函数的编程示例,为工程师提供了一种方便快捷的CAN总线通讯解决方案,有助于提高通讯效率和设备控制的精度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值