comm

S7-1200PLC 两台CPU之间Modbus RTU通信

北战南征 提交于 2020-03-08 16:47:02
硬件:cpu 1214C 目的:建立两台cpu之间的Modbus RTU通信 软件:Portal V14SP1 Modbus RTU是一种单主站的主从通信模式,Modbus网络上只能有一个主站存在,主站在Modbus网络上没有地址,每个从站必须有唯一的地址,从站的地址范围为0 - 247,其中0为广播地址,从站的实际地址范围为1 - 247。 本例中使用的为CM1241 RS422/485模块,将其组态为Mdbus RTU主站时,支持最多与32个Modbus RTU从站建立通信。 RS485接口的接线 西门子Modbus通信使用的是DB9针RS485串行接口 *RS422和RS485其实并没有定义接口标准,具体采用什么接口,接口中使用哪些引脚,完全取决于设备设计生产商自己的定义 CM1241 RS422/RS485模块针脚的定义如下,RS485通信模式下,我们需要用到的针脚为3号和8号针脚 设备RS485接口之间的接线可以参考下图,本例中T/R+和485+对应的就是DB9针3号引脚,T/R-和485-对应的是DB9针8号引脚 硬件组态 1.插入两台cpu 1214C,为两台PLC分别添加CM1241 RS422/RS485模块 2.分别对PLC_1和PLC_2的RS485模块进行组态配置 3.记录下硬件标识符 软件编程 Modbus RTU主站编程 1.我们将PLC

sql 分页存储过程及其调用

若如初见. 提交于 2020-03-06 05:41:27
GO /****** Object: StoredProcedure [dbo].[proc_Data] Script Date: 12/10/2015 18:17:12 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /********************************************************* * 作 用:数据分页(完整SQL分页存储过程(支持多表联接)) * 作 者: * 创建日期: * 使用说明: 1、单表调用方法:EXEC proc_DataPagination @tblName = 'ipa',@fldName = '*',@pageSize =50,@page = 6789,@fldSort = '',@Sort = 1,@strCondition = '',@ID = 'id',@Dist = 0,@pageCount = null,@Counts = NULL 2、多表调用方法:EXEC proc_DataPagination @tblName = 'Info LEFT JOIN InfoType it ON it.typeid=Info.tid',@fldName = 'info.*,it.tname',@pageSize =50,@page = 1806,

ubuntu16.04中进行ROS通信编程-----话题编程

风流意气都作罢 提交于 2020-03-04 15:36:28
ROS通信编程-----话题编程 作为嵌入式系统应用开发的重要支柱之一的ROS,是我们学习嵌入式开发的第一步,既要学习ROS,我们就得知道ROS怎么使用,今天,林君学长带大家开始学习ROS的第一步: ROS通信编程—话题编程 一、创建一个工作区 工作区可以作为一个独立的项目进行编译,存放ROS程序的源文件、编译文件和执行文件。 1、建立工作区的,命令如下: 打开ubuntu16.04的终端,依次输入以下3个命令创建我们的工作区 1)、创建名为ros的工作区 mkdir - p ~ / ros / src 2)、进入创建工作区的src文件夹 cd ~ / ros / src 3)、生成工作区 catkin_init_workspace 2、这时候工作区是空的,但是我们依然可以进行编译 1)、进入工作区 cd ~ / ros / 2)、编译 catkin_make 这时候,会在当前文件夹下生成devel,build这两个子文件夹,在devel文件夹下能看到几个setup.*sh文件 1)、当前文件夹下生成devel,build这两个子文件夹如下图 2)、devel文件夹下能看到几个setup.*sh文件 3、接下来把工作区在bash中注册 1)、bash注册 source devel / setup . bash 2)、验证是否已经在bash中注册可以使用如下命令: echo $ROS

MPI学习笔记

荒凉一梦 提交于 2020-03-04 06:53:15
MPI学习笔记 利用MPI可以加速排序算法。 调用c++标准库的sort对1e7的数据进行排序,大约需要2.2秒的时间。 使用MPI将程序并行化,可以大大加快速度。 方法一 将主线程待排序的数组分为两部分,送到两个子线程排序,排完之后再送到主线程,将它们合并起来。 代码如下: # include <iostream> # include <mpi.h> # include <algorithm> using namespace std ; const int MAX_size = 1e7 ; int main ( int argc , char * * argv ) { int numprocs , myid , source ; MPI_Status status ; MPI_Init ( & argc , & argv ) ; MPI_Comm_rank ( MPI_COMM_WORLD , & myid ) ; MPI_Comm_size ( MPI_COMM_WORLD , & numprocs ) ; int siz = MAX_size / 2 ; if ( myid == 0 ) { int * nums = new int [ MAX_size + 3 ] ; for ( int i = 0 ; i < MAX_size ; i ++ ) { nums [ i ]

为什么要先 git add 才能 git commit

笑着哭i 提交于 2020-03-02 06:52:16
1. git 的 add ,是一个容易引起疑问的命令。在 subversion 中的 svn add 动作是将某个文件加入版本控制,而 git add的意义完全不同。 同时, git diff --cached 是比较 stage 的文件的差异的,也是一个不直观的命令。 github 2008年的blog中,也提到,容易引起混淆: https:// github.com/blog/196-git together-2008 http:// learn.github.com/p/norm al.html things like making use of the term ‘stage’ for things that happen in the index (such as using ‘git diff —staged’ instead of ‘git diff —cached’) is being worked on. I’m excited that staging files may soon be done via ‘git stage’ rather-than/in-addition-to ‘git add’. This is nice for new users who often have a hard time seeing why you have to

让你的 Linux 命令骚起来

…衆ロ難τιáo~ 提交于 2020-02-27 03:38:13
@[toc] 本文将为读者提供许多不同 Linux 命令的简要概述。 将特别强调解释如何在执行数据科学任务的上下文中使用每个命令。 我们的目标是让读者相信这些命令中的每一个都非常有用,并且让他们了解每个命令在操作或分析数据时可以扮演什么角色。 管道符号 “ | ” 许多读者可能已经熟悉了“ | ”符号,但是如果不熟悉的话,值得提前指出: 下面几节中讨论的命令的所有输入和输出都可以使用“ | ”符号自动“管道”输入到彼此中! 这意味着每个命令完成的所有特殊任务都可以链接在一起,从而生成非常强大和简短的迷你程序,所有这些都直接在命令行上完成! grep 什么是 grep? “ grep”是一个可用于从文件中提取匹配文本的工具。 您可以指定许多不同的控件标志和选项,这些标志和选项允许您非常有选择性地确定希望从文件或流中提取哪些文本子集。 Grep 通常用作“面向行”的工具,这意味着在找到匹配的文本时,Grep 将打印该行上的所有文本,尽管您可以使用“-o”标志只打印匹配的行部分。 为什么 grep 是有用的? “ grep”很有用,因为它是在大量文件中搜索特定文本块的最快方法。 一些很好的用例有: 从巨大的 web 服务器日志中过滤访问特定的 web 页面; 为特定关键字的实例搜索代码库(这比使用 Eclipse Editor 的搜索要快得多,也更可靠) ; 在 Unix

[POI2001] 和平委员会 Peaceful Commission——2-sat(dfs构造字典序最小解)

帅比萌擦擦* 提交于 2020-02-24 18:01:10
题面    HDU1814 解析    2-sat裸题, 求字典序最小的解   我一开始试图用拓扑序求字典序最小的解,YY了一阵,打完代码,无论如何都要WA,于是弃疗了,至今不知为什么会错,也许是我太菜了吧,于是学习了一下dfs构造字典序最小解的方法,时间复杂度是O(nm)的   基本思路同拓扑序构造可行解一样,用染色法。但dfs是直接在原图中跑的,因此要传递选择的标记,也就是颜色。从小到大对每一个没有染色的点$j$尝试染上选择的颜色,在对称点$j'$(点$j$的编号小于点$j'$的编号)上染上不选的颜色,传递选择颜色时如果没有遇到不选的颜色,说明染色方案成功,否则失败,再给点$j'$染上选择的颜色 ,点$j$染上不选的颜色,进行相同操作,如果仍然失败,则说明该情况没有可行解。   HDU上有一个坑点:多组数据。(我的英语菜得不谈,这个东西搞了我半个小时)   代码: #include<cstdio> #include<vector> using namespace std; const int maxn = 8006; int n, m, stak[maxn], top, col[maxn<<1]; vector<int> G[maxn<<1]; int mir(int x) { return x&1? x+1: x-1; } bool paint(int x) { if(col

Sql Server参数化查询之where in和like实现详解

荒凉一梦 提交于 2020-02-24 08:40:39
转 “ Sql Server参数化查询之where in和like实现详解 文章导读 拼SQL实现where in查询 使用CHARINDEX或like实现where in 参数化 使用exec动态执行SQl实现where in 参数化 为每一个参数生成一个参数实现where in 参数化 使用临时表实现where in 参数化 like参数化查询 xml和DataTable传参 身为一名小小的程序猿,在日常开发中不可以避免的要和where in和like打交道,在大多数情况下我们传的参数不多简单做下单引号、敏感字符转义之后就直接拼进了SQL,执行查询,搞定。若有一天你不可避免的需要提高SQL的查询性能,需要一次性where in 几百、上千、甚至上万条数据时,参数化查询将是必然进行的选择。然而如何实现where in和like的参数化查询,是个让不少人头疼的问题。 where in 的参数化查询实现 首先说一下我们常用的办法,直接拼SQL实现,一般情况下都能满足需要 string userIds = "1,2,3,4"; using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); SqlCommand comm = new SqlCommand(); comm.Connection

Oracle中NVL函数的用法详解

限于喜欢 提交于 2020-02-12 20:45:39
NVL函数可以用在 判断列值是否为空 的情况。 1. 如果列值不为空,则返回列值本身的值 2. 如果列值为空,则返回该函数中第二个参数的值 函数语法:NVL(参数1,参数2) 举个简单的例子: 列出emp表中comm列值不为空的员工姓名,SQL实现如下: select ename from emp where nvl(comm,0)>0; 首先,我们通过以下sql先看一下nvl函数的返回值情况: select ename,nvl(comm,0) from emp; 通过上面实例,可以看出为空的comm列值返回值为0 所以我们可以通过返回值大于0的条件来取出comm不为空的员工。 当然了,不为空的条件也可以用 is not null 来实现: select ename from emp where comm is not null; 来源: CSDN 作者: 我是一名程序猿 链接: https://blog.csdn.net/baidu_35901646/article/details/104283515

[LeetCode 解题报告]236. Lowest Common Ancestor of a Binary Tree

我的未来我决定 提交于 2020-02-08 18:20:52
Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree. According to the definition of LCA on Wikipedia : “The lowest common ancestor is defined between two nodes p and q as the lowest node in T that has both p and q as descendants (where we allow a node to be a descendant of itself ).” Given the following binary tree: root = [3,5,1,6,2,0,8,null,null,7,4] Example 1: Input: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1 Output: 3 Explanation: The LCA of nodes 5 and 1 is 3. Example 2: Input: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 4 Output: 5