- 博客(10)
- 收藏
- 关注
原创 E37(HSMS)的重点总结-2(完结)
主数据消息(Primary Data Message)、Select.req、Deselect.req、Linktest.req 的系统字节,必须与 “同一连接端发起的所有当前未完成事务” 的系统字节不同,且必须与 “最近完成的事务” 的系统字节不同;SType=2 的 HSMS 消息为 “选择响应” 控制消息,用于响应选择请求(Select.req),是 HSMS 通信建立流程的一部分.系统字节(System Bytes):必须与对应的选择请求(Select.req)的系统字节完全相同。
2025-09-26 12:05:33
748
原创 E37(HSMS)的重点总结-1
HSMS 要求执行此流程时,连接需处于 “已选择(SELECTED)” 状态。消息长度(Message Length):大端序(MSB First),指定 “消息报头(Message Header)” 与 “消息文本(Message Text)” 的总字节数。链路测试(Linktest)用于确认 TCP/IP 和 HSMS 通信的运行完整性,在 “已连接(CONNECTED)” 状态下的任何时刻均可执行。“已连接” 状态的子状态,此时尚未建立任何 HSMS 会话,或所有先前建立的 HSMS 会话均已结束。
2025-09-24 17:03:51
753
原创 vs代码调试时的一些辅助功能
XAML控件的属性在VS中默认显示在同一行,当设置的属性比较多时,视觉上不那么清晰,可以调整设置,使控件的每个属性单独占一行,比较直观,便于操作。如何恢复呢,将鼠标移到下图中箭头所在区域,使得鼠标显示成上下箭头的模式,双击便可恢复,这个功能可能将同一个文档的代码分割成两个区域,便于调试代码。这很有用,因为它们彼此独立操作,因此可以使用它们在不同位置处理代码。2、回到XAML界面,在控件代码区域单击,使用快捷键。1、在VS的工具、选项、文本编辑器中设置。在代码编辑器的滚动条中,右上角有一个。
2025-09-04 09:51:17
243
原创 三菱FX系列FX3U-16CCL-M cclink主站模块设置方法
在GX work2中只需要设置特殊模块号,按顺序在PLC模块的后边,如果是第一个就设为0,站信息里,设置远程站的方式,以及占几个站号。下载到PLC中就可以了。它的意思是从第一个特殊cclink站中的BFM的#224区读取1个字,放到m10到m25当中去,k4表示4*4个位就是一个字。RX什么的参数不能设置,需要在程序中用FROM TO的方式设置。举例:from k0 k224 k4m10 k1。
2025-09-04 09:25:33
538
原创 三菱L系列PLC与机器人,智能相机之间的TCPIP通讯测试小结
最后在配置内部网络参数的打开设置时有1-16个通讯设备可以被选择,设置其中需要用的,配置第几个设备,在编程时,sp.socopen等网络参数命令是需要选择这个设备编号的。在使用GX WORK2设置PLC参数时因为是内置的网口,所以选择PLC参数设置中的内部网口,如果是扩展的,那么需要选择网络参数设置。如果只与编程器连接,在设备连接时可以选择直连,如果还有第三个设备需要通过交换机连接,那么要选择间接连接,然后搜索网络上的PLC设备,会出现PLC的IP然后强制关联上。我们用的也是这个协议。
2025-09-04 09:20:06
308
原创 c#关于Dictionary和Hashset中如何确认key或元素的唯一性
Dictionary是HashTable的泛型实现,那么在使用Add方法添加元素时,如果key已经存在,就会报错(可以改用直接赋值的方式避免错误),那Dictionary是如何知道元素已经存在的,尤其对于引用类型的key。如果两个同时满足就会抛异常。下面的代码是Dictionary反编译的源码,摘取了Add方法的源码。默认情况下,如果自定义的类型的GetHashCode返回的哈希码大概率不同(不绝对),所以如果需要使用引用类型做key的时候,应重写GetHashCode方法和Equals方法。
2025-09-03 15:35:28
235
原创 基恩士plc的ST编程
首先在数据类型中创建DI/DO/AI/AO的结构体和联合体,创建结构体的目的是为了后续在程序中可以直接使用变量名编程,而不是DI/DO/AI/AO这种方式(不宜维护)。如下图定义的是AI的联合体,然后在程序中需要对_AI进行赋值。基恩士PLC的FB支持内部变量的创建以及外部变量的创建,外部变量就是Argument,用于在外部程序调用时传递的变量类型。(3)、IO映射做好了后,便可以按功能创建FB块,比如Interlock、运动控制、HMI等功能块,这取决于每个项目的不同,创建的FB也不同。
2025-09-03 14:24:10
853
原创 vs2022中nuget不到结果
操作方法,在vs2022中点击工具->选项->Nuget包管理器->程序包源,然后点击+增加包源,并将原有的勾选取消,确认后再重新尝试nuget包。过程中可以观察vs2022是不是从刚刚创建的包源寻找,如果不是,可以尝试将其他的包源都删除掉,再次尝试。因为某种原因(PC端安装了加密软件,屏蔽了包源。),这种情况下可以尝试使用替代包源。
2025-09-03 13:21:31
464
原创 关于c#异步编程时的同步上下文的的理解SynchronizationContext
在程序开发时,尤其是在UI线程中开启异步调用(async/await)时,在await执行时,程序会自动将当前UI主线程的上下文传递给异步线程,同时将await后面的代码通过委托传递的方式传递过去。在主线程中避免使用Task.Result或Task.Wait方法,这两个方法是阻塞的,如果使用了这两个方法同步等待异步结果,那么很容易出现死锁,因为异步线程执行完成后,是要返回到主线程的同步上下文的,而此时主线程还在阻塞等待,就会出现死锁。同步模型的提供程序可以扩展此类,并为这些方法提供自己的实现。
2025-09-03 12:59:33
275
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅