1、为工业增智 为教育赋能 本章目录8.1 数据类型介绍8.2 IO状态获取与参数设置8.3 基于Python SDK的MODBUS从机8.4 思考与练习为工业增智 为教育赋能 本章要求 知识目标 了解机械臂基于Python语言的用户IO SDK;了解机械臂基于Python语言的工具端IO SDK;了解机械臂基于Python语言的工具端电源SDK;了解机械臂基于Python语言的MODBUS从机的实现。为工业增智 为教育赋能8.1Python SDK IO与MODBUS模块数据类型介绍为工业增智 为教育赋能8.1 数据类型介绍8.1.1 工具端电源类型工具端电源类型Aub-i5机械臂工具端电源类型
2、设置代码如下所示:class RobotToolPowerType:OUT_0V=0 OUT_12V=1 OUT_24V=2 def _init_(self):Pass工具端IO电源类型可分为三种:(1)OUT_0V电源为0V。(2)OUT_12V电源为12V。(3)OUT_24V电源为24V。为工业增智 为教育赋能8.1 数据类型介绍8.1.2 工具端工具端IO地址类型地址类型Aub-i5机械臂工具端IO地址类型设置代码如下所示:class RobotToolIoAddr:TOOL_DIGITAL_IO_0=0 TOOL_DIGITAL_IO_1=1 TOOL_DIGITAL_IO_2=2
3、TOOL_DIGITAL_IO_3=3 def _init_(self):Pass工具端数字信号IO地址有四个,他们是:(1)TOOL_DIGITAL_IO_0。(2)TOOL_DIGITAL_IO_1。(3)TOOL_DIGITAL_IO_2。(4)TOOL_DIGITAL_IO_3。为工业增智 为教育赋能8.1 数据类型介绍8.1.3 工具端数字工具端数字IO类型类型Aub-i5机械臂工具端数字IO类型设置代码如下所示:class RobotToolDigitalIoDir:#输入 IO_IN=0#输出 IO_OUT=1 def _init_(self):Pass工具端数字IO类型有两种,
4、它们是:IO_IN:输入类型。IO_OUT:输出类型。为工业增智 为教育赋能8.1 数据类型介绍8.1.4 工具端工具端IO名称名称Aub-i5机械臂工具端IO名称设置代码如下所示:class RobotToolIoName:tool_io_0=T_DI/O_00 tool_io_1=T_DI/O_01 tool_io_2=T_DI/O_02 tool_io_3=T_DI/O_03 def _init_(self):Pass工具数字IO的名称有四种,它们是:(1)tool_io_0(工具io_0)。(2)tool_io_1(工具io_1)。(3)tool_io_2(工具io_2)。(4)too
5、l_io_3(工具io_3)。为工业增智 为教育赋能8.1 数据类型介绍8.1.5 用户用户IO类型类型Aub-i5机械臂用户IO类型的设置代码如下所示:class RobotIOType:#控制柜IO ControlBox_DI=0 ControlBox_DO=1 ControlBox_AI=2 ControlBox_AO=3#用户IO User_DI=4 User_DO=5 User_AI=6 User_AO=7 def _init_(self):Pass说明:在机器人IO类型包含了:(1)User_DI:用户数字输入类型。(2)User_DO:用户数字输出类型。(3)User_AI:用户
6、模拟量输入。(4)User_AO:用户模拟量输出。为工业增智 为教育赋能8.1 数据类型介绍8.1.6 用户用户IO名称名称Aub-i5机械臂用户IO名称的设置代码如下所示:class RobotUserIoName:#控制柜用户 user_di_00=U_DI_00 user_di_01=U_DI_01 user_di_02=U_DI_02 user_di_03=U_DI_03 user_di_04=U_DI_04 user_di_05=U_DI_05 user_di_06=U_DI_06 user_di_07=U_DI_07 user_di_10=U_DI_10 user_di_11=U_
7、DI_11 user_di_12=U_DI_12 user_di_13=U_DI_13 user_di_14=U_DI_14 user_di_15=U_DI_15 user_di_16=U_DI_16 user_di_17=U_DI_17#控制柜用户 user_do_00=U_DO_00 user_do_01=U_DO_01 user_do_02=U_DO_02 user_do_03=U_DO_03 user_do_04=U_DO_04 user_do_05=U_DO_05 user_do_06=U_DO_06 user_do_07=U_DO_07 user_do_10=U_DO_10 use
8、r_do_11=U_DO_11 user_do_12=U_DO_12 user_do_13=U_DO_13 user_do_14=U_DO_14 user_do_15=U_DO_15 user_do_16=U_DO_16 user_do_17=U_DO_17 def _init_(self):Pass为工业增智 为教育赋能8.1 数据类型介绍8.1.6 用户用户IO名称名称说明:机器人用户输入IO类型名称包含:(1)user_di_00:输入IO00。(2)user_di_01:输入IO01。(3)user_di_02:输入IO02。(4)user_di_03:输入IO03。(5)user_d
9、i_04:输入IO04。(6)user_di_05:输入IO05。(7)user_di_06:输入IO06。(8)user_di_07:输入IO07。(9)user_di_10:输入IO10。(10)user_di_11:输入IO11。(11)user_di_12:输入IO12。(12)user_di_13:输入IO13。(13)user_di_14:输入IO14。(14)user_di_15:输入IO15。(15)user_di_16:输入IO16。(16)user_di_17:输入IO17。机器人用户输出IO类型名称包含:(1)user_do_00:输出IO00。(2)user_do_01
10、:输出IO01。(4)user_do_02:输出IO02。(5)user_do_03:输出IO03。(6)user_do_04:输出IO04。(7)user_do_05:输出IO05。(8)user_do_06:输出IO06。(9)user_do_07:输出IO07。(10)user_do_10:输出IO10。(11)user_do_11:输出IO11。(12)user_do_12:输出IO12。(13)user_do_13:输出IO13。(14)user_do_14:输出IO14。(15)user_do_15:输出IO15。(17)user_do_16:输出IO16。(18)user_do_
11、17:输出IO17。为工业增智 为教育赋能8.2Python SDK IO与MODBUS模块IO状态获取与参数设置为工业增智 为教育赋能8.2 IO状态获取与参数设置8.2.1 获取机械臂接口板获取机械臂接口板IO配置配置Aub-i5机械臂接口板IO名称的配置的获取方法如下所示:#获取控制柜用户DIio_config=robot.get_board_io_config(RobotIOType.User_DI)#输出DI配置logger.info(io_config)#获取控制柜用户DOio_config=robot.get_board_io_config(RobotIOType.User_DO
12、)#输出DO配置logger.info(io_config)程序说明:robot是机械臂控制类程序说明如下:获取接口板IO的配置信息,参数为用户输入IO,返回值赋值到io_config变量中。:打印用户输入IO的配置信息,信息包括(地址,类型,id,数值和名称),如下:(接至P89打印输入IO配置)。:获取接口板IO的配置信息,参数为用户输出IO,返回值赋值到io_config变量中。为工业增智 为教育赋能8.2 IO状态获取与参数设置8.2.1 获取机械臂接口板获取机械臂接口板IO配置配置addr:30,type:4,id:F1,value:-1.0,name:F1,addr:31,type
13、:4,id:F2,value:-1.0,name:F2,addr:32,type:4,id:F3,value:-1.0,name:F3,addr:33,type:4,id:F4,value:-1.0,name:F4,addr:34,type:4,id:F5,value:-1.0,name:F5,addr:35,type:4,id:F6,value:-1.0,name:F6,addr:36,type:4,id:U_DI_00,value:-1.0,name:U_DI_00,addr:37,type:4,id:U_DI_01,value:-1.0,name:U_DI_01,addr:38,type
14、:4,id:U_DI_02,value:-1.0,name:U_DI_02,addr:39,type:4,id:U_DI_03,value:-1.0,name:U_DI_03,addr:40,type:4,id:U_DI_04,value:-1.0,name:U_DI_04,为工业增智 为教育赋能8.2 IO状态获取与参数设置8.2.1 获取机械臂接口板获取机械臂接口板IO配置配置addr:41,type:4,id:U_DI_05,value:-1.0,name:U_DI_05,addr:42,type:4,id:U_DI_06,value:-1.0,name:U_DI_06,addr:43,
15、type:4,id:U_DI_07,value:-1.0,name:U_DI_07,addr:44,type:4,id:U_DI_10,value:-1.0,name:U_DI_10,addr:45,type:4,id:U_DI_11,value:-1.0,name:U_DI_11,addr:46,type:4,id:U_DI_12,value:-1.0,name:U_DI_12,addr:47,type:4,id:U_DI_13,value:-1.0,name:U_DI_13,addr:48,type:4,id:U_DI_14,value:-1.0,name:U_DI_14,addr:49,
16、type:4,id:U_DI_15,value:-1.0,name:U_DI_15,addr:50,type:4,id:U_DI_16,value:-1.0,name:U_DI_16,addr:51,type:4,id:U_DI_17,value:-1.0,name:U_DI_17为工业增智 为教育赋能8.2 IO状态获取与参数设置8.2.1 获取机械臂接口板获取机械臂接口板IO配置配置打印输出IO配置信息(包括地址,类型,id,数值和名称)如下所示:addr:32,type:5,id:U_DO_00,value:-1.0,name:U_DO_00,addr:33,type:5,id:U_DO
17、_01,value:-1.0,name:U_DO_01,addr:34,type:5,id:U_DO_02,value:-1.0,name:U_DO_02,addr:35,type:5,id:U_DO_03,value:-1.0,name:U_DO_03,addr:36,type:5,id:U_DO_04,value:-1.0,name:U_DO_04,addr:37,type:5,id:U_DO_05,value:-1.0,name:U_DO_05,addr:38,type:5,id:U_DO_06,value:-1.0,name:U_DO_06,addr:39,type:5,id:U_DO
18、_07,value:-1.0,name:U_DO_07,addr:40,type:5,id:U_DO_10,value:-1.0,name:U_DO_10,addr:41,type:5,id:U_DO_11,value:-1.0,name:U_DO_11,为工业增智 为教育赋能8.2 IO状态获取与参数设置8.2.1 获取机械臂接口板获取机械臂接口板IO配置配置addr:42,type:5,id:U_DO_12,value:-1.0,name:U_DO_12,addr:43,type:5,id:U_DO_13,value:-1.0,name:U_DO_13,addr:44,type:5,id:
19、U_DO_14,value:-1.0,name:U_DO_14,addr:45,type:5,id:U_DO_15,value:-1.0,name:U_DO_15,addr:46,type:5,id:U_DO_16,value:-1.0,name:U_DO_16,addr:47,type:5,id:U_DO_17,value:-1.0,name:U_DO_17为工业增智 为教育赋能8.2 IO状态获取与参数设置8.2.2 设置机械臂接口板设置机械臂接口板IO状态状态Aub-i5机械臂接口板IO状态的设置代码如下所示:#设置用户输出IO-1状态为1(有效)robot.set_board_io_s
20、tatus(RobotIOType.User_DO,RobotUserIoName.user_do_01,1)logger.info(io_config)其中,robot是机械臂控制类,该行代码包括的三个参数说明如下:(1)参数1:机器人IO类型为用户输出。(2)参数2:机器人用户IO名称为用户输出1。(3)参数3:1(有效)。为工业增智 为教育赋能8.2 IO状态获取与参数设置8.2.3 获取机械臂接口板获取机械臂接口板IO状态状态Aub-i5机械臂接口板IO状态的获取,其程序块代码如下所示:#获取用户输入IO1状态io_status=robot.get_board_io_status(Ro
21、botIOType.User_DI,RobotUserIoName.user_di_03)logger.info(Digital input:)logger.info(io_status)robot是机械臂控制类,程序说明如下:获取接口板IO状态,该行代码包含2个参数,其中参数1:机器人IO类型为用户输入。参数2:机器人用户IO名称为用户输入3。返回值赋值给io_status。:打印“Digital input:”:打印获取到的输入IO-3的状态。程序运行结果如下:Digital input:0为工业增智 为教育赋能8.2 IO状态获取与参数设置8.2.4 获取机械臂工具端电源状态获取机械臂工
22、具端电源状态Aub-i5机械臂工具端电源状态的获取,其程序块代码如下所示:#获取工具端电压数值类型(0V 12V 24V)Tool_voltage_type=robot.get_tool_power_type()logger.info(Tool_voltage_type:)logger.info(Tool_voltage_type)robot是机械臂控制类,程序说明如下:获取工具端电源类型,返回值赋值给Tool_voltage_type。:打印“Tool_voltage_type:”。:打印获取到的工具端电源状态。程序运行结果如下:Tool_voltage_type:1(根据对应数据结构可看出
23、1代表12V)为工业增智 为教育赋能8.2 IO状态获取与参数设置8.2.5 设置机械臂工具端电源状态设置机械臂工具端电源状态Aub-i5机械臂工具端电源状态的设置代码如下所示:#设置工具端电源为24robot.set_tool_power_type(RobotToolPowerType.OUT_12V)其中,robot是机械臂控制类,该行代码的参数为输出2V。为工业增智 为教育赋能8.2 IO状态获取与参数设置8.2.6 设置机械臂工具端设置机械臂工具端IO类型类型Aub-i5机械臂工具端IO类型的设置代码如下所示:#设置工具端IO_1为输出robot.set_tool_io_type(Ro
24、botToolIoAddr.TOOL_DIGITAL_IO_1,RobotToolDigitalIoDir.IO_OUT)该行代码包括的2个参数说明如下:(1)参数1:工具io-1的名称(2)参数2:工具IO类型为输出为工业增智 为教育赋能8.2 IO状态获取与参数设置8.2.7 设置机械臂工具端设置机械臂工具端IO状态状态Aub-i5机械臂工具端IO状态的设置代码如下所示:#设置工具端_1状态(有效)robot.set_tool_io_status(RobotToolIoName.tool_io_1,1)其中,robot是机械臂控制类。该行代码包括的2个参数说明如下:(1)参数1:工具io-
25、1的名称。(2)参数2:1(有效)。为工业增智 为教育赋能8.2 IO状态获取与参数设置8.2.8 获取机械臂工具端获取机械臂工具端IO状态状态Aub-i5机械臂工具端IO状态的获取,其程序块代码如下所示:#设置工具端IO_2为输入robot.set_tool_io_type(RobotToolIoAddr.TOOL_DIGITAL_IO_2,RobotToolDigitalIoDir.IO_IN)#获取工具端IO_2当前状态tool_io_status=robot.get_tool_io_status(RobotToolIoName.tool_io_2)logger.info(Tool_IO
26、_02 Status:)logger.info(tool_io_status)为工业增智 为教育赋能8.2 IO状态获取与参数设置8.2.9 示例程序示例程序Aub-i5机械臂工具端IO状态的设置代码如下所示:def test_IO():#初始化logger logger_init()#启动测试logger.info(0test beginning.format(Auboi5Robot.get_local_time()#系统初始化 Auboi5Robot.initialize()#创建机械臂控制类 robot=Auboi5Robot()#创建上下文 handle=robot.create_co
27、ntext()#打印上下文 logger.info(robot.rshd=0.format(handle)try:为工业增智 为教育赋能8.2 IO状态获取与参数设置8.2.9 示例程序示例程序#链接服务器(IP要根据实际设置)ip=192.168.0.30 port=8899 result=robot.connect(ip,port)if result!=RobotErrorType.RobotError_SUCC:logger.info(connect server0:1 failed.format(ip,port)else:#重新上电 robot.robot_shutdown()#上电
28、robot.robot_startup()#设置碰撞等级 robot.set_collision_class(7)#末端IO#数字量输出#设置工具端电源为24 robot.set_tool_power_type(RobotToolPowerType.OUT_12V)#设置工具端_1为输出 robot.set_tool_io_type(RobotToolIoAddr.TOOL_DIGITAL_IO_1,RobotToolDigitalIoDir.IO_OUT)#设置工具端_1状态 robot.set_tool_io_status(RobotToolIoName.tool_io_1,1)为工业增智
29、 为教育赋能8.2 IO状态获取与参数设置8.2.9 示例程序示例程序#获取工具端电压数值类型(0V 12V 24V)Tool_voltage_type=robot.get_tool_power_type()logger.info(Tool_voltage_type:)logger.info(Tool_voltage_type)#数字量输入#设置工具端电源为12 robot.set_tool_power_type(RobotToolPowerType.OUT_12V)#设置工具端_2为输入 robot.set_tool_io_type(RobotToolIoAddr.TOOL_DIGITAL_
30、IO_2,RobotToolDigitalIoDir.IO_IN)#获取工具端_2当前状态 tool_io_status=robot.get_tool_io_status(RobotToolIoName.tool_io_2)logger.info(Tool_IO_02 Status:)logger.info(tool_io_status)#用户IO#获取控制柜用户DI io_config=robot.get_board_io_config(RobotIOType.User_DI)#输出DI配置 logger.info(io_config)#获取控制柜用户DO io_config=robot.g
31、et_board_io_config(RobotIOType.User_DO)为工业增智 为教育赋能8.2 IO状态获取与参数设置8.2.9 示例程序示例程序#输出DO配置 logger.info(io_config)#数字量输出#设置用户输出IO1状态为1robot.set_board_io_status(RobotIOType.User_DO,RobotUserIoName.user_do_01,1)#数字量输入#获取用户输入IO1状态 io_status=robot.get_board_io_status(RobotIOType.User_DI,RobotUserIoName.user_
32、di_03)logger.info(Digital input:)logger.info(io_status)#断开服务器链接 robot.disconnect()except RobotError,e:logger.error(0 robot Event:1.format(robot.get_local_time(),e)finally:#断开服务器链接 if robot.connected:#关闭机械臂 robot.robot_shutdown()#断开机械臂链接 robot.disconnect()#释放库资源 Auboi5Robot.uninitialize()为工业增智 为教育赋能8
33、.2 IO状态获取与参数设置8.2.9 示例程序示例程序 logger.info(0 test completed.format(Auboi5Robot.get_local_time()#主函数执行程序if _name_=_main_:test_IO()程序运行过程说明如下:程序的开始首先连接服务器,其中机械臂上电,设置碰撞等级,设置工具端数字输出IO-1的输出为高电平,然后获取工具端电源类型,获取工具端数字输入IO-2的状态以及获取控制柜用户IO的输出和输入的配置信息;接着程序设置控制柜输出IO-1的值为1(有效),并获取控制柜用户输入IO-3的状态;最后,程序断开服务器连接。为工业增智 为
34、教育赋能8.3Python SDK IO与MODBUS模块基于Python SDK的MODBUS从机为工业增智 为教育赋能8.3 基于Python SDK的MODBUS从机8.3.1 机械臂机械臂MODBUS功能功能Modbus协议是一种已广泛应用于当今工业控制领域的通用通讯协议。Modbus协议包括RTU、ASCII和TCP三种(常见),AUBO机器人支持Modbus-RTU和Modbus-TCP两种通信协议。Modbus-RTU是基于RS485总线,所以AUBO机器人和外部进行Modbus-RTU通信时需要接RS485线。Modbus-RTU网络中,只能有一个主站,可有多个从站(理论247
35、个从站),AUBO在Modbus-RTU网络中只能作为主站,如图8-1所示。图8-1 Python Modbus-RTU为工业增智 为教育赋能8.3 基于Python SDK的MODBUS从机8.3.1 机械臂机械臂MODBUS功能功能Modbus-TCP是基于以太网,所以AUBO机器人和外部进行Modbus-TCP通信时要连接网线。在Modbus-TCP网络中,AUBO作为客户机存在,可以这样理解,Modbus-TCP的客户机相当于Modbus-RTU的主机,Modbus-TCP的服务器相当于Modbus-RTU的从机,如图8-2所示。图8-2 Python Modbus-TCP为工业增智
36、为教育赋能8.3 基于Python SDK的MODBUS从机8.3.2 开源库开源库Pymodbus使用使用AUBO机械臂内安装有memcache,为了方便外部获取机械臂信息,机械臂的很多信息在更新时会在memcache中存储,可利用memcache为中间件,使用Python程序作为MODBUS的从站,从memcache数据库中读取机械臂机械臂数据,并和外部设备(相机、PLC等)进行通讯。Python从站程序常用于数据交换,例如:示教器支持modbus通信(主站),Python程序做为modbus从站,外部设备作为modbus主站,这样利用中间的从站实现数据交换。构建Python实现MODBU
37、S从机,需要使用开源项目Pymodbus,Pymodbus是使用Twisted异步通信内核实现了完整Modbus协议,由于此库是用Python编写的,所以可以轻松地编写脚本集成到现有的解决方案中。Pymodbus的特性包括:1.客户端功能(1)离散和 register 上的完整读/写协议;(2)大多数扩展协议(diagnostic/file/pipe/setting/information);(3)TCP,UDP,串行 ASCII,串行RTU和串行二进制;为工业增智 为教育赋能8.3 基于Python SDK的MODBUS从机8.3.2 开源库开源库Pymodbus使用使用(4)异步(由 Tw
38、isted 供电)和同步版本;(5)负载生成器/解码器实用程序。2.服务器功能(1)可以作为完全实现的modbus服务器实现(2)TCP,UDP,串行 ASCII,串行RTU和串行二进制(3)异步(由 Twisted 供电)和同步版本(4)完整服务器控制上下文(设备信息,计数器等)(5)许多支持上下文(数据库,redis,从设备)Pymodbus可在网址:https:/ setup.py install”进行安装,安装完成后,如图8-3所示,即可提示“Finished processing dependencies for pymodbus=2.1.0”(2.1.0为版本号)。图8-3 Pym
39、odbus安装为工业增智 为教育赋能8.3 基于Python SDK的MODBUS从机8.3.2 开源库开源库Pymodbus使用使用Pymodbus库的使用方法可参考如下代码:Pymodbus库的使用方法可参考如下代码:from pymodbus.client.sync import ModbusTcpClient#引用pymodbus的TCP客户机模块client=ModbusTcpClient(127.0.0.1)client.write_coil(1,True)result=client.read_coils(1,1)print(result.bits0)client.close()为
40、工业增智 为教育赋能8.3 基于Python SDK的MODBUS从机8.3.3 机械臂机械臂MODBUS-TCP从机示例代码从机示例代码以下代码为使用Pymodbus库实现MODBUS-TCP从机,程序启动后会自动连接memcache和机械臂Python SDK接口,并且启动TCP从机模式,监听本机的520端口,其它MODBUS-TCP主机可进行连接。def run_server():time.sleep(10)#链接memcached服务端 host=192.168.136.139 port=11211 server=str(host)+:+str(port)memcache_client
41、=memcache.Client(server)#保证Memcached连接成功,否则弹出异常 if not memcache_client.get_stats():raise socket.error(Connected Memcached failed,ip:0,port:1.format(host,port)#连接机械臂 host=192.168.136.139 port=8899#系统初始化 Auboi5Robot.initialize()#创建机械臂控制类 robot =Auboi5Robot()#创建上下文为工业增智 为教育赋能8.3 基于Python SDK的MODBUS从机8.
42、3.3 机械臂机械臂MODBUS-TCP从机示例代码从机示例代码 handle=robot.create_context()#链接robot服务器 result=robot.connect(host,port)store=MemcachedSlaveContext(robot_client=robot,memcached_client=memcache_client)context=ModbusServerContext(slaves=store,single=True)#-#initialize the server information#-#If you dont set this or
43、 any fields,they are defaulted to empty strings.#-#identity=ModbusDeviceIdentification()identity.VendorName=Pymodbus identity.ProductCode=PM identity.VendorUrl=http:/ Server identity.ModelName=Pymodbus Server identity.MajorMinorRevision=1.5#-#run the server you want#-#Tcp:StartTcpServer(context,iden
44、tity=identity,address=(0.0.0.0,502)if _name_=_main_:run_server()为工业增智 为教育赋能8.3 基于Python SDK的MODBUS从机8.3.4 机械臂机械臂MODBUS-RTU从机示例代码从机示例代码机械臂MODBUS-RTU从机的实现和MODBUS-TCP从机的实现基本相同,不同的是程序启动后,会以从机的形式监听串口“COM1”(根据硬件设备的串口名称),波特率为115200,代码如下所示。def run_server():time.sleep(10)#链接memcached服务端 host=192.168.136.139
45、port=11211 server=str(host)+:+str(port)memcache_client=memcache.Client(server)#保证Memcached连接成功,否则弹出异常 if not memcache_client.get_stats():raise socket.error(Connected Memcached failed,ip:0,port:1.format(host,port)#连接机械臂 host=192.168.136.139 port=8899#系统初始化 Auboi5Robot.initialize()#创建机械臂控制类 robot =Aub
46、oi5Robot()#创建上下文 handle=robot.create_context()为工业增智 为教育赋能8.3 基于Python SDK的MODBUS从机8.3.4 机械臂机械臂MODBUS-RTU从机示例代码从机示例代码#链接robot服务器 result=robot.connect(host,port)store=MemcachedSlaveContext(robot_client=robot,memcached_client=memcache_client)context=ModbusServerContext(slaves=store,single=True)#-#initi
47、alize the server information#-#If you dont set this or any fields,they are defaulted to empty strings.#-#identity=ModbusDeviceIdentification()identity.VendorName=Pymodbus identity.ProductCode=PM identity.VendorUrl=http:/ Server identity.ModelName=Pymodbus Server identity.MajorMinorRevision=1.5#-#run
48、 the server you want#-#RTU:timeout=.005 StartSerialServer(context,framer=ModbusRtuFramer,identity=identity,port=COM1,timeout=.05,baudrate=115200)if _name_=_main_:run_server()为工业增智 为教育赋能8.4 思考与练习8.1填空题(1)工具端电源类型有_,_,_。(2)工具端IO名称有_,_,_。(3)用户IO类型有_,_,_。(4)用户IO的数量有_。8.2简答题(1)简述设置工具端IO1数字输出为有效时的步骤。(2)简述设置用户IO1输出为有效时的步骤。为工业增智 为教育赋能8.4 思考与练习8.3选择题(1)获取到的用户IO配置信息不包括()A.地址B.类型C.idD.信号(2)以下用户数字输出IO不存在()A.user_do_1B.user_do_8C.user_do_16D.user_do_17为工业增智 为教育赋能8.4 思考与练习(3)以下哪个不属于用户IO类型()A.User_DI B.User_DOC.User_AID.User_AO8.4实验题(1)通过使用Python SDK来控制用户输出IO-1,工具端输出IO-1以1HZ的频率循环切换状态。